Salome HOME
Merge from OCC_development_generic_2006
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_Hypotheses.h
1 //  SMESH SMESHGUI : GUI for SMESH component
2 //
3 //  Copyright (C) 2003  CEA
4 // 
5 //  This library is free software; you can redistribute it and/or 
6 //  modify it under the terms of the GNU Lesser General Public 
7 //  License as published by the Free Software Foundation; either 
8 //  version 2.1 of the License. 
9 // 
10 //  This library is distributed in the hope that it will be useful, 
11 //  but WITHOUT ANY WARRANTY; without even the implied warranty of 
12 //  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
13 //  Lesser General Public License for more details. 
14 // 
15 //  You should have received a copy of the GNU Lesser General Public 
16 //  License along with this library; if not, write to the Free Software 
17 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
18 // 
19 //  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
20 //
21 //
22 //
23 //  File   : SMESHGUI_Hypotheses.h
24 //  Author : Julia DOROVSKIKH
25 //  Module : SMESH
26 //  $Header$
27
28 #ifndef SMESHGUI_Hypotheses_HeaderFile
29 #define SMESHGUI_Hypotheses_HeaderFile
30
31 #include <SALOMEconfig.h>
32 #include CORBA_SERVER_HEADER(SMESH_Hypothesis)
33
34 #include <QtxDialog.h>
35 #include <qvariant.h>
36
37 class QVBoxLayout;
38 class QPixmap;
39
40 /*!
41  * \brief Auxiliary class for creation of hypotheses
42 */
43 class SMESHGUI_GenericHypothesisCreator : public QObject
44 {
45   Q_OBJECT
46
47 public:
48   SMESHGUI_GenericHypothesisCreator( const QString& );
49   virtual ~SMESHGUI_GenericHypothesisCreator();
50
51           void create( const bool isAlgo, QWidget* );
52           void edit( SMESH::SMESH_Hypothesis_ptr, QWidget* );
53           void create( SMESH::SMESH_Hypothesis_ptr, QWidget* );
54   virtual bool checkParams() const = 0;
55
56   QString                     hypType() const;
57   bool                        isCreation() const;
58
59 protected:
60   typedef struct
61   {
62     QString   myName;
63     QVariant  myValue;
64
65   } StdParam;
66
67   typedef QValueList<StdParam>   ListOfStdParams;
68   typedef QPtrList<QWidget>      ListOfWidgets;
69
70   SMESH::SMESH_Hypothesis_var hypothesis() const;
71   SMESH::SMESH_Hypothesis_var initParamsHypothesis() const;
72   const ListOfWidgets&        widgets() const;
73   ListOfWidgets&              changeWidgets();
74
75   virtual QFrame*  buildFrame    () = 0;
76           QFrame*  buildStdFrame ();
77   virtual void     retrieveParams() const = 0;
78   virtual QString  storeParams   () const = 0;
79   virtual bool     stdParams     ( ListOfStdParams& ) const;
80           bool     getStdParamFromDlg( ListOfStdParams& ) const;
81   static  QString  stdParamValues( const ListOfStdParams& );
82   virtual void     attuneStdWidget( QWidget*, const int ) const;
83   virtual QWidget* getCustomWidget( const StdParam &, QWidget* ) const;
84   virtual bool     getParamFromCustomWidget( StdParam& , QWidget* ) const;
85   virtual QString  caption() const;
86   virtual QPixmap  icon() const;
87   virtual QString  type() const;
88
89 protected slots:
90   virtual void onValueChanged();
91
92 private:
93           bool editHypothesis( SMESH::SMESH_Hypothesis_ptr, QWidget* );
94
95 private:
96   SMESH::SMESH_Hypothesis_var  myHypo, myInitParamsHypo;
97   QString                      myHypType;
98   ListOfWidgets                myParamWidgets;
99   bool                         myIsCreate;
100 };
101
102 class SMESHGUI_HypothesisDlg : public QtxDialog
103 {
104   Q_OBJECT
105
106 public:
107   SMESHGUI_HypothesisDlg( SMESHGUI_GenericHypothesisCreator*, QWidget* );
108   virtual ~SMESHGUI_HypothesisDlg();
109
110           void setHIcon( const QPixmap& );
111           void setCustomFrame( QFrame* );
112           void setType( const QString& );
113
114 protected slots:
115   virtual void accept();
116
117 private:
118   SMESHGUI_GenericHypothesisCreator*   myCreator;
119   QVBoxLayout*                         myLayout;
120   QLabel                              *myIconLabel, *myTypeLabel;
121 };
122
123 /*!
124  * \brief Class containing information about hypothesis
125 */
126 class HypothesisData
127 {
128  public:
129   HypothesisData( const QString& thePluginName,
130                   const QString& theServerLibName,
131                   const QString& theClientLibName,
132                   const QString& theLabel,
133                   const QString& theIconId,
134                   const QValueList<int>& theDim,
135                   const bool theIsAux ) 
136 : PluginName( thePluginName ),
137   ServerLibName( theServerLibName ),
138   ClientLibName( theClientLibName ),
139   Label( theLabel ),
140   IconId( theIconId ),
141   Dim( theDim ),
142   IsAux( theIsAux )
143  {};
144
145  QString PluginName;      //!< plugin name
146  QString ServerLibName;   //!< server library name
147  QString ClientLibName;   //!< client library name
148  QString Label;           //!< label
149  QString IconId;          //!< icon identifier
150  QValueList<int> Dim;     //!< list of supported dimensions (see SMESH::Dimension enumeration)
151  bool IsAux;              //!< TRUE if given hypothesis is auxiliary one, FALSE otherwise
152 };
153
154 /*!
155  * \brief Class containing set of hypotheses
156  *
157  * Actually it contains list of hypo types
158  */
159 class HypothesesSet
160 {
161  public:
162   HypothesesSet( const QString& theSetName ) 
163     : HypoSetName( theSetName ) {};
164   HypothesesSet( const QString&     theSetName,
165                  const QStringList& theHypoList,
166                  const QStringList& theAlgoList )
167     : HypoSetName( theSetName ), HypoList(theHypoList), AlgoList(theAlgoList) {};
168   QString     HypoSetName;
169   QStringList HypoList, AlgoList;
170 };
171 #endif