Salome HOME
f83b77c48ef9d75c912d8b8945b6265e6caee91f
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_MeshDlg.h
1 // Copyright (C) 2005  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
2 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
3 // 
4 // This library is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU Lesser General Public
6 // License as published by the Free Software Foundation; either 
7 // version 2.1 of the License.
8 // 
9 // This library is distributed in the hope that it will be useful 
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
12 // Lesser General Public License for more details.
13 //
14 // You should have received a copy of the GNU Lesser General Public  
15 // License along with this library; if not, write to the Free Software 
16 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
17 //
18 // See http://www.salome-platform.org/
19 //
20 /**
21 *  SMESH SMESHGUI
22 *
23 *  Copyright (C) 2005  CEA/DEN, EDF R&D
24 *
25 *
26 *
27 *  File   : SMESHGUI_MeshDlg.h
28 *  Author : Sergey LITONIN
29 *  Module : SMESH
30 */
31
32
33 #ifndef SMESHGUI_MeshDlg_H
34 #define SMESHGUI_MeshDlg_H
35
36 #include "SMESHGUI_Dialog.h"
37 #include <qframe.h>
38 #include <qstringlist.h>
39 #include <qmap.h>
40
41 class SMESHGUI_MeshTab;
42 class QTabWidget;
43 class QLineEdit;
44 class QComboBox;
45 class QToolButton;
46 class QString;
47 class QPopupMenu;
48
49 /*!
50  * \brief Dialog for mech creation or editing
51  *
52  *  This dialog is used for mech creation or editing. 
53 */
54 class SMESHGUI_MeshDlg : public SMESHGUI_Dialog
55
56   Q_OBJECT       
57       
58 public:
59   
60   enum Controls { Obj, Mesh, Geom };
61   
62   /*! Describes dimensions */
63   enum Dimensions { Dim1D = 0, Dim2D, Dim3D };      
64   
65 public:
66   SMESHGUI_MeshDlg( const bool theToCreate, const bool theIsMesh );
67   virtual ~SMESHGUI_MeshDlg();
68   
69   SMESHGUI_MeshTab*            tab( const int ) const;
70   void                         reset();
71   void                         setCurrentTab( const int );
72   void                         setMaxHypoDim( const int );
73   void                         setHypoSets( const QStringList& );
74
75 signals:
76
77   void                         hypoSet( const QString& );
78
79 private slots:  
80
81   void                         onHypoSetPopup( int );
82   void                         onHypoSetButton();
83
84 private:
85
86   QMap< int, SMESHGUI_MeshTab* > myTabs;
87   QTabWidget*                    myTabWg;
88   QPopupMenu*                    myHypoSetPopup;
89 };
90
91 /*!
92  * \brief Tab for tab widget containing controls for definition of 
93  * algorithms and hypotheses
94 */ 
95
96 class SMESHGUI_MeshTab : public QFrame
97 {
98   Q_OBJECT
99       
100 public:      
101   /*! To differ main algorithms, hypotheses and additional ones*/
102   enum HypType
103   { 
104     Algo = 0, //!< algorithms
105     MainHyp,  //!< main hypothesis
106     AddHyp    //!< additional hypothesis
107   };            
108       
109 public:      
110   SMESHGUI_MeshTab( QWidget* );
111   virtual ~SMESHGUI_MeshTab();
112   
113   void                         setAvailableHyps( const int, const QStringList& );
114   void                         setExistingHyps( const int, const QStringList& );
115   void                         addHyp( const int, const QString& );
116   void                         renameHyp( const int, const int, const QString& );
117   void                         setCurrentHyp( const int, const int );
118   int                          currentHyp( const int ) const;
119   void                         reset();
120
121 signals:  
122
123   void                         createHyp( const int theHypType, const int theIndex );
124   //!< Emited when "Create hypothesis" button clicked
125   void                         editHyp( const int theHypType, const int theIndex );
126   //!< Emited when "Edit hypothesis" button clicked
127   
128 private slots:  
129
130   void                         onCreateHyp();  
131   void                         onEditHyp();
132   void                         onHyp( int );
133   void                         onPopupItem( int );
134   
135 private:  
136   
137   QMap< int, QComboBox* >      myHyp;
138   QMap< int, QToolButton* >    myCreateHyp;
139   QMap< int, QToolButton* >    myEditHyp;
140   
141   QMap< int, QStringList >     myAvailableHyps;
142   QMap< int, QStringList >     myExistingHyps;
143   
144   QPopupMenu*                  myPopup;
145 };
146
147 #endif
148
149
150
151