Salome HOME
New examples
[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 AddBoundaryCAO(QString newBoundary);
68   void AddBoundaryAn(QString newBoundary);
69   void AddBoundaryDi(QString newBoundary);
70
71  protected:
72   QString myWorkingDir;
73
74   SMESHHOMARD::HOMARD_Cas_var myCase;
75   SALOME::GenericObj_wrap< SMESHHOMARD::HOMARD_Gen > myHomardGen;
76
77   virtual void InitConnect();
78   virtual void InitBoundarys();
79
80  public slots:
81   virtual void SetFileName();
82
83   virtual void SetBoundaryNo();
84   virtual void SetBoundaryCAO();
85   virtual void SetBoundaryNonCAO();
86
87   virtual void PushBoundaryCAONew();
88   virtual void PushBoundaryCAOEdit();
89   virtual void PushBoundaryCAOHelp();
90
91   virtual void SetBoundaryD();
92   virtual void PushBoundaryDiNew();
93   virtual void PushBoundaryDiEdit();
94   virtual void PushBoundaryDiHelp();
95
96   virtual void SetBoundaryA();
97   virtual void PushBoundaryAnNew();
98   virtual void PushBoundaryAnEdit();
99   virtual void PushBoundaryAnHelp();
100
101   bool CheckCase(bool fixCase);
102
103   virtual void PushOnOK();
104   virtual bool PushOnApply();
105   virtual void PushOnHelp();
106
107   void selectionChanged();
108   void updateSelection();
109
110  private:
111   SMESHGUI_HomardAdaptArguments* myArgs;
112   SMESHGUI_HomardAdaptAdvanced* myAdvOpt;
113
114   SMESH::SMESH_Mesh_var myMesh;
115
116   QPushButton *buttonHelp;
117   QPushButton *buttonApply;
118   QPushButton *buttonOk;
119   QPushButton *buttonCancel;
120 };
121
122 //=================================================================================
123 // class    : SMESHGUI_HomardAdaptArguments
124 // purpose  :
125 //=================================================================================
126 class SMESHGUI_HomardAdaptArguments : public QWidget
127 {
128   Q_OBJECT
129
130 public:
131   enum ModeIn { MedFile, Browser };
132
133   SMESHGUI_HomardAdaptArguments (QWidget* parent);
134   ~SMESHGUI_HomardAdaptArguments();
135
136   void setupUi();
137
138 public:
139   // Mesh In
140   QButtonGroup* myInMeshGroup;
141   QRadioButton* myInMedFileRadio;
142   QRadioButton* myInBrowserRadio;
143
144   QPushButton*  mySelectInMedFileButton;
145   QLineEdit*    mySelectInMedFileLineEdit; // LEFileName
146
147   QLineEdit*    myInBrowserObject;
148
149   // Mesh Out
150   QLineEdit*    myOutMeshNameLineEdit;
151   QCheckBox*    myOutMedFileChk;
152
153   QPushButton*  mySelectOutMedFileButton;
154   QLineEdit*    mySelectOutMedFileLineEdit;
155
156   QCheckBox*    myOutPublishChk;
157
158   // Conformity type
159   QRadioButton *RBConforme;
160   QRadioButton *RBNonConforme;
161
162   // Boundary type
163   QGroupBox *GBTypeBoun;
164   QRadioButton *RBBoundaryNo;
165   QRadioButton *RBBoundaryCAO;
166   QRadioButton *RBBoundaryNonCAO;
167   QHBoxLayout *hboxLayout3;
168   QCheckBox *CBBoundaryD;
169   QCheckBox *CBBoundaryA;
170
171   QGroupBox *GBBoundaryC; // CAO boundary
172   QGridLayout *_2;
173   QPushButton *PBBoundaryCAOEdit;
174   QPushButton *PBBoundaryCAOHelp;
175   QComboBox *CBBoundaryCAO;
176   QPushButton *PBBoundaryCAONew;
177   QGroupBox *GBBoundaryN; // Non CAO boundary
178   QGroupBox *GBBoundaryD;
179   QGridLayout *gridLayout;
180   QComboBox *CBBoundaryDi;
181   QPushButton *PBBoundaryDiEdit;
182   QPushButton *PBBoundaryDiHelp;
183   QPushButton *PBBoundaryDiNew;
184   QGroupBox *GBBoundaryA;
185   QFormLayout *formLayout;
186   QTableWidget *TWBoundary;
187   QGridLayout *gridLayout1;
188   QPushButton *PBBoundaryAnEdit;
189   QPushButton *PBBoundaryAnNew;
190   QPushButton *PBBoundaryAnHelp;
191
192 signals:
193   void updateSelection();
194
195 private slots:
196   void modeInChanged(int);
197   void clear();
198   void onOutMedFileChk(int);
199   void onOutPublishChk(int);
200   void onSelectOutMedFileButton();
201 };
202
203 //=================================================================================
204 // class    : SMESHGUI_HomardAdaptAdvanced
205 // purpose  :
206 //=================================================================================
207 class SMESHGUI_HomardAdaptAdvanced : public QWidget
208 {
209   Q_OBJECT
210
211 public:
212   SMESHGUI_HomardAdaptAdvanced(QWidget* = 0);
213   ~SMESHGUI_HomardAdaptAdvanced();
214
215   void setupWidget();
216
217 public:
218   QGroupBox   *logGroupBox;
219
220   QLabel      *workingDirectoryLabel;
221   QLineEdit   *workingDirectoryLineEdit;
222   QPushButton *workingDirectoryPushButton;
223
224   QLabel      *verboseLevelLabel;
225   QSpinBox    *verboseLevelSpin;
226
227   QCheckBox   *logInFileCheck;
228   QCheckBox   *removeLogOnSuccessCheck;
229
230   QCheckBox   *keepWorkingFilesCheck;
231
232 private slots:
233   void onWorkingDirectoryPushButton();
234 };
235
236 #endif // SMESHGUI_HOMARDADAPTDLG_HXX