Salome HOME
Update of CheckDone
[modules/smesh.git] / src / StdMeshersGUI / StdMeshersGUI_ObjectReferenceParamWdg.h
index e2b892f7931ea9b433aa02407c79857fc9282bea..192ad51d350b0960f0f7e46a26adb27276a33dcb 100644 (file)
@@ -1,39 +1,44 @@
-//  SMESH StdMeshersGUI
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
-//  Copyright (C) 2003  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS 
-// 
-//  This library is free software; you can redistribute it and/or 
-//  modify it under the terms of the GNU Lesser General Public 
-//  License as published by the Free Software Foundation; either 
-//  version 2.1 of the License. 
-// 
-//  This library is distributed in the hope that it will be useful, 
-//  but WITHOUT ANY WARRANTY; without even the implied warranty of 
-//  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
-//  Lesser General Public License for more details. 
-// 
-//  You should have received a copy of the GNU Lesser General Public 
-//  License along with this library; if not, write to the Free Software 
-//  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
-// 
-// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
 //
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
 //
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
-//  File   : StdMeshersGUI_ObjectReferenceParamWdg.h
-//  Module : SMESH
-//  $Header$
 
-#ifndef StdMeshersGUI_ObjectReferenceParamWdg_Header
-#define StdMeshersGUI_ObjectReferenceParamWdg_Header
+// File   : StdMeshersGUI_ObjectReferenceParamWdg.h
+// Author : Open CASCADE S.A.S.
+//
+#ifndef STDMESHERSGUI_OBJECTREFERENCEPARAMWDG_H
+#define STDMESHERSGUI_OBJECTREFERENCEPARAMWDG_H
 
+// SMESH includes
 #include "SMESH_StdMeshersGUI.hxx"
 
-#include "SMESH_Type.h"
-#include "qhgroupbox.h"
+#include <SMESH_Type.h>
 
-#include <CORBA.h>
+// Qt includes
+#include <QWidget>
+
+// CORBA includes
+#include <omniORB4/CORBA.h>
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
 
 class SUIT_SelectionFilter;
 class SMESHGUI;
@@ -44,68 +49,94 @@ class QPushButton;
 /*!
  *  \brief Widget controlling hypothesis parameter that is an object reference
  */
-class STDMESHERSGUI_EXPORT StdMeshersGUI_ObjectReferenceParamWdg : public QHGroupBox
+class STDMESHERSGUI_EXPORT StdMeshersGUI_ObjectReferenceParamWdg : public QWidget
 {
   Q_OBJECT
 
-public:
-  StdMeshersGUI_ObjectReferenceParamWdg( SUIT_SelectionFilter* filter, 
-                                         QWidget*              parent);
-  StdMeshersGUI_ObjectReferenceParamWdg( MeshObjectType objType,
-                                         QWidget*       parent);
+ public:
+  StdMeshersGUI_ObjectReferenceParamWdg( SUIT_SelectionFilter* filter,
+                                         QWidget*              parent,
+                                         bool                  multiSelection=false
+                                         /* ,bool                  stretch=true*/);
+  StdMeshersGUI_ObjectReferenceParamWdg( SMESH::MeshObjectType objType,
+                                         QWidget*       parent,
+                                         bool           multiSelection=false);
   ~StdMeshersGUI_ObjectReferenceParamWdg();
 
   void SetObject(CORBA::Object_ptr obj);
 
-  template<class TInterface> 
-    typename TInterface::_var_type GetObject() const {
-    if ( IsObjectSelected() ) return TInterface::_narrow(myObject);
+  void SetObjects(SMESH::string_array_var& objEntries);
+
+  template<class TInterface>
+    typename TInterface::_var_type GetObject(size_t i=0) const {
+    if ( IsObjectSelected(i) ) return TInterface::_narrow(myObjects[i]);
     return TInterface::_nil();
   }
 
+  size_t NbObjects() const { return myObjects.size(); }
+
+  // Return object entries
   QString GetValue() const { return myParamValue; }
 
-  bool IsObjectSelected() const { return !CORBA::is_nil(myObject); }
+  bool IsObjectSelected(size_t i=0) const
+  { return i < myObjects.size() && !CORBA::is_nil(myObjects[i]); }
+
+  /*!
+   * \brief Get the selection status
+   *
+   * Useful to know which Object Reference param widget is activated
+   * to be able to activate the next one when the content of this
+   * one has been modified
+   */
+  bool IsSelectionActivated() const { return mySelectionActivated; }
 
   void AvoidSimultaneousSelection( StdMeshersGUI_ObjectReferenceParamWdg* other);
 
-public slots:
+  void SetDefaultText(QString defaultText="", QString styleSheet="");
+
+ public slots:
   /*!
    * \brief Activates selection (if not yet done), emits selectionActivated()
-    *
-    * Useful to deactivate one Object Reference param widget when an other
-    * one is activated
+   *
+   * Useful to deactivate one Object Reference param widget when an other
+   * one is activated
    */
   void activateSelection();
   void deactivateSelection();
 
-signals:
+ signals:
   /*!
    * \brief Emitted when selection is activated
-    *
-    * Useful to deactivate one Object Reference param widget when an other
-    * one is activated
+   *
+   * Useful to deactivate one Object Reference param widget when an other
+   * one is activated
    */
   void selectionActivated();
-  
-private slots:
-  void onSelectionDone(); 
+  void contentModified();
 
-private:
+ private slots:
+  void onSelectionDone();
+
+ private:
   void init();
-  
-private:
- CORBA::Object_var      myObject;
- SUIT_SelectionFilter*  myFilter;
- bool                   mySelectionActivated;
-
- SMESHGUI*              mySMESHGUI;
- LightApp_SelectionMgr* mySelectionMgr;
-
- QLineEdit*             myObjNameLineEdit;
- QPushButton*           mySelButton;
- QString                myParamValue;
-};
 
-#endif
+ private:
+
+  bool                                myMultiSelection;
+  std::vector<CORBA::Object_var>      myObjects;
+
+  SUIT_SelectionFilter*  myFilter;
+  bool                   mySelectionActivated;
+  bool                   myStretchActivated;
+
+  SMESHGUI*              mySMESHGUI;
+  LightApp_SelectionMgr* mySelectionMgr;
+
+  QLineEdit*             myObjNameLineEdit;
+  QPushButton*           mySelButton;
+  QString                myParamValue;
+  QString                myEmptyText;
+  QString                myEmptyStyleSheet;
+};
 
+#endif // STDMESHERSGUI_OBJECTREFERENCEPARAMWDG_H