Salome HOME
change default med file out
[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 std::string remove_extension(const std::string& filename);\r
101 \r
102 //=================================================================================\r
103 // class    : SMESHGUI_MgAdaptDlg\r
104 // purpose  :\r
105 //=================================================================================\r
106 class  SMESHGUI_MgAdaptDlg : public QDialog\r
107 {\r
108     Q_OBJECT;\r
109 public:\r
110     //! Property type\r
111     enum Mode { Arguments, AdvancedOptions};\r
112     SMESHGUI_MgAdaptDlg( SalomeApp_Module*, MgAdapt*, QWidget* parent= 0,bool isCreation = true );\r
113     ~SMESHGUI_MgAdaptDlg();\r
114 \r
115     void  buildDlg();\r
116     void reject();\r
117     bool checkParams(QString& msg) ;\r
118     void setModel(MgAdapt*);\r
119     MgAdapt* getModel() const;\r
120 \r
121 public slots:\r
122 \r
123 protected slots:\r
124 \r
125     virtual bool clickOnApply();\r
126 private slots:\r
127     virtual void clickOnHelp();\r
128     virtual void clickOnOk();\r
129 protected :\r
130 \r
131     SMESHGUI_MgAdaptArguments* myArgs;\r
132     MgAdaptAdvWidget* myAdvOpt;\r
133     bool                readParamsFromHypo( ) const ;\r
134     bool                readParamsFromWidgets( ) ;\r
135     bool                storeParamsToHypo( const MgAdaptHypothesisData& ) const;\r
136 \r
137 private:\r
138 \r
139 \r
140     SalomeApp_Module*              mySMESHGUI;              /* Current SMESHGUI object */\r
141     QTabWidget*           myTabWidget;\r
142 \r
143 \r
144     MgAdaptHypothesisData* myData;\r
145     MgAdapt* model;\r
146 \r
147 };\r
148 \r
149 class  SMESHGUI_MgAdaptArguments : public QWidget\r
150 {\r
151     Q_OBJECT;\r
152 public:\r
153     //! Property type\r
154     enum Mode { Mesh, Browser};\r
155     enum SIZEMAP { Local, Background, Constant};\r
156     SMESHGUI_MgAdaptArguments( QWidget* parent);\r
157     ~SMESHGUI_MgAdaptArguments();\r
158     void setMode( const Mode, const SIZEMAP );\r
159 \r
160     QString* myFileInDir;\r
161     QString* myFileOutDir;\r
162     QString* myFileSizeMapDir;\r
163     QGroupBox*    aMeshIn ;\r
164     QRadioButton* aMedfile;\r
165     QRadioButton* aBrowser ;\r
166     QLineEdit* aBrowserObject;\r
167     QPushButton* selectMedFilebutton ;\r
168     QSpacerItem* hspacer;\r
169     QLineEdit* selectMedFileLineEdit ;\r
170     QButtonGroup* meshInGroup ;\r
171     QGridLayout* meshIn ;\r
172 \r
173     QGroupBox*    aMeshOut ;\r
174     QLabel* meshName;\r
175     QLineEdit* meshNameLineEdit;\r
176     QSpacerItem* secondHspacer;\r
177     QCheckBox* medFileCheckBox;\r
178     QPushButton* selectOutMedFilebutton;\r
179     QLineEdit* selectOutMedFileLineEdit;\r
180     QSpacerItem* thirdHspacer;\r
181     QCheckBox* publishOut;\r
182     QGridLayout* meshOut ;\r
183 \r
184     QGroupBox*    sizeMapDefinition ;\r
185     QRadioButton* localButton;\r
186     QRadioButton* backgroundButton ;\r
187     QRadioButton* constantButton ;\r
188     QLabel* medFileBackground;\r
189     QPushButton* selectMedFileBackgroundbutton;\r
190     QLineEdit* selectMedFileBackgroundLineEdit;\r
191     QLabel* valueLabel;\r
192     QDoubleSpinBox* dvalue;\r
193     QButtonGroup* sizeMapDefGroup ;\r
194     QGridLayout* sizeMapDefGroupLayout;\r
195 \r
196 \r
197     QGroupBox* sizeMapField;\r
198     QLabel* fieldName;\r
199     QComboBox* fieldNameCmb;\r
200     QRadioButton* noTimeStep;\r
201     QRadioButton* lastTimeStep ;\r
202     QRadioButton* chosenTimeStep;\r
203     QLabel* timeStepLabel;\r
204     QSpinBox* timeStep;\r
205     QLabel* rankLabel;\r
206     QSpinBox* rankSpinBox;\r
207     QButtonGroup* timeStepGroup;\r
208     QGridLayout* sizeMapFieldGroupLayout;\r
209 \r
210 signals:\r
211     void updateSelection();\r
212     void toExportMED(const char *);\r
213 public slots:\r
214 \r
215 protected slots:\r
216 \r
217 private slots:\r
218     void modeChanged( int);\r
219     void sizeMapDefChanged(int);\r
220     void timeStepGroupChanged(int timeStepType, bool disableOther = false, int max = 0);\r
221     void onSelectMedFilebuttonClicked();\r
222     void clear();\r
223     void onMedFileCheckBox(int);\r
224     void onPublishOut(int);\r
225     void onSelectOutMedFilebutton();\r
226     void onSelectMedFileBackgroundbutton();\r
227     void onLocalSelected(QString);\r
228     void onNoTimeStep(bool disableOther = false);\r
229     void onLastTimeStep(bool disableOther = false);\r
230     void onChosenTimeStep(bool disableOther = false, int max = 0);\r
231 \r
232 private:\r
233 \r
234     QString getMedFileName(bool avertir);\r
235     LightApp_SelectionMgr* selMgr ;\r
236 \r
237     std::map<QString, int> myFieldList;\r
238 \r
239 \r
240 };\r
241 enum {\r
242     OPTION_ID_COLUMN = 0,\r
243     OPTION_TYPE_COLUMN,\r
244     OPTION_NAME_COLUMN = 0,\r
245     OPTION_VALUE_COLUMN,\r
246     NB_COLUMNS,\r
247 };\r
248 \r
249 //////////////////////////////////////////\r
250 // MgAdaptAdvWidget\r
251 //////////////////////////////////////////\r
252 class  MgAdaptAdvWidget : public QWidget\r
253 {\r
254     Q_OBJECT\r
255 \r
256 public:\r
257     MgAdaptAdvWidget( QWidget* = 0, std::vector <std::string> * = nullptr, Qt::WindowFlags = 0 );\r
258     ~MgAdaptAdvWidget();\r
259     std::vector < std::string > * myOptions;\r
260     QGridLayout *gridLayout_4;\r
261     MgAdaptAdvWidgetTreeWidget *myOptionTable;\r
262     QPushButton *addBtn;\r
263     QSpacerItem *horizontalSpacer;\r
264     QGroupBox *logGroupBox;\r
265     QGridLayout *gridLayout_2;\r
266     QGridLayout *gridLayout;\r
267     QLabel *workingDirectoryLabel;\r
268     QLineEdit *workingDirectoryLineEdit;\r
269     QPushButton *workingDirectoryPushButton;\r
270     QLabel *verboseLevelLabel;\r
271     QSpinBox *verboseLevelSpin;\r
272     QHBoxLayout *horizontalLayout;\r
273     QCheckBox *logInFileCheck;\r
274     QCheckBox *removeLogOnSuccessCheck;\r
275     QCheckBox *keepWorkingFilesCheck;\r
276 \r
277     void AddOption( const char* name_value_type, bool isCustom = false );\r
278     void GetOptionAndValue( QTreeWidgetItem * tblRow, QString& option, QString& value, bool& dflt );\r
279     void setupWidget();\r
280 public slots:\r
281 \r
282     void                onAddOption();\r
283     void itemChanged(QTreeWidgetItem * tblRow, int column);\r
284 private slots:\r
285     void _onWorkingDirectoryPushButton();\r
286 \r
287 };\r
288 \r
289 enum { EDITABLE_ROLE = Qt::UserRole + 1, PARAM_NAME,\r
290        NAME_COL = 0, VALUE_COL\r
291      };\r
292 \r
293 \r
294 \r
295 class  ItemDelegate: public QItemDelegate\r
296 {\r
297 public:\r
298 \r
299     ItemDelegate(QObject* parent=0): QItemDelegate(parent) {}\r
300     QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const;\r
301 };\r
302 \r
303 class  MgAdaptAdvWidgetTreeWidget : public QTreeWidget\r
304 {\r
305     Q_OBJECT\r
306 public:\r
307     MgAdaptAdvWidgetTreeWidget( QWidget* );\r
308 \r
309 protected:\r
310     QModelIndex moveCursor( CursorAction, Qt::KeyboardModifiers );\r
311     void keyPressEvent( QKeyEvent* );\r
312 };\r
313 \r
314 \r
315 #endif // MG_ADAPTGUI_HXX\r