Salome HOME
to remove tmp file
[modules/smesh.git] / src / SMESHGUI / MG_ADAPTGUI.hxx
1 // Copyright (C) 2011-2020  CEA/DEN, EDF R&D\r
2 //\r
3 // This library is free software; you can redistribute it and/or\r
4 // modify it under the terms of the GNU Lesser General Public\r
5 // License as published by the Free Software Foundation; either\r
6 // version 2.1 of the License, or (at your option) any later version.\r
7 //\r
8 // This library is distributed in the hope that it will be useful,\r
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of\r
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
11 // Lesser General Public License for more details.\r
12 //\r
13 // You should have received a copy of the GNU Lesser General Public\r
14 // License along with this library; if not, write to the Free Software\r
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA\r
16 //\r
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com\r
18 //\r
19 \r
20 // SMESH SMESHGUI : GUI for the adaptation in the SMESH component\r
21 // File   : MG_ADAPTGUI.hxx\r
22 //\r
23 #ifndef MG_ADAPTGUI_HXX\r
24 #define MG_ADAPTGUI_HXX\r
25 \r
26 #include <set>\r
27 // SMESH includes\r
28 \r
29 // Qt includes\r
30 #include <QDialog>\r
31 #include <QTreeWidget>\r
32 #include<QItemDelegate>\r
33 \r
34 #include "LightApp_DataOwner.h"\r
35 #include "SalomeApp_Application.h"\r
36 #include <SALOMEconfig.h>\r
37 #include <SALOME_ListIO.hxx>\r
38 #include "SalomeApp_Module.h"\r
39 #include "SalomeApp_Study.h"\r
40 #include <med.h>\r
41 #include <map>\r
42 \r
43 \r
44 // model\r
45 \r
46 \r
47 #include "MG_ADAPT.hxx"\r
48 \r
49 class SUIT_ViewWindow;\r
50 class SUIT_Desktop;\r
51 class SUIT_Study;\r
52 class SUIT_ResourceMgr;\r
53 \r
54 class CAM_Module;\r
55 \r
56 class SALOMEDSClient_Study;\r
57 class SALOMEDSClient_SObject;\r
58 \r
59 class SalomeApp_Study;\r
60 class SalomeApp_Module;\r
61 class LightApp_SelectionMgr;\r
62 \r
63 \r
64 class QButtonGroup;\r
65 class QLineEdit;\r
66 class QGroupBox;\r
67 class QRadioButton;\r
68 class QLabel;\r
69 class QCheckBox;\r
70 class QGridLayout;\r
71 class QTabWidget;\r
72 class QDoubleSpinBox;\r
73 class QSpinBox;\r
74 class QTreeWidget;\r
75 class QTreeWidgetItem;\r
76 class QSpacerItem;\r
77 class QHBoxLayout;\r
78 class QItemDelegate;\r
79 class QComboBox;\r
80 \r
81 // IDL includes\r
82 #include <SALOMEconfig.h>\r
83 \r
84 class SVTK_ViewWindow;\r
85 class SVTK_Selector;\r
86 class SMESHGUI_MgAdaptDlg;\r
87 class SMESHGUI_MgAdaptArguments;\r
88 class SMESHGUI_SpinBox;\r
89 class MgAdaptAdvWidgetTreeWidget;\r
90 class MgAdaptAdvWidget;\r
91 class MgAdapt;\r
92 class QHeaderView;\r
93 class QFileDialog;\r
94 \r
95 \r
96 std::map<QString, int> GetListeChamps(QString aFile, bool errorMessage = true);\r
97 QString lireNomMaillage(QString aFile);\r
98 QString lireNomMaillage2(med_idt medIdt,int meshId);\r
99 med_idt OuvrirFichier(QString aFile);\r
100 \r
101 //=================================================================================\r
102 // class    : SMESHGUI_MgAdaptDlg\r
103 // purpose  :\r
104 //=================================================================================\r
105 class  SMESHGUI_MgAdaptDlg : public QDialog\r
106 {\r
107     Q_OBJECT;\r
108 public:\r
109     //! Property type\r
110     enum Mode { Arguments, AdvancedOptions};\r
111     SMESHGUI_MgAdaptDlg( SalomeApp_Module*, MgAdapt*, QWidget* parent= 0,bool isCreation = true );\r
112     ~SMESHGUI_MgAdaptDlg();\r
113 \r
114     void  buildDlg();\r
115     void reject();\r
116     bool checkParams(QString& msg) ;\r
117     void setModel(MgAdapt*);\r
118     MgAdapt* getModel() const;\r
119 \r
120 public slots:\r
121 \r
122 protected slots:\r
123 \r
124     virtual bool clickOnApply();\r
125 private slots:\r
126     virtual void clickOnHelp();\r
127     virtual void clickOnOk();\r
128 protected :\r
129 \r
130     SMESHGUI_MgAdaptArguments* myArgs;\r
131     MgAdaptAdvWidget* myAdvOpt;\r
132     bool                readParamsFromHypo( ) const ;\r
133     bool                readParamsFromWidgets( ) ;\r
134     bool                storeParamsToHypo( const MgAdaptHypothesisData& ) const;\r
135 \r
136 private:\r
137 \r
138 \r
139     SalomeApp_Module*              mySMESHGUI;              /* Current SMESHGUI object */\r
140     QTabWidget*           myTabWidget;\r
141 \r
142 \r
143     MgAdaptHypothesisData* myData;\r
144     MgAdapt* model;\r
145 \r
146 };\r
147 \r
148 class  SMESHGUI_MgAdaptArguments : public QWidget\r
149 {\r
150     Q_OBJECT;\r
151 public:\r
152     //! Property type\r
153     enum Mode { Mesh, Browser};\r
154     enum SIZEMAP { Local, Background, Constant};\r
155     SMESHGUI_MgAdaptArguments( QWidget* parent);\r
156     ~SMESHGUI_MgAdaptArguments();\r
157     void setMode( const Mode, const SIZEMAP );\r
158 \r
159     QString* myFileInDir;\r
160     QString* myFileOutDir;\r
161     QString* myFileSizeMapDir;\r
162     QGroupBox*    aMeshIn ;\r
163     QRadioButton* aMedfile;\r
164     QRadioButton* aBrowser ;\r
165     QLineEdit* aBrowserObject;\r
166     QPushButton* selectMedFilebutton ;\r
167     QSpacerItem* hspacer;\r
168     QLineEdit* selectMedFileLineEdit ;\r
169     QButtonGroup* meshInGroup ;\r
170     QGridLayout* meshIn ;\r
171 \r
172     QGroupBox*    aMeshOut ;\r
173     QLabel* meshName;\r
174     QLineEdit* meshNameLineEdit;\r
175     QSpacerItem* secondHspacer;\r
176     QCheckBox* medFileCheckBox;\r
177     QPushButton* selectOutMedFilebutton;\r
178     QLineEdit* selectOutMedFileLineEdit;\r
179     QSpacerItem* thirdHspacer;\r
180     QCheckBox* publishOut;\r
181     QGridLayout* meshOut ;\r
182 \r
183     QGroupBox*    sizeMapDefinition ;\r
184     QRadioButton* localButton;\r
185     QRadioButton* backgroundButton ;\r
186     QRadioButton* constantButton ;\r
187     QLabel* medFileBackground;\r
188     QPushButton* selectMedFileBackgroundbutton;\r
189     QLineEdit* selectMedFileBackgroundLineEdit;\r
190     QLabel* valueLabel;\r
191     QDoubleSpinBox* dvalue;\r
192     QButtonGroup* sizeMapDefGroup ;\r
193     QGridLayout* sizeMapDefGroupLayout;\r
194 \r
195 \r
196     QGroupBox* sizeMapField;\r
197     QLabel* fieldName;\r
198     QComboBox* fieldNameCmb;\r
199     QRadioButton* noTimeStep;\r
200     QRadioButton* lastTimeStep ;\r
201     QRadioButton* chosenTimeStep;\r
202     QLabel* timeStepLabel;\r
203     QSpinBox* timeStep;\r
204     QLabel* rankLabel;\r
205     QSpinBox* rankSpinBox;\r
206     QButtonGroup* timeStepGroup;\r
207     QGridLayout* sizeMapFieldGroupLayout;\r
208 \r
209 signals:\r
210     void updateSelection();\r
211     void toExportMED(const char *);\r
212 public slots:\r
213 \r
214 protected slots:\r
215 \r
216 private slots:\r
217     void modeChanged( int);\r
218     void sizeMapDefChanged(int);\r
219     void timeStepGroupChanged(int timeStepType, bool disableOther = false, int max = 0);\r
220     void onSelectMedFilebuttonClicked();\r
221     void clear();\r
222     void onMedFileCheckBox(int);\r
223     void onPublishOut(int);\r
224     void onSelectOutMedFilebutton();\r
225     void onSelectMedFileBackgroundbutton();\r
226     void onLocalSelected(QString);\r
227     void onNoTimeStep(bool disableOther = false);\r
228     void onLastTimeStep(bool disableOther = false);\r
229     void onChosenTimeStep(bool disableOther = false, int max = 0);\r
230 \r
231 private:\r
232 \r
233     QString getMedFileName(bool avertir);\r
234     LightApp_SelectionMgr* selMgr ;\r
235 \r
236     std::map<QString, int> myFieldList;\r
237 \r
238 \r
239 };\r
240 enum {\r
241     OPTION_ID_COLUMN = 0,\r
242     OPTION_TYPE_COLUMN,\r
243     OPTION_NAME_COLUMN = 0,\r
244     OPTION_VALUE_COLUMN,\r
245     NB_COLUMNS,\r
246 };\r
247 \r
248 //////////////////////////////////////////\r
249 // MgAdaptAdvWidget\r
250 //////////////////////////////////////////\r
251 class  MgAdaptAdvWidget : public QWidget\r
252 {\r
253     Q_OBJECT\r
254 \r
255 public:\r
256     MgAdaptAdvWidget( QWidget* = 0, std::vector <std::string> * = nullptr, Qt::WindowFlags = 0 );\r
257     ~MgAdaptAdvWidget();\r
258     std::vector < std::string > * myOptions;\r
259     QGridLayout *gridLayout_4;\r
260     MgAdaptAdvWidgetTreeWidget *myOptionTable;\r
261     QPushButton *addBtn;\r
262     QSpacerItem *horizontalSpacer;\r
263     QGroupBox *logGroupBox;\r
264     QGridLayout *gridLayout_2;\r
265     QGridLayout *gridLayout;\r
266     QLabel *workingDirectoryLabel;\r
267     QLineEdit *workingDirectoryLineEdit;\r
268     QPushButton *workingDirectoryPushButton;\r
269     QLabel *verboseLevelLabel;\r
270     QSpinBox *verboseLevelSpin;\r
271     QHBoxLayout *horizontalLayout;\r
272     QCheckBox *logInFileCheck;\r
273     QCheckBox *removeLogOnSuccessCheck;\r
274     QCheckBox *keepWorkingFilesCheck;\r
275 \r
276     void AddOption( const char* name_value_type, bool isCustom = false );\r
277     void GetOptionAndValue( QTreeWidgetItem * tblRow, QString& option, QString& value, bool& dflt );\r
278     void setupWidget();\r
279 public slots:\r
280 \r
281     void                onAddOption();\r
282     void itemChanged(QTreeWidgetItem * tblRow, int column);\r
283 private slots:\r
284     void _onWorkingDirectoryPushButton();\r
285 \r
286 };\r
287 \r
288 enum { EDITABLE_ROLE = Qt::UserRole + 1, PARAM_NAME,\r
289        NAME_COL = 0, VALUE_COL\r
290      };\r
291 \r
292 \r
293 \r
294 class  ItemDelegate: public QItemDelegate\r
295 {\r
296 public:\r
297 \r
298     ItemDelegate(QObject* parent=0): QItemDelegate(parent) {}\r
299     QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const;\r
300 };\r
301 \r
302 class  MgAdaptAdvWidgetTreeWidget : public QTreeWidget\r
303 {\r
304     Q_OBJECT\r
305 public:\r
306     MgAdaptAdvWidgetTreeWidget( QWidget* );\r
307 \r
308 protected:\r
309     QModelIndex moveCursor( CursorAction, Qt::KeyboardModifiers );\r
310     void keyPressEvent( QKeyEvent* );\r
311 };\r
312 \r
313 \r
314 #endif // MG_ADAPTGUI_HXX\r