1 // Copyright (C) 2007-2020 CEA/DEN, EDF R&D, OPEN CASCADE
\r
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
\r
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
\r
6 // This library is free software; you can redistribute it and/or
\r
7 // modify it under the terms of the GNU Lesser General Public
\r
8 // License as published by the Free Software Foundation; either
\r
9 // version 2.1 of the License, or (at your option) any later version.
\r
11 // This library is distributed in the hope that it will be useful,
\r
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
\r
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
\r
14 // Lesser General Public License for more details.
\r
16 // You should have received a copy of the GNU Lesser General Public
\r
17 // License along with this library; if not, write to the Free Software
\r
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
\r
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
\r
22 // SMESH SMESHGUI : GUI for the adaptation in the SMESH component
\r
23 // File : MG_ADAPTGUI.hxx
\r
25 #ifndef MG_ADAPTGUI_HXX
\r
26 #define MG_ADAPTGUI_HXX
\r
33 #include <QTreeWidget>
\r
34 #include<QItemDelegate>
\r
36 #include "LightApp_DataOwner.h"
\r
37 #include "SalomeApp_Application.h"
\r
38 #include <SALOMEconfig.h>
\r
39 #include <SALOME_ListIO.hxx>
\r
40 #include "SalomeApp_Module.h"
\r
41 #include "SalomeApp_Study.h"
\r
49 //~#include "MG_ADAPT.hxx"
\r
51 #include CORBA_SERVER_HEADER(MG_ADAPT)
\r
53 class SUIT_ViewWindow;
\r
56 class SUIT_ResourceMgr;
\r
60 class SALOMEDSClient_Study;
\r
61 class SALOMEDSClient_SObject;
\r
63 class SalomeApp_Study;
\r
64 class SalomeApp_Module;
\r
65 class LightApp_SelectionMgr;
\r
76 class QDoubleSpinBox;
\r
79 class QTreeWidgetItem;
\r
82 class QItemDelegate;
\r
86 #include <SALOMEconfig.h>
\r
88 class SVTK_ViewWindow;
\r
89 class SVTK_Selector;
\r
90 class SMESHGUI_MgAdaptDlg;
\r
91 class SMESHGUI_MgAdaptArguments;
\r
92 class SMESHGUI_SpinBox;
\r
93 class MgAdaptAdvWidgetTreeWidget;
\r
94 class MgAdaptAdvWidget;
\r
100 std::map<QString, int> GetListeChamps(QString aFile, bool errorMessage = true);
\r
101 QString lireNomMaillage(QString aFile, med_int& meshDim);
\r
102 med_idt OuvrirFichier(QString aFile);
\r
103 std::string remove_extension(const std::string& filename);
\r
106 enum ADAPTATION_MODE{
\r
107 SURFACE, // surface adaption when meshDim == 2
\r
111 //=================================================================================
\r
112 // class : SMESHGUI_MgAdaptDlg
\r
114 //=================================================================================
\r
115 class SMESHGUI_MgAdaptDlg : public QDialog
\r
120 enum Mode { Arguments, AdvancedOptions};
\r
121 SMESHGUI_MgAdaptDlg( SalomeApp_Module*, SMESH::MG_ADAPT_ptr, QWidget* parent= 0,bool isCreation = true );
\r
122 ~SMESHGUI_MgAdaptDlg();
\r
126 bool checkParams(QString& msg) ;
\r
127 //~void setModel(MgAdapt*);
\r
128 SMESH::MG_ADAPT_ptr getModel() const;
\r
133 virtual bool PushOnApply();
\r
136 virtual void PushOnHelp();
\r
137 virtual void PushOnOK();
\r
141 SMESHGUI_MgAdaptArguments* myArgs;
\r
142 MgAdaptAdvWidget* myAdvOpt;
\r
143 bool readParamsFromHypo( ) const ;
\r
144 bool readParamsFromWidgets( ) ;
\r
145 bool storeParamsToHypo( const SMESH::MgAdaptHypothesisData & ) const;
\r
149 SalomeApp_Module* mySMESHGUI; /* Current SMESHGUI object */
\r
150 QTabWidget* myTabWidget;
\r
153 SMESH::MgAdaptHypothesisData* myData;
\r
154 SMESH::MG_ADAPT_ptr model;
\r
158 class SMESHGUI_MgAdaptArguments : public QWidget
\r
163 enum Mode { Mesh, Browser};
\r
164 enum SIZEMAP { Local, Background, Constant};
\r
165 SMESHGUI_MgAdaptArguments( QWidget* parent);
\r
166 ~SMESHGUI_MgAdaptArguments();
\r
167 void setMode( const Mode, const SIZEMAP );
\r
168 med_int getMeshDim() const;
\r
170 QString* myFileInDir;
\r
171 QString* myFileOutDir;
\r
172 QString* myFileSizeMapDir;
\r
173 QGroupBox* aMeshIn ;
\r
174 QRadioButton* aMedfile;
\r
175 QRadioButton* aBrowser ;
\r
176 QLineEdit* aBrowserObject;
\r
177 QPushButton* selectMedFilebutton ;
\r
178 QSpacerItem* hspacer;
\r
179 QLineEdit* selectMedFileLineEdit ;
\r
180 QButtonGroup* meshInGroup ;
\r
181 QGridLayout* meshIn ;
\r
183 QGroupBox* aMeshOut ;
\r
185 QLineEdit* meshNameLineEdit;
\r
186 QSpacerItem* secondHspacer;
\r
187 QCheckBox* medFileCheckBox;
\r
188 QPushButton* selectOutMedFilebutton;
\r
189 QLineEdit* selectOutMedFileLineEdit;
\r
190 QSpacerItem* thirdHspacer;
\r
191 QCheckBox* publishOut;
\r
192 QGridLayout* meshOut ;
\r
194 QGroupBox* sizeMapDefinition ;
\r
195 QRadioButton* localButton;
\r
196 QRadioButton* backgroundButton ;
\r
197 QRadioButton* constantButton ;
\r
198 QLabel* medFileBackground;
\r
199 QPushButton* selectMedFileBackgroundbutton;
\r
200 QLineEdit* selectMedFileBackgroundLineEdit;
\r
201 QLabel* valueLabel;
\r
202 QDoubleSpinBox* dvalue;
\r
203 QButtonGroup* sizeMapDefGroup ;
\r
204 QGridLayout* sizeMapDefGroupLayout;
\r
207 QGroupBox* sizeMapField;
\r
209 QComboBox* fieldNameCmb;
\r
210 QRadioButton* noTimeStep;
\r
211 QRadioButton* lastTimeStep ;
\r
212 QRadioButton* chosenTimeStep;
\r
213 QLabel* timeStepLabel;
\r
214 QSpinBox* timeStep;
\r
216 QSpinBox* rankSpinBox;
\r
217 QButtonGroup* timeStepGroup;
\r
218 QGridLayout* sizeMapFieldGroupLayout;
\r
221 void updateSelection();
\r
222 void toExportMED(const char *);
\r
223 void meshDimSignal(ADAPTATION_MODE aMode);
\r
229 void modeChanged( int);
\r
230 void sizeMapDefChanged(int);
\r
231 void timeStepGroupChanged(int timeStepType, bool disableOther = false, int vmax = 0);
\r
232 void onSelectMedFilebuttonClicked();
\r
234 void onMedFileCheckBox(int);
\r
235 void onPublishOut(int);
\r
236 void onSelectOutMedFilebutton();
\r
237 void onSelectMedFileBackgroundbutton();
\r
238 void onLocalSelected(QString);
\r
239 void onNoTimeStep(bool disableOther = false);
\r
240 void onLastTimeStep(bool disableOther = false);
\r
241 void onChosenTimeStep(bool disableOther = false, int vmax = 0);
\r
242 void visibleTimeStepRankLabel(bool visible);
\r
246 QString getMedFileName(bool avertir);
\r
247 LightApp_SelectionMgr* selMgr ;
\r
249 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
310 class ItemDelegate: public QItemDelegate
\r
314 ItemDelegate(QObject* parent=0): QItemDelegate(parent) {}
\r
315 QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &o, const QModelIndex &index) const;
\r
318 class MgAdaptAdvWidgetTreeWidget : public QTreeWidget
\r
322 MgAdaptAdvWidgetTreeWidget( QWidget* );
\r
325 QModelIndex moveCursor( CursorAction, Qt::KeyboardModifiers );
\r
326 void keyPressEvent( QKeyEvent* );
\r
329 #endif // MG_ADAPTGUI_HXX
\r