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);
\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
102 //=================================================================================
\r
103 // class : SMESHGUI_MgAdaptDlg
\r
105 //=================================================================================
\r
106 class SMESHGUI_MgAdaptDlg : public QDialog
\r
111 enum Mode { Arguments, AdvancedOptions};
\r
112 SMESHGUI_MgAdaptDlg( SalomeApp_Module*, MgAdapt*, QWidget* parent= 0,bool isCreation = true );
\r
113 ~SMESHGUI_MgAdaptDlg();
\r
117 bool checkParams(QString& msg) ;
\r
118 void setModel(MgAdapt*);
\r
119 MgAdapt* getModel() const;
\r
125 virtual bool clickOnApply();
\r
127 virtual void clickOnHelp();
\r
128 virtual void clickOnOk();
\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
140 SalomeApp_Module* mySMESHGUI; /* Current SMESHGUI object */
\r
141 QTabWidget* myTabWidget;
\r
144 MgAdaptHypothesisData* myData;
\r
149 class SMESHGUI_MgAdaptArguments : public QWidget
\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
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
173 QGroupBox* aMeshOut ;
\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
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
197 QGroupBox* sizeMapField;
\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
206 QSpinBox* rankSpinBox;
\r
207 QButtonGroup* timeStepGroup;
\r
208 QGridLayout* sizeMapFieldGroupLayout;
\r
211 void updateSelection();
\r
212 void toExportMED(const char *);
\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
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
234 QString getMedFileName(bool avertir);
\r
235 LightApp_SelectionMgr* selMgr ;
\r
237 std::map<QString, int> myFieldList;
\r
242 OPTION_ID_COLUMN = 0,
\r
243 OPTION_TYPE_COLUMN,
\r
244 OPTION_NAME_COLUMN = 0,
\r
245 OPTION_VALUE_COLUMN,
\r
249 //////////////////////////////////////////
\r
250 // MgAdaptAdvWidget
\r
251 //////////////////////////////////////////
\r
252 class MgAdaptAdvWidget : public QWidget
\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
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
282 void onAddOption();
\r
283 void itemChanged(QTreeWidgetItem * tblRow, int column);
\r
285 void _onWorkingDirectoryPushButton();
\r
289 enum { EDITABLE_ROLE = Qt::UserRole + 1, PARAM_NAME,
\r
290 NAME_COL = 0, VALUE_COL
\r
295 class ItemDelegate: public QItemDelegate
\r
299 ItemDelegate(QObject* parent=0): QItemDelegate(parent) {}
\r
300 QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const;
\r
303 class MgAdaptAdvWidgetTreeWidget : public QTreeWidget
\r
307 MgAdaptAdvWidgetTreeWidget( QWidget* );
\r
310 QModelIndex moveCursor( CursorAction, Qt::KeyboardModifiers );
\r
311 void keyPressEvent( QKeyEvent* );
\r
315 #endif // MG_ADAPTGUI_HXX
\r