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 #include CORBA_SERVER_HEADER(MG_ADAPT)
\r
51 class SUIT_ViewWindow;
\r
54 class SUIT_ResourceMgr;
\r
58 class SALOMEDSClient_Study;
\r
59 class SALOMEDSClient_SObject;
\r
61 class SalomeApp_Study;
\r
62 class SalomeApp_Module;
\r
63 class LightApp_SelectionMgr;
\r
74 class QDoubleSpinBox;
\r
77 class QTreeWidgetItem;
\r
80 class QItemDelegate;
\r
84 #include <SALOMEconfig.h>
\r
86 class SVTK_ViewWindow;
\r
87 class SVTK_Selector;
\r
88 class SMESHGUI_MgAdaptDlg;
\r
89 class SMESHGUI_MgAdaptArguments;
\r
90 class SMESHGUI_SpinBox;
\r
91 class MgAdaptAdvWidgetTreeWidget;
\r
92 class MgAdaptAdvWidget;
\r
98 std::map<QString, int> GetListeChamps(QString aFile, bool errorMessage = true);
\r
99 QString lireNomMaillage(QString aFile, med_int& meshDim);
\r
100 QString lireNomMaillage2(med_idt medIdt,int meshId, med_int& meshDim);
\r
101 med_idt OuvrirFichier(QString aFile);
\r
102 std::string remove_extension(const std::string& filename);
\r
105 enum ADAPTATION_MODE{
\r
106 SURFACE, // surface adaption when meshDim == 2
\r
110 //=================================================================================
\r
111 // class : SMESHGUI_MgAdaptDlg
\r
113 //=================================================================================
\r
114 class SMESHGUI_MgAdaptDlg : public QDialog
\r
119 enum Mode { Arguments, AdvancedOptions};
\r
120 SMESHGUI_MgAdaptDlg( SalomeApp_Module*, SMESH::MG_ADAPT_ptr, QWidget* parent= 0,bool isCreation = true );
\r
121 ~SMESHGUI_MgAdaptDlg();
\r
125 bool checkParams(QString& msg) ;
\r
126 //~void setModel(MgAdapt*);
\r
127 SMESH::MG_ADAPT_ptr getModel() const;
\r
133 virtual bool clickOnApply();
\r
135 virtual void clickOnHelp();
\r
136 virtual void clickOnOk();
\r
139 SMESHGUI_MgAdaptArguments* myArgs;
\r
140 MgAdaptAdvWidget* myAdvOpt;
\r
141 bool readParamsFromHypo( ) const ;
\r
142 bool readParamsFromWidgets( ) ;
\r
143 bool storeParamsToHypo( const SMESH::MgAdaptHypothesisData & ) const;
\r
148 SalomeApp_Module* mySMESHGUI; /* Current SMESHGUI object */
\r
149 QTabWidget* myTabWidget;
\r
152 SMESH::MgAdaptHypothesisData* myData;
\r
153 SMESH::MG_ADAPT_ptr model;
\r
157 class SMESHGUI_MgAdaptArguments : public QWidget
\r
162 enum Mode { Mesh, Browser};
\r
163 enum SIZEMAP { Local, Background, Constant};
\r
164 SMESHGUI_MgAdaptArguments( QWidget* parent);
\r
165 ~SMESHGUI_MgAdaptArguments();
\r
166 void setMode( const Mode, const SIZEMAP );
\r
167 med_int getMeshDim() const;
\r
169 QString* myFileInDir;
\r
170 QString* myFileOutDir;
\r
171 QString* myFileSizeMapDir;
\r
172 QGroupBox* aMeshIn ;
\r
173 QRadioButton* aMedfile;
\r
174 QRadioButton* aBrowser ;
\r
175 QLineEdit* aBrowserObject;
\r
176 QPushButton* selectMedFilebutton ;
\r
177 QSpacerItem* hspacer;
\r
178 QLineEdit* selectMedFileLineEdit ;
\r
179 QButtonGroup* meshInGroup ;
\r
180 QGridLayout* meshIn ;
\r
182 QGroupBox* aMeshOut ;
\r
184 QLineEdit* meshNameLineEdit;
\r
185 QSpacerItem* secondHspacer;
\r
186 QCheckBox* medFileCheckBox;
\r
187 QPushButton* selectOutMedFilebutton;
\r
188 QLineEdit* selectOutMedFileLineEdit;
\r
189 QSpacerItem* thirdHspacer;
\r
190 QCheckBox* publishOut;
\r
191 QGridLayout* meshOut ;
\r
193 QGroupBox* sizeMapDefinition ;
\r
194 QRadioButton* localButton;
\r
195 QRadioButton* backgroundButton ;
\r
196 QRadioButton* constantButton ;
\r
197 QLabel* medFileBackground;
\r
198 QPushButton* selectMedFileBackgroundbutton;
\r
199 QLineEdit* selectMedFileBackgroundLineEdit;
\r
200 QLabel* valueLabel;
\r
201 QDoubleSpinBox* dvalue;
\r
202 QButtonGroup* sizeMapDefGroup ;
\r
203 QGridLayout* sizeMapDefGroupLayout;
\r
206 QGroupBox* sizeMapField;
\r
208 QComboBox* fieldNameCmb;
\r
209 QRadioButton* noTimeStep;
\r
210 QRadioButton* lastTimeStep ;
\r
211 QRadioButton* chosenTimeStep;
\r
212 QLabel* timeStepLabel;
\r
213 QSpinBox* timeStep;
\r
215 QSpinBox* rankSpinBox;
\r
216 QButtonGroup* timeStepGroup;
\r
217 QGridLayout* sizeMapFieldGroupLayout;
\r
220 void updateSelection();
\r
221 void toExportMED(const char *);
\r
222 void meshDimSignal(ADAPTATION_MODE aMode);
\r
228 void modeChanged( int);
\r
229 void sizeMapDefChanged(int);
\r
230 void timeStepGroupChanged(int timeStepType, bool disableOther = false, int vmax = 0);
\r
231 void onSelectMedFilebuttonClicked();
\r
233 void onMedFileCheckBox(int);
\r
234 void onPublishOut(int);
\r
235 void onSelectOutMedFilebutton();
\r
236 void onSelectMedFileBackgroundbutton();
\r
237 void onLocalSelected(QString);
\r
238 void onNoTimeStep(bool disableOther = false);
\r
239 void onLastTimeStep(bool disableOther = false);
\r
240 void onChosenTimeStep(bool disableOther = false, int vmax = 0);
\r
241 void visibleTimeStepRankLabel(bool visible);
\r
245 QString getMedFileName(bool avertir);
\r
246 LightApp_SelectionMgr* selMgr ;
\r
248 std::map<QString, int> myFieldList;
\r
253 OPTION_ID_COLUMN = 0,
\r
254 OPTION_TYPE_COLUMN,
\r
255 OPTION_NAME_COLUMN = 0,
\r
256 OPTION_VALUE_COLUMN,
\r
260 //////////////////////////////////////////
\r
261 // MgAdaptAdvWidget
\r
262 //////////////////////////////////////////
\r
263 class MgAdaptAdvWidget : public QWidget
\r
268 MgAdaptAdvWidget( QWidget* = 0, std::vector <std::string> * = nullptr, Qt::WindowFlags = 0 );
\r
269 ~MgAdaptAdvWidget();
\r
270 std::vector < std::string > * myOptions;
\r
271 QGridLayout *gridLayout_4;
\r
272 MgAdaptAdvWidgetTreeWidget *myOptionTable;
\r
273 QPushButton *addBtn;
\r
274 QSpacerItem *horizontalSpacer;
\r
275 QGroupBox *logGroupBox;
\r
276 QGridLayout *gridLayout_2;
\r
277 QGridLayout *gridLayout;
\r
278 QLabel *workingDirectoryLabel;
\r
279 QLineEdit *workingDirectoryLineEdit;
\r
280 QPushButton *workingDirectoryPushButton;
\r
281 QLabel *verboseLevelLabel;
\r
282 QSpinBox *verboseLevelSpin;
\r
283 QHBoxLayout *horizontalLayout;
\r
284 QCheckBox *logInFileCheck;
\r
285 QCheckBox *removeLogOnSuccessCheck;
\r
286 QCheckBox *keepWorkingFilesCheck;
\r
288 void AddOption( const char* name_value_type, bool isCustom = false );
\r
289 void GetOptionAndValue( QTreeWidgetItem * tblRow, QString& option, QString& value, bool& dflt );
\r
290 void setupWidget();
\r
293 void onAddOption();
\r
294 void itemChanged(QTreeWidgetItem * tblRow, int column);
\r
295 void onMeshDimChanged(ADAPTATION_MODE aMode);
\r
297 void _onWorkingDirectoryPushButton();
\r
299 void setOptionValue(QString& option, QString& value);
\r
300 std::map<QString, QTreeWidgetItem *> optionTreeWidgetItem;
\r
302 QTreeWidgetItem* getNewQTreeWidgetItem(QTreeWidget* table, const char* option, QString& name, bool isCustom);
\r
306 enum { EDITABLE_ROLE = Qt::UserRole + 1, PARAM_NAME,
\r
307 NAME_COL = 0, VALUE_COL
\r
312 class ItemDelegate: public QItemDelegate
\r
316 ItemDelegate(QObject* parent=0): QItemDelegate(parent) {}
\r
317 QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const;
\r
320 class MgAdaptAdvWidgetTreeWidget : public QTreeWidget
\r
324 MgAdaptAdvWidgetTreeWidget( QWidget* );
\r
327 QModelIndex moveCursor( CursorAction, Qt::KeyboardModifiers );
\r
328 void keyPressEvent( QKeyEvent* );
\r
332 #endif // MG_ADAPTGUI_HXX
\r