Salome HOME
[bos #40653][CEA] New mesh import export formats with meshio.
[modules/smesh.git] / src / StdMeshersGUI / StdMeshersGUI_ObjectReferenceParamWdg.h
index 62e5096af2c7795bd899266db1d04a175191ee27..192ad51d350b0960f0f7e46a26adb27276a33dcb 100644 (file)
@@ -1,24 +1,25 @@
-//  Copyright (C) 2007-2008  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2024  CEA, EDF, OPEN CASCADE
 //
-//  Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
-//  CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+// 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.
+// 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.
+// 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
+// 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
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
 // File   : StdMeshersGUI_ObjectReferenceParamWdg.h
 // Author : Open CASCADE S.A.S.
 //
 #include <QWidget>
 
 // CORBA includes
-#include <CORBA.h>
+#include <omniORB4/CORBA.h>
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SMESH_Mesh)
 
 class SUIT_SelectionFilter;
 class SMESHGUI;
@@ -49,63 +53,90 @@ class STDMESHERSGUI_EXPORT StdMeshersGUI_ObjectReferenceParamWdg : public QWidge
 {
   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 slots:
+  void onSelectionDone();
 
-private:
+ private:
   void init();
-  
-private:
- CORBA::Object_var      myObject;
- SUIT_SelectionFilter*  myFilter;
- bool                   mySelectionActivated;
-
- SMESHGUI*              mySMESHGUI;
- LightApp_SelectionMgr* mySelectionMgr;
-
- QLineEdit*             myObjNameLineEdit;
- QPushButton*           mySelButton;
- QString                myParamValue;
+
+ 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