Salome HOME
Implement bos #26453: [EDF] (2021) SMESH: uniform refinement
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_HomardAdaptDlg.h
1 // Copyright (C) 2011-2021  CEA/DEN, EDF R&D
2 //
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either
6 // version 2.1 of the License, or (at your option) any later version.
7 //
8 // This library is distributed in the hope that it will be useful,
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public
14 // License along with this library; if not, write to the Free Software
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
18 //
19
20 #ifndef SMESHGUI_HOMARDADAPTDLG_HXX
21 #define SMESHGUI_HOMARDADAPTDLG_HXX
22
23 #include "SMESH_SMESHGUI.hxx"
24
25 #include <SALOMEconfig.h>
26 #include CORBA_CLIENT_HEADER(SMESH_Homard)
27 #include CORBA_SERVER_HEADER(SMESH_Mesh)
28 #include <SALOME_GenericObj_wrap.hxx>
29
30 #include <SalomeApp_Module.h>
31
32 #include <QtCore/QVariant>
33 #include <QtWidgets/QApplication>
34 #include <QtWidgets/QCheckBox>
35 #include <QtWidgets/QComboBox>
36 #include <QtWidgets/QDialog>
37 #include <QtWidgets/QFormLayout>
38 #include <QtWidgets/QGridLayout>
39 #include <QtWidgets/QGroupBox>
40 #include <QtWidgets/QHBoxLayout>
41 #include <QtWidgets/QHeaderView>
42 #include <QtWidgets/QLabel>
43 #include <QtWidgets/QLineEdit>
44 #include <QtWidgets/QPushButton>
45 #include <QtWidgets/QRadioButton>
46 #include <QtWidgets/QSpacerItem>
47 #include <QtWidgets/QTableWidget>
48 #include <QtWidgets/QWidget>
49 #include <QtWidgets/QTabWidget>
50 #include <QtWidgets/QSpinBox>
51
52 class SMESHGUI_HomardAdaptArguments;
53 class SMESHGUI_HomardAdaptAdvanced;
54
55 //=================================================================================
56 // class    : SMESHGUI_HomardAdaptDlg
57 // purpose  :
58 //=================================================================================
59 class SMESHGUI_EXPORT SMESHGUI_HomardAdaptDlg : public QDialog
60 {
61   Q_OBJECT
62
63  public:
64   SMESHGUI_HomardAdaptDlg(SMESHHOMARD::HOMARD_Gen_ptr theHomardGen);
65   ~SMESHGUI_HomardAdaptDlg();
66
67   void setMyMesh(SMESH::SMESH_Mesh_var);
68   SMESH::SMESH_Mesh_var getMyMesh();
69
70   void AddBoundaryCAO(QString newBoundary);
71   void AddBoundaryAn(QString newBoundary);
72   void AddBoundaryDi(QString newBoundary);
73
74  protected:
75   QString myWorkingDir;
76
77   SMESHHOMARD::HOMARD_Cas_var myCase;
78   SMESHHOMARD::HOMARD_Hypothesis_var myHypothesis;
79   SMESHHOMARD::HOMARD_Iteration_var myIteration;
80   SALOME::GenericObj_wrap< SMESHHOMARD::HOMARD_Gen > myHomardGen;
81
82   virtual void InitConnect();
83   virtual void InitBoundarys();
84
85  public slots:
86   virtual void SetFileName();
87
88   virtual void SetBoundaryNo();
89   virtual void SetBoundaryCAO();
90   virtual void SetBoundaryNonCAO();
91
92   virtual void PushBoundaryCAONew();
93   virtual void PushBoundaryCAOEdit();
94   virtual void PushBoundaryCAOHelp();
95
96   virtual void SetBoundaryD();
97   virtual void PushBoundaryDiNew();
98   virtual void PushBoundaryDiEdit();
99   virtual void PushBoundaryDiHelp();
100
101   virtual void SetBoundaryA();
102   virtual void PushBoundaryAnNew();
103   virtual void PushBoundaryAnEdit();
104   virtual void PushBoundaryAnHelp();
105
106   bool CheckCase();
107
108   virtual void PushOnOK();
109   virtual bool PushOnApply();
110   virtual void PushOnHelp();
111
112   void selectionChanged();
113   void updateSelection();
114
115  private:
116   SMESHGUI_HomardAdaptArguments* myArgs;
117   SMESHGUI_HomardAdaptAdvanced* myAdvOpt;
118
119   SMESH::SMESH_Mesh_var myMesh;
120
121   QPushButton *buttonHelp;
122   QPushButton *buttonApply;
123   QPushButton *buttonOk;
124   QPushButton *buttonCancel;
125 };
126
127 //=================================================================================
128 // class    : SMESHGUI_HomardAdaptArguments
129 // purpose  :
130 //=================================================================================
131 class SMESHGUI_HomardAdaptArguments : public QWidget
132 {
133   Q_OBJECT
134
135 public:
136   enum ModeIn { MedFile, Browser };
137
138   SMESHGUI_HomardAdaptArguments (QWidget* parent);
139   ~SMESHGUI_HomardAdaptArguments();
140
141   void setupUi(QWidget *CreateCase);
142
143 public:
144   // Mesh In
145   QButtonGroup* myInMeshGroup;
146   QRadioButton* myInMedFileRadio;
147   QRadioButton* myInBrowserRadio;
148
149   QPushButton*  mySelectInMedFileButton;
150   QLineEdit*    mySelectInMedFileLineEdit; // LEFileName
151
152   QLineEdit*    myInBrowserObject;
153
154   // Mesh Out
155   QLineEdit*    myOutMeshNameLineEdit;
156   QCheckBox*    myOutMedFileChk;
157
158   QPushButton*  mySelectOutMedFileButton;
159   QLineEdit*    mySelectOutMedFileLineEdit;
160
161   QCheckBox*    myOutPublishChk;
162
163   // Conformity type
164   QRadioButton *RBConforme;
165   QRadioButton *RBNonConforme;
166
167   // Boundary type
168   QGroupBox *GBTypeBoun;
169   QRadioButton *RBBoundaryNo;
170   QRadioButton *RBBoundaryCAO;
171   QRadioButton *RBBoundaryNonCAO;
172   QHBoxLayout *hboxLayout3;
173   QCheckBox *CBBoundaryD;
174   QCheckBox *CBBoundaryA;
175
176   QGroupBox *GBBoundaryC; // CAO boundary
177   QGridLayout *_2;
178   QPushButton *PBBoundaryCAOEdit;
179   QPushButton *PBBoundaryCAOHelp;
180   QComboBox *CBBoundaryCAO;
181   QPushButton *PBBoundaryCAONew;
182   QGroupBox *GBBoundaryN; // Non CAO boundary
183   QGroupBox *GBBoundaryD;
184   QGridLayout *gridLayout;
185   QComboBox *CBBoundaryDi;
186   QPushButton *PBBoundaryDiEdit;
187   QPushButton *PBBoundaryDiHelp;
188   QPushButton *PBBoundaryDiNew;
189   QGroupBox *GBBoundaryA;
190   QFormLayout *formLayout;
191   QTableWidget *TWBoundary;
192   QGridLayout *gridLayout1;
193   QPushButton *PBBoundaryAnEdit;
194   QPushButton *PBBoundaryAnNew;
195   QPushButton *PBBoundaryAnHelp;
196
197 signals:
198   void updateSelection();
199
200 private slots:
201   void modeInChanged(int);
202   void clear();
203   void onOutMedFileChk(int);
204   void onOutPublishChk(int);
205   void onSelectOutMedFileButton();
206 };
207
208 //=================================================================================
209 // class    : SMESHGUI_HomardAdaptAdvanced
210 // purpose  :
211 //=================================================================================
212 class SMESHGUI_HomardAdaptAdvanced : public QWidget
213 {
214   Q_OBJECT
215
216 public:
217   SMESHGUI_HomardAdaptAdvanced(QWidget* = 0, Qt::WindowFlags = 0);
218   ~SMESHGUI_HomardAdaptAdvanced();
219
220   void setupWidget();
221
222 public:
223   QGroupBox   *logGroupBox;
224
225   QLabel      *workingDirectoryLabel;
226   QLineEdit   *workingDirectoryLineEdit;
227   QPushButton *workingDirectoryPushButton;
228
229   QLabel      *verboseLevelLabel;
230   QSpinBox    *verboseLevelSpin;
231
232   QCheckBox   *logInFileCheck;
233   QCheckBox   *removeLogOnSuccessCheck;
234
235   QCheckBox   *keepWorkingFilesCheck;
236
237 private slots:
238   void onWorkingDirectoryPushButton();
239 };
240
241 #endif // SMESHGUI_HOMARDADAPTDLG_HXX