Salome HOME
Update of CheckDone
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_MeshDlg.h
index e8ea69f002076392a0599b6994ffab9bb28c3bfb..4c91302bf9fd1ebdd50b843f154eae559d691d50 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2013  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
@@ -6,7 +6,7 @@
 // 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.
+// 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
 #include <QStringList>
 #include <QMap>
 
-class SMESHGUI_MeshTab;
-class QTabWidget;
+class QAction;
+class QCheckBox;
 class QComboBox;
-class QToolButton;
+class QListWidget;
 class QMenu;
-class QAction;
+class QTabWidget;
+class QToolButton;
+class QtxToolButton;
+class SMESHGUI_MeshTab;
 
 /*!
  * \brief Dialog for mech creation or editing
@@ -64,19 +67,26 @@ public:
   SMESHGUI_MeshDlg( const bool, const bool );
   virtual ~SMESHGUI_MeshDlg();
   
-  SMESHGUI_MeshTab*            tab( const int ) const;
   void                         reset();
-  void                         setCurrentTab( const int );
-  void                         setMaxHypoDim( const int );
+  void                         setTitile( const bool, const bool );
   void                         setHypoSets( const QStringList& );
   void                         setGeomPopupEnabled( const bool );
-  void                         disableTab(const int);
+  int                          getActiveObject();
+
+  SMESHGUI_MeshTab*            tab( const int ) const;
   void                         enableTab(const int);
+  void                         disableTab(const int);
   bool                         isTabEnabled(const int) const;
-  int                          getActiveObject();
+  void                         setCurrentTab( const int );
+  int                          currentTab() const;
+  void                         setMaxHypoDim( const int );
+
   void                         setAvailableMeshType(const QStringList& );
+  void                         setCurrentMeshType( const int );
   int                          currentMeshType();
 
+  bool                         toCreateAllGroups();
+
 signals:
   void                         hypoSet( const QString& );
   void                         geomSelectionByMesh( bool );
@@ -88,32 +98,36 @@ private slots:
   void                         onGeomSelectionButton( bool );
   void                         onChangedMeshType( const int );
 
-private:
+ private:
   QMap<int, SMESHGUI_MeshTab*> myTabs;
   QTabWidget*                  myTabWg;
   QToolButton*                 myHypoSetButton;
   QMenu*                       myGeomPopup;
   QComboBox*                   myMeshType;
+  QCheckBox*                   myCreateGroupsCheck;
 };
 
 /*!
- * \brief Tab for tab widget containing controls for definition of 
+ * \brief Tab for tab widget containing controls for definition of
  * algorithms and hypotheses
-*/ 
+ */
 
 class SMESHGUI_EXPORT SMESHGUI_MeshTab : public QFrame
 {
   Q_OBJECT
-      
-public:      
+
+    public:
   /*! To differ main algorithms, hypotheses and additional ones*/
   enum HypType
-  { 
+  {
     Algo = 0, //!< algorithms
     MainHyp,  //!< main hypothesis
-    AddHyp    //!< additional hypothesis
-  };            
-      
+    AddHyp,    //!< additional hypothesis
+    MoreAddHyp //! since several additional hypothesis are possible, the 2-nd, 3-d etc
+    // additional hypotheses are coded as being of HypType (AddHyp + 1), (AddHyp + 2) etc.
+    // Nb of HypType's after MainHyp is returned by SMESHGUI_MeshTab::nbAddHypTypes()
+  };
+
 public:      
   SMESHGUI_MeshTab( QWidget* );
   virtual ~SMESHGUI_MeshTab();
@@ -121,31 +135,41 @@ public:
   void                         setAvailableHyps( const int, const QStringList& );
   void                         setExistingHyps( const int, const QStringList&, bool=false);
   void                         addHyp( const int, const QString& );
-  void                         renameHyp( const int, const int, const QString& );
+  //void                         renameHyp( const int, const int, const QString& );
   void                         setCurrentHyp( const int, const int );
   int                          currentHyp( const int ) const;
+  int                          nbAddHypTypes() const;
   void                         reset();
 
 signals:  
   void                         createHyp( const int, const int );
-  //!< Emited when "Create hypothesis" button clicked
+  //!< Emitted when "Create hypothesis" button clicked
   void                         editHyp( const int, const int );
-  //!< Emited when "Edit hypothesis" button clicked
+  //!< Emitted when "Edit hypothesis" button clicked
   void                         selectAlgo( const int );
-  //!< Emited when an algorithm is selected
+  //!< Emitted when an algorithm is selected
   
 private slots:  
   void                         onCreateHyp();  
   void                         onEditHyp();
   void                         onHyp( int );
-  
-private:  
-  QMap<int, QComboBox*>        myHyp;
-  QMap<int, QToolButton*>      myCreateHyp;
-  QMap<int, QToolButton*>      myEditHyp;
-  
-  QMap<int, QStringList>       myAvailableHyps;
-  QMap<int, QStringList>       myExistingHyps;
+  void                         onMoreAddHyp();
+  void                         onLessAddHyp();
+
+private:
+
+  void                         addItem( const QString& txt, const int type, const int index, const bool isGroup=false );
+  int                          getCurrentIndex( const int type, const bool curByType=false) const;
+
+  QMap<int, QStringList>       myAvailableHypTypes;
+
+  QMap<int, QtxToolButton*>    myHypCombo;
+  QMap<int, QToolButton*>      myCreateHypBtn;
+  QMap<int, QToolButton*>      myEditHypBtn;
+
+  QToolButton*                 myMoreAddHypBtn;
+  QToolButton*                 myLessAddHypBtn;
+  QListWidget*                 myAddHypList; // 2-nd, etc. additional hyps
 };
 
 #endif // SMESHGUI_MESHDLG_H