Salome HOME
Fix for PAL10496.
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_MultiEditDlg.h
1 //  Copyright (C) 2003  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/ or email : webmaster.salome@opencascade.com
19 //
20 //
21 //
22 //  File   : SMESHGUI_MultiEditDlg.h
23 //  Author : Sergey LITONIN
24 //  Module : SMESH
25
26
27 #ifndef SMESHGUI_MultiEditDlg_H
28 #define SMESHGUI_MultiEditDlg_H
29
30 #include <qdialog.h>
31
32 #include "SUIT_SelectionFilter.h"
33
34 #include <TColStd_MapOfInteger.hxx>
35
36 #include <SALOMEconfig.h>
37 #include CORBA_SERVER_HEADER(SMESH_Mesh)
38 #include CORBA_SERVER_HEADER(SMESH_Filter)
39
40 class SMESHGUI;
41 class SMESHGUI_FilterDlg;
42 class SMESHGUI_SpinBox;
43
44 class SMESH_Actor;
45
46 class LightApp_SelectionMgr;
47 class SALOME_Actor;
48 class SVTK_Selector;
49 class SVTK_ViewWindow;
50
51 class QFrame;
52 class QObject;
53 class QListBox;
54 class QComboBox;
55 class QCheckBox;
56 class QGroupBox;
57 class QLineEdit;
58 class QPushButton;
59 class QButtonGroup;
60
61 /*!
62  * Class       : SMESHGUI_MultiEditDlg
63  * Description : Base class for dialogs of diagonal inversion and
64  *               union of two neighboring triangles
65  */
66
67 class SMESHGUI_MultiEditDlg : public QDialog
68 {
69   Q_OBJECT
70
71 public:
72                             SMESHGUI_MultiEditDlg(SMESHGUI* theModule,
73                                                   const int,
74                                                   const bool = false,
75                                                   const char* = 0 );
76   virtual                   ~SMESHGUI_MultiEditDlg();
77
78   void                      Init();
79
80   bool                      eventFilter( QObject* object, QEvent* event );
81
82 signals:
83   void                      ListContensChanged();
84
85 protected slots:
86   void                      onOk();
87   virtual bool              onApply();
88   virtual void              onClose();
89   void                      onHelp();
90
91   void                      onDeactivate();
92   void                      onSelectionDone();
93
94   void                      onFilterBtn();
95   void                      onAddBtn();
96   void                      onRemoveBtn();
97   void                      onSortListBtn();
98   void                      onListSelectionChanged();
99   void                      onSubmeshChk();
100   void                      onGroupChk();
101   virtual void              onToAllChk();
102   void                      onFilterAccepted();
103   void                      on3d2dChanged(int);
104
105   SMESH::NumericalFunctor_ptr getNumericalFunctor();
106
107 protected:
108   void                      closeEvent( QCloseEvent* e ) ;
109   void                      enterEvent ( QEvent * ) ;
110   void                      hideEvent ( QHideEvent * );                        /* ESC key */
111   void                      keyPressEvent( QKeyEvent* );
112   QFrame*                   createButtonFrame( QWidget* );
113   QFrame*                   createMainFrame  ( QWidget*, const bool );
114   bool                      isValid( const bool ) const;
115   SMESH::long_array_var     getIds();
116   void                      updateButtons();
117   void                      setSelectionMode();
118   virtual bool              isIdValid( const int theID ) const;
119   virtual bool              process( SMESH::SMESH_MeshEditor_ptr, const SMESH::long_array& ) = 0;
120   int                       entityType();
121
122 protected:
123   QPushButton*              myOkBtn;
124   QPushButton*              myApplyBtn;
125   QPushButton*              myCloseBtn;
126   QPushButton*              myHelpBtn;
127   SMESH_Actor*              myActor;
128   SMESH::SMESH_Mesh_var     myMesh;
129
130   LightApp_SelectionMgr*    mySelectionMgr;
131   SVTK_Selector*            mySelector;
132   SMESHGUI*                 mySMESHGUI;
133
134   QGroupBox*                mySelGrp;
135   QGroupBox*                myCriterionGrp;
136
137   QButtonGroup*             myGroupChoice;
138   QComboBox*                myComboBoxFunctor;
139
140   QListBox*                 myListBox;
141   QPushButton*              myFilterBtn;
142   QPushButton*              myAddBtn;
143   QPushButton*              myRemoveBtn;
144   QPushButton*              mySortBtn;
145
146   QCheckBox*                myToAllChk;
147   QButtonGroup*             myEntityTypeGrp;
148
149   QCheckBox*                mySubmeshChk;
150   QPushButton*              mySubmeshBtn;
151   QLineEdit*                mySubmesh;
152
153   QCheckBox*                myGroupChk;
154   QPushButton*              myGroupBtn;
155   QLineEdit*                myGroup;
156
157   SMESHGUI_FilterDlg*       myFilterDlg;
158   TColStd_MapOfInteger      myIds;
159   int                       myFilterType;
160   bool                      myBusy;
161   int                       myEntityType;
162
163   QString                   myHelpFileName;
164 };
165
166 /*!
167  * Class       : SMESHGUI_ChangeOrientationDlg
168  * Description : Modification of orientation of faces
169  */
170 class  SMESHGUI_ChangeOrientationDlg : public SMESHGUI_MultiEditDlg
171 {
172   Q_OBJECT
173
174 public:
175                SMESHGUI_ChangeOrientationDlg(SMESHGUI* theModule,
176                                              const char* = 0);
177   virtual      ~SMESHGUI_ChangeOrientationDlg();
178
179 protected:
180   virtual bool process( SMESH::SMESH_MeshEditor_ptr, const SMESH::long_array& );
181 };
182
183 /*!
184  * Class       : SMESHGUI_UnionOfTrianglesDlg
185  * Description : Construction of quadrangles by automatic association of triangles
186  */
187 class  SMESHGUI_UnionOfTrianglesDlg : public SMESHGUI_MultiEditDlg
188 {
189   Q_OBJECT
190
191 public:
192                SMESHGUI_UnionOfTrianglesDlg(SMESHGUI* theModule,
193                                             const char* = 0);
194   virtual      ~SMESHGUI_UnionOfTrianglesDlg();
195
196 protected:
197   virtual bool process( SMESH::SMESH_MeshEditor_ptr, const SMESH::long_array& );
198
199 private:
200   SMESHGUI_SpinBox* myMaxAngleSpin;
201 };
202
203 /*
204   Class       : SMESHGUI_CuttingOfQuadsDlg
205   Description : Construction of quadrangles by automatic association of triangles
206 */
207 class  SMESHGUI_CuttingOfQuadsDlg : public SMESHGUI_MultiEditDlg
208 {
209   Q_OBJECT
210
211 public:
212                 SMESHGUI_CuttingOfQuadsDlg(SMESHGUI* theModule,
213                                            const char* = 0);
214   virtual       ~SMESHGUI_CuttingOfQuadsDlg();
215
216 protected:
217   virtual bool  process( SMESH::SMESH_MeshEditor_ptr, const SMESH::long_array& );
218
219 protected slots:
220   virtual void  onClose();
221   void          onCriterionRB();
222   void          onPreviewChk();
223
224 private:
225   void          displayPreview();
226   void          erasePreview();
227
228 private:
229   SALOME_Actor* myPreviewActor;
230   QCheckBox*    myPreviewChk;
231 };
232
233 #endif