1 // Copyright (C) 2011-2020 CEA/DEN, EDF R&D
\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
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
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
17 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
\r
20 // SMESH SMESHGUI : GUI for the adaptation in the SMESH component
\r
21 // File : MG_ADAPTGUI.hxx
\r
23 #ifndef MG_ADAPTGUI_HXX
\r
24 #define MG_ADAPTGUI_HXX
\r
31 #include <QTreeWidget>
\r
32 #include<QItemDelegate>
\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
47 #include "MG_ADAPT.hxx"
\r
49 class SUIT_ViewWindow;
\r
52 class SUIT_ResourceMgr;
\r
56 class SALOMEDSClient_Study;
\r
57 class SALOMEDSClient_SObject;
\r
59 class SalomeApp_Study;
\r
60 class SalomeApp_Module;
\r
61 class LightApp_SelectionMgr;
\r
72 class QDoubleSpinBox;
\r
75 class QTreeWidgetItem;
\r
78 class QItemDelegate;
\r
82 #include <SALOMEconfig.h>
\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
96 std::map<QString, int> GetListeChamps(QString aFile, bool errorMessage = true);
\r
97 QString lireNomMaillage(QString aFile, med_int& meshDim);
\r
98 QString lireNomMaillage2(med_idt medIdt,int meshId, med_int& meshDim);
\r
99 med_idt OuvrirFichier(QString aFile);
\r
100 std::string remove_extension(const std::string& filename);
\r
103 enum ADAPTATION_MODE{
104 SURFACE, // surface adaption when meshDim == 2
\r
108 //=================================================================================
\r
109 // class : SMESHGUI_MgAdaptDlg
\r
111 //=================================================================================
\r
112 class SMESHGUI_MgAdaptDlg : public QDialog
\r
117 enum Mode { Arguments, AdvancedOptions};
\r
118 SMESHGUI_MgAdaptDlg( SalomeApp_Module*, MgAdapt*, QWidget* parent= 0,bool isCreation = true );
\r
119 ~SMESHGUI_MgAdaptDlg();
\r
123 bool checkParams(QString& msg) ;
\r
124 void setModel(MgAdapt*);
\r
125 MgAdapt* getModel() const;
\r
131 virtual bool clickOnApply();
\r
133 virtual void clickOnHelp();
\r
134 virtual void clickOnOk();
\r
137 SMESHGUI_MgAdaptArguments* myArgs;
\r
138 MgAdaptAdvWidget* myAdvOpt;
\r
139 bool readParamsFromHypo( ) const ;
\r
140 bool readParamsFromWidgets( ) ;
\r
141 bool storeParamsToHypo( const MgAdaptHypothesisData& ) const;
\r
146 SalomeApp_Module* mySMESHGUI; /* Current SMESHGUI object */
\r
147 QTabWidget* myTabWidget;
\r
150 MgAdaptHypothesisData* myData;
\r
155 class SMESHGUI_MgAdaptArguments : public QWidget
\r
160 enum Mode { Mesh, Browser};
\r
161 enum SIZEMAP { Local, Background, Constant};
\r
162 SMESHGUI_MgAdaptArguments( QWidget* parent);
\r
163 ~SMESHGUI_MgAdaptArguments();
\r
164 void setMode( const Mode, const SIZEMAP );
\r
165 med_int getMeshDim() const;
\r
167 QString* myFileInDir;
\r
168 QString* myFileOutDir;
\r
169 QString* myFileSizeMapDir;
\r
170 QGroupBox* aMeshIn ;
\r
171 QRadioButton* aMedfile;
\r
172 QRadioButton* aBrowser ;
\r
173 QLineEdit* aBrowserObject;
\r
174 QPushButton* selectMedFilebutton ;
\r
175 QSpacerItem* hspacer;
\r
176 QLineEdit* selectMedFileLineEdit ;
\r
177 QButtonGroup* meshInGroup ;
\r
178 QGridLayout* meshIn ;
\r
180 QGroupBox* aMeshOut ;
\r
182 QLineEdit* meshNameLineEdit;
\r
183 QSpacerItem* secondHspacer;
\r
184 QCheckBox* medFileCheckBox;
\r
185 QPushButton* selectOutMedFilebutton;
\r
186 QLineEdit* selectOutMedFileLineEdit;
\r
187 QSpacerItem* thirdHspacer;
\r
188 QCheckBox* publishOut;
\r
189 QGridLayout* meshOut ;
\r
191 QGroupBox* sizeMapDefinition ;
\r
192 QRadioButton* localButton;
\r
193 QRadioButton* backgroundButton ;
\r
194 QRadioButton* constantButton ;
\r
195 QLabel* medFileBackground;
\r
196 QPushButton* selectMedFileBackgroundbutton;
\r
197 QLineEdit* selectMedFileBackgroundLineEdit;
\r
198 QLabel* valueLabel;
\r
199 QDoubleSpinBox* dvalue;
\r
200 QButtonGroup* sizeMapDefGroup ;
\r
201 QGridLayout* sizeMapDefGroupLayout;
\r
204 QGroupBox* sizeMapField;
\r
206 QComboBox* fieldNameCmb;
\r
207 QRadioButton* noTimeStep;
\r
208 QRadioButton* lastTimeStep ;
\r
209 QRadioButton* chosenTimeStep;
\r
210 QLabel* timeStepLabel;
\r
211 QSpinBox* timeStep;
\r
213 QSpinBox* rankSpinBox;
\r
214 QButtonGroup* timeStepGroup;
\r
215 QGridLayout* sizeMapFieldGroupLayout;
\r
218 void updateSelection();
\r
219 void toExportMED(const char *);
\r
220 void meshDimSignal(ADAPTATION_MODE aMode);
\r
226 void modeChanged( int);
\r
227 void sizeMapDefChanged(int);
\r
228 void timeStepGroupChanged(int timeStepType, bool disableOther = false, int max = 0);
\r
229 void onSelectMedFilebuttonClicked();
\r
231 void onMedFileCheckBox(int);
\r
232 void onPublishOut(int);
\r
233 void onSelectOutMedFilebutton();
\r
234 void onSelectMedFileBackgroundbutton();
\r
235 void onLocalSelected(QString);
\r
236 void onNoTimeStep(bool disableOther = false);
\r
237 void onLastTimeStep(bool disableOther = false);
\r
238 void onChosenTimeStep(bool disableOther = false, int max = 0);
\r
242 QString getMedFileName(bool avertir);
\r
243 LightApp_SelectionMgr* selMgr ;
\r
245 std::map<QString, int> myFieldList;
\r
250 OPTION_ID_COLUMN = 0,
\r
251 OPTION_TYPE_COLUMN,
\r
252 OPTION_NAME_COLUMN = 0,
\r
253 OPTION_VALUE_COLUMN,
\r
257 //////////////////////////////////////////
\r
258 // MgAdaptAdvWidget
\r
259 //////////////////////////////////////////
\r
260 class MgAdaptAdvWidget : public QWidget
\r
265 MgAdaptAdvWidget( QWidget* = 0, std::vector <std::string> * = nullptr, Qt::WindowFlags = 0 );
\r
266 ~MgAdaptAdvWidget();
\r
267 std::vector < std::string > * myOptions;
\r
268 QGridLayout *gridLayout_4;
\r
269 MgAdaptAdvWidgetTreeWidget *myOptionTable;
\r
270 QPushButton *addBtn;
\r
271 QSpacerItem *horizontalSpacer;
\r
272 QGroupBox *logGroupBox;
\r
273 QGridLayout *gridLayout_2;
\r
274 QGridLayout *gridLayout;
\r
275 QLabel *workingDirectoryLabel;
\r
276 QLineEdit *workingDirectoryLineEdit;
\r
277 QPushButton *workingDirectoryPushButton;
\r
278 QLabel *verboseLevelLabel;
\r
279 QSpinBox *verboseLevelSpin;
\r
280 QHBoxLayout *horizontalLayout;
\r
281 QCheckBox *logInFileCheck;
\r
282 QCheckBox *removeLogOnSuccessCheck;
\r
283 QCheckBox *keepWorkingFilesCheck;
\r
285 void AddOption( const char* name_value_type, bool isCustom = false );
\r
286 void GetOptionAndValue( QTreeWidgetItem * tblRow, QString& option, QString& value, bool& dflt );
\r
287 void setupWidget();
\r
290 void onAddOption();
\r
291 void itemChanged(QTreeWidgetItem * tblRow, int column);
\r
292 void onMeshDimChanged(ADAPTATION_MODE aMode);
\r
294 void _onWorkingDirectoryPushButton();
\r
296 void setOptionValue(QString& option, QString& value);
\r
297 std::map<QString, QTreeWidgetItem *> optionTreeWidgetItem;
\r
299 QTreeWidgetItem* getNewQTreeWidgetItem(QTreeWidget* table, const char* option, QString& name, bool isCustom);
\r
303 enum { EDITABLE_ROLE = Qt::UserRole + 1, PARAM_NAME,
\r
304 NAME_COL = 0, VALUE_COL
\r
309 class ItemDelegate: public QItemDelegate
\r
313 ItemDelegate(QObject* parent=0): QItemDelegate(parent) {}
\r
314 QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const;
\r
317 class MgAdaptAdvWidgetTreeWidget : public QTreeWidget
\r
321 MgAdaptAdvWidgetTreeWidget( QWidget* );
\r
324 QModelIndex moveCursor( CursorAction, Qt::KeyboardModifiers );
\r
325 void keyPressEvent( QKeyEvent* );
\r
329 #endif // MG_ADAPTGUI_HXX
\r