Version: 9.12.0
SMESHGUI_Hypotheses.h
Go to the documentation of this file.
1 // Copyright (C) 2007-2023 CEA, EDF, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22 
23 // SMESH SMESHGUI : GUI for SMESH component
24 // File : SMESHGUI_Hypotheses.h
25 // Author : Julia DOROVSKIKH, Open CASCADE S.A.S.
26 //
27 #ifndef SMESHGUI_HYPOTHESES_H
28 #define SMESHGUI_HYPOTHESES_H
29 
30 // SMESH includes
31 #include "SMESH_SMESHGUI.hxx"
33 
34 // Qt includes
35 #include <QtxDialog.h>
36 #include <QVariant>
37 
38 // IDL includes
39 #include <SALOMEconfig.h>
40 #include CORBA_SERVER_HEADER(SMESH_Hypothesis)
41 
42 class QEventLoop;
43 
48 {
49  Q_OBJECT
50 
51 public:
52  SMESHGUI_GenericHypothesisCreator( const QString& );
54 
55  void create( SMESH::SMESH_Hypothesis_ptr,
56  const QString&, QWidget*, QObject*, const QString& );
57  void create( bool, const QString&, QWidget*, QObject*, const QString& );
58  void edit( SMESH::SMESH_Hypothesis_ptr, const QString&, QWidget*, QObject*, const QString& );
59  void setInitParamsHypothesis(SMESH::SMESH_Hypothesis_ptr);
60 
61  virtual bool checkParams( QString& ) const;
62  virtual void onReject();
63  virtual QString helpPage() const;
64 
65  QString hypType() const;
66  QString hypName() const;
67  bool isCreation() const;
68 
69  QString getShapeEntry() const { return myShapeEntry; }
70  void setShapeEntry( const QString& theEntry );
71 
72  QString getMainShapeEntry() const { return myMainShapeEntry; }
73  void setMainShapeEntry( const QString& theEntry ) { myMainShapeEntry = theEntry; }
74 
75  void setNoGeomMesh( const bool noGeom ) { myNoGeomMesh = noGeom; }
76  bool getNoGeomMesh() const { return myNoGeomMesh; }
77 
78 signals:
79  void finished( int );
80 
81 protected:
82  struct StdParam
83  {
84  QString myName;
85  QVariant myValue;
86  bool isVariable;
87  QString myText;
88  QByteArray myTextAsBytes;
90  isVariable = false;
91  }
92  const char* text() const {
93  ((QByteArray&) myTextAsBytes) = myText.toUtf8(); return myTextAsBytes.constData();
94  }
95  void setNoName() { myName.clear(); } // ==> widget occupies both columns
96  bool hasName() const { return !myName.isEmpty(); }
97  };
98 
99  typedef QList<StdParam> ListOfStdParams;
100  typedef QList<QWidget*> ListOfWidgets;
101 
102  SMESH::SMESH_Hypothesis_var hypothesis() const;
103  SMESH::SMESH_Hypothesis_var initParamsHypothesis(const bool strict=false) const;
104  bool hasInitParamsHypothesis() const;
105  const ListOfWidgets& widgets() const;
106  ListOfWidgets& changeWidgets();
107  QLabel* getLabel(int i) const;
108  QtxDialog* dlg() const;
109  QString getVariableName(const char* methodName) const;
110 
111  virtual QFrame* buildFrame() = 0;
112  QFrame* buildStdFrame();
113  virtual void retrieveParams() const = 0;
114  virtual QString storeParams() const = 0;
115  virtual bool stdParams( ListOfStdParams& ) const;
116  bool getStdParamFromDlg( ListOfStdParams& ) const;
117  virtual QStringList getVariablesFromDlg() const;
118  static QString stdParamValues( const ListOfStdParams& );
119  virtual void attuneStdWidget( QWidget*, const int ) const;
120  virtual QWidget* getCustomWidget( const StdParam&,
121  QWidget*, const int ) const;
122  virtual QWidget* getHelperWidget() const;
123  virtual bool getParamFromCustomWidget( StdParam&, QWidget* ) const;
124  virtual void valueChanged( QWidget* );
125  virtual QString caption() const;
126  virtual QPixmap icon() const;
127  virtual QString type() const;
128 
129 protected slots:
130  virtual void onValueChanged();
131 
132 private slots:
133  virtual void onDialogFinished( int );
134 
135 private:
136  void editHypothesis( SMESH::SMESH_Hypothesis_ptr, const QString&, QWidget*, QObject* obj, const QString& );
137 
138 private:
139  SMESH::SMESH_Hypothesis_var myHypo, myInitParamsHypo;
141  QString myHypName;
142  QString myHypType;
148  QString myShapeEntry;
150 };
151 
153 {
154  Q_OBJECT
155 
156 public:
158  virtual ~SMESHGUI_HypothesisDlg();
159 
160  void setHIcon( const QPixmap& );
161  void setCustomFrame( QFrame* );
162  void setType( const QString& );
163  void showEvent(QShowEvent *event);
164 
165 protected slots:
166  virtual void accept();
167  virtual void reject();
168  void onHelp();
169 
170  private:
173  QString myHelpFileName;
174 };
175 
180 {
181  HypothesisData( const QString&, const QString&, const QString&,
182  const QString&, const QString&, const QString&,
183  const QString&, const int, const int,
184  const QList<int>&, const bool,
185  const QStringList&, const QStringList&,
186  const QStringList&, const QStringList&,
187  const int, const bool supportSub );
188 
189  QString TypeName;
190  QString PluginName;
191  QString ServerLibName;
192  QString ClientLibName;
193  QString Label;
194  QString IconId;
195  QString Context;
196  int GroupID;
197  int Priority;
198  QList<int> Dim;
205 
206  // for algorithm only: dependencies algo <-> algo and algo -> hypos
207  QStringList BasicHypos;
208  QStringList OptionalHypos;
209  QStringList InputTypes;
210  QStringList OutputTypes;
211 };
212 
219 {
220 public:
221 
223 
224  //HypothesesSet( const QString& );
225  HypothesesSet( const QString& name,
226  bool useCommonSize, bool isQuadDominated,
227  const QStringList& mainHypos, const QStringList& mainAlgos,
228  const QStringList& altHypos, const QStringList& altAlgos,
229  const QStringList& intHypos, const QStringList& intAlgos );
230 
231  QString name() const;
232  bool toUseCommonSize() const { return myUseCommonSize; }
233  bool isQuadDominated() const { return myQuadDominated; }
234  bool hasAlgo( SetType type ) const { return !myAlgoList[ type ].isEmpty(); }
235  //int count( bool, SetType ) const;
236 
237  int maxDim() const;
238 
239  void setIsCustom( bool );
240  bool getIsCustom() const;
241 
242  void setAlgoAvailable( SetType type, bool isAvailable );
243  bool getAlgoAvailable( SetType type );
244 
245  static SetType getPreferredHypType();
246  static const char* getCommonHypoSetHypoType();
247 
248  //bool isAlgo() const;
249 
250  // CASCADE-like iteration
251  void init( bool, SetType );
252  bool more() const;
253  void next();
254  QString current() const;
255 
256 private:
257  QStringList* list(bool,SetType) const;
258  QStringList* list() const;
259 
260 private:
261  bool myUseCommonSize; // Average size is asked only and used to create default hypotheses
263  QString myHypoSetName;
264  QStringList myHypoList[3], myAlgoList[3]; // per SetType
265  bool myIsAlgoAvailable[3]; // current state depending on geometry etc
266 
267  // iteration
270  int myIndex;
271 };
272 
273 #endif // SMESHGUI_HYPOTHESES_H
#define SMESHGUI_EXPORT
Definition: SMESH_SMESHGUI.hxx:36
Class containing set of hypotheses.
Definition: SMESHGUI_Hypotheses.h:219
bool myQuadDominated
Definition: SMESHGUI_Hypotheses.h:262
bool myIsCustom
Definition: SMESHGUI_Hypotheses.h:269
bool hasAlgo(SetType type) const
Definition: SMESHGUI_Hypotheses.h:234
bool myIsAlgoAvailable[3]
Definition: SMESHGUI_Hypotheses.h:265
bool myUseCommonSize
Definition: SMESHGUI_Hypotheses.h:261
bool getIsCustom() const
Definition: SMESHGUI_Hypotheses.cxx:888
bool more() const
Definition: SMESHGUI_Hypotheses.cxx:868
QString myHypoSetName
Definition: SMESHGUI_Hypotheses.h:263
static const char * getCommonHypoSetHypoType()
Definition: SMESHGUI_Hypotheses.cxx:929
QStringList * list() const
Definition: SMESHGUI_Hypotheses.cxx:836
QStringList myHypoList[3]
Definition: SMESHGUI_Hypotheses.h:264
int maxDim() const
Definition: SMESHGUI_Hypotheses.cxx:914
void setIsCustom(bool)
Definition: SMESHGUI_Hypotheses.cxx:883
void init(bool, SetType)
Definition: SMESHGUI_Hypotheses.cxx:861
bool getAlgoAvailable(SetType type)
Definition: SMESHGUI_Hypotheses.cxx:899
SetType myHypType
Definition: SMESHGUI_Hypotheses.h:268
QString current() const
Definition: SMESHGUI_Hypotheses.cxx:878
QStringList myAlgoList[3]
Definition: SMESHGUI_Hypotheses.h:264
static SetType getPreferredHypType()
Definition: SMESHGUI_Hypotheses.cxx:907
void next()
Definition: SMESHGUI_Hypotheses.cxx:873
int myIndex
Definition: SMESHGUI_Hypotheses.h:270
void setAlgoAvailable(SetType type, bool isAvailable)
Definition: SMESHGUI_Hypotheses.cxx:893
SetType
Definition: SMESHGUI_Hypotheses.h:222
@ MAIN
Definition: SMESHGUI_Hypotheses.h:222
@ NB_HYP_TYPES
Definition: SMESHGUI_Hypotheses.h:222
@ ALT
Definition: SMESHGUI_Hypotheses.h:222
@ INTERN
Definition: SMESHGUI_Hypotheses.h:222
HypothesesSet(const QString &name, bool useCommonSize, bool isQuadDominated, const QStringList &mainHypos, const QStringList &mainAlgos, const QStringList &altHypos, const QStringList &altAlgos, const QStringList &intHypos, const QStringList &intAlgos)
Definition: SMESHGUI_Hypotheses.cxx:808
QString name() const
Definition: SMESHGUI_Hypotheses.cxx:841
bool toUseCommonSize() const
Definition: SMESHGUI_Hypotheses.h:232
bool myIsAlgo
Definition: SMESHGUI_Hypotheses.h:269
bool isQuadDominated() const
Definition: SMESHGUI_Hypotheses.h:233
Auxiliary class for creation of hypotheses.
Definition: SMESHGUI_Hypotheses.h:48
void setNoGeomMesh(const bool noGeom)
Definition: SMESHGUI_Hypotheses.h:75
QtxDialog * myDlg
Definition: SMESHGUI_Hypotheses.h:147
SMESH::SMESH_Hypothesis_var myHypo
Definition: SMESHGUI_Hypotheses.h:139
QString myMainShapeEntry
Definition: SMESHGUI_Hypotheses.h:149
bool myToDeleteInitParamsHypo
Definition: SMESHGUI_Hypotheses.h:140
virtual QFrame * buildFrame()=0
bool myIsCreate
Definition: SMESHGUI_Hypotheses.h:145
ListOfWidgets myParamWidgets
Definition: SMESHGUI_Hypotheses.h:143
QList< StdParam > ListOfStdParams
Definition: SMESHGUI_Hypotheses.h:99
QList< QWidget * > ListOfWidgets
Definition: SMESHGUI_Hypotheses.h:100
QString myHypType
Definition: SMESHGUI_Hypotheses.h:142
void setMainShapeEntry(const QString &theEntry)
Definition: SMESHGUI_Hypotheses.h:73
virtual QString storeParams() const =0
QString myShapeEntry
Definition: SMESHGUI_Hypotheses.h:148
QString myHypName
Definition: SMESHGUI_Hypotheses.h:141
QString getMainShapeEntry() const
Definition: SMESHGUI_Hypotheses.h:72
bool getNoGeomMesh() const
Definition: SMESHGUI_Hypotheses.h:76
QString getShapeEntry() const
Definition: SMESHGUI_Hypotheses.h:69
bool myNoGeomMesh
true for a mesh not based on geometry
Definition: SMESHGUI_Hypotheses.h:146
virtual void retrieveParams() const =0
ListOfWidgets myParamLabels
Definition: SMESHGUI_Hypotheses.h:144
Definition: SMESHGUI_Hypotheses.h:153
virtual ~SMESHGUI_HypothesisDlg()
Definition: SMESHGUI_Hypotheses.cxx:680
QLabel * myIconLabel
Definition: SMESHGUI_Hypotheses.h:172
SMESHGUI_GenericHypothesisCreator * myCreator
Definition: SMESHGUI_Hypotheses.h:171
SMESHGUI_HypothesisDlg(SMESHGUI_GenericHypothesisCreator *, QWidget *)
Definition: SMESHGUI_Hypotheses.cxx:646
QLabel * myTypeLabel
Definition: SMESHGUI_Hypotheses.h:172
QString myHelpFileName
Definition: SMESHGUI_Hypotheses.h:173
void showEvent(QShowEvent *event)
Definition: SMESHGUI_Hypotheses.cxx:685
void onHelp()
Definition: SMESHGUI_Hypotheses.cxx:723
void setType(const QString &)
Definition: SMESHGUI_Hypotheses.cxx:759
void setCustomFrame(QFrame *)
Definition: SMESHGUI_Hypotheses.cxx:693
void setHIcon(const QPixmap &)
Definition: SMESHGUI_Hypotheses.cxx:754
virtual void reject()
Definition: SMESHGUI_Hypotheses.cxx:717
virtual void accept()
Definition: SMESHGUI_Hypotheses.cxx:702
Information about a hypothesis.
Definition: SMESHGUI_Hypotheses.h:180
QStringList OptionalHypos
list of optional hypotheses
Definition: SMESHGUI_Hypotheses.h:208
QString IconId
icon identifier
Definition: SMESHGUI_Hypotheses.h:194
QString ServerLibName
server library name
Definition: SMESHGUI_Hypotheses.h:191
QString Label
label
Definition: SMESHGUI_Hypotheses.h:193
QStringList BasicHypos
list of basic hypotheses
Definition: SMESHGUI_Hypotheses.h:207
HypothesisData(const QString &, const QString &, const QString &, const QString &, const QString &, const QString &, const QString &, const int, const int, const QList< int > &, const bool, const QStringList &, const QStringList &, const QStringList &, const QStringList &, const int, const bool supportSub)
Definition: SMESHGUI_Hypotheses.cxx:764
bool IsAuxOrNeedHyp
TRUE if given HYPOTHESIS is auxiliary one, FALSE otherwise.
Definition: SMESHGUI_Hypotheses.h:199
int GroupID
group ID (staring from zero)
Definition: SMESHGUI_Hypotheses.h:196
QString Context
["GLOBAL","LOCAL","ANY"(default)]
Definition: SMESHGUI_Hypotheses.h:195
int Priority
integer, priority within the group
Definition: SMESHGUI_Hypotheses.h:197
QList< int > Dim
list of supported dimensions (see SMESH::Dimension enumeration)
Definition: SMESHGUI_Hypotheses.h:198
int IsNeedGeometry
1 if the algorithm works with shapes only,
Definition: SMESHGUI_Hypotheses.h:201
QStringList OutputTypes
list of types of generated elements
Definition: SMESHGUI_Hypotheses.h:210
QString TypeName
hypothesis type name
Definition: SMESHGUI_Hypotheses.h:189
QString ClientLibName
client library name
Definition: SMESHGUI_Hypotheses.h:192
bool IsSupportSubmeshes
TRUE if the algorithm building all-dim elems supports sub-meshes.
Definition: SMESHGUI_Hypotheses.h:204
QString PluginName
plugin name
Definition: SMESHGUI_Hypotheses.h:190
QStringList InputTypes
list of element types required as a prerequisite
Definition: SMESHGUI_Hypotheses.h:209
Definition: SMESHGUI_Hypotheses.h:83
QString myName
Definition: SMESHGUI_Hypotheses.h:84
const char * text() const
Definition: SMESHGUI_Hypotheses.h:92
bool isVariable
Definition: SMESHGUI_Hypotheses.h:86
QByteArray myTextAsBytes
Definition: SMESHGUI_Hypotheses.h:88
QString myText
Definition: SMESHGUI_Hypotheses.h:87
void setNoName()
Definition: SMESHGUI_Hypotheses.h:95
bool hasName() const
Definition: SMESHGUI_Hypotheses.h:96
QVariant myValue
Definition: SMESHGUI_Hypotheses.h:85
StdParam()
Definition: SMESHGUI_Hypotheses.h:89