Salome HOME
Join modifications from branch BR_DEBUG_3_2_0b1
[modules/smesh.git] / src / SMESHGUI / SMESHGUI_Hypotheses.h
index 85a621791352a3c0e44b500b07b6e12d93fa7da0..43ad6734c4137f77a01f2c51e8fb97df75eed6fb 100644 (file)
@@ -16,7 +16,7 @@
 //  License along with this library; if not, write to the Free Software 
 //  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA 
 // 
-//  See http://www.salome-platform.org or email : webmaster.salome@opencascade.org
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 //
 //
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SMESH_Hypothesis)
 
-// QT Includes
-#include <qstring.h>
-#include <qwidget.h>
+#include <QtxDialog.h>
+#include <qvariant.h>
 
-//=================================================================================
-// class    : SMESHGUI_GenericHypothesisCreator
-// purpose  :
-//=================================================================================
-class SMESHGUI_GenericHypothesisCreator
+class QVBoxLayout;
+class QPixmap;
+
+/*!
+ * \brief Auxiliary class for creation of hypotheses
+*/
+class SMESHGUI_GenericHypothesisCreator : public QObject
+{
+  Q_OBJECT
+
+public:
+  SMESHGUI_GenericHypothesisCreator( const QString& );
+  virtual ~SMESHGUI_GenericHypothesisCreator();
+
+          void create( const bool isAlgo, QWidget* );
+          void edit( SMESH::SMESH_Hypothesis_ptr, QWidget* );
+          void create( SMESH::SMESH_Hypothesis_ptr, QWidget* );
+  virtual bool checkParams() const = 0;
+
+  QString                     hypType() const;
+  bool                        isCreation() const;
+
+protected:
+  typedef struct
+  {
+    QString   myName;
+    QVariant  myValue;
+
+  } StdParam;
+
+  typedef QValueList<StdParam>   ListOfStdParams;
+  typedef QPtrList<QWidget>      ListOfWidgets;
+
+  SMESH::SMESH_Hypothesis_var hypothesis() const;
+  SMESH::SMESH_Hypothesis_var initParamsHypothesis() const;
+  const ListOfWidgets&        widgets() const;
+  ListOfWidgets&              changeWidgets();
+
+  virtual QFrame*  buildFrame    () = 0;
+          QFrame*  buildStdFrame ();
+  virtual void     retrieveParams() const = 0;
+  virtual QString  storeParams   () const = 0;
+  virtual bool     stdParams     ( ListOfStdParams& ) const;
+          bool     getStdParamFromDlg( ListOfStdParams& ) const;
+  static  QString  stdParamValues( const ListOfStdParams& );
+  virtual void     attuneStdWidget( QWidget*, const int ) const;
+  virtual QWidget* getCustomWidget( const StdParam &, QWidget* ) const;
+  virtual bool     getParamFromCustomWidget( StdParam& , QWidget* ) const;
+  virtual QString  caption() const;
+  virtual QPixmap  icon() const;
+  virtual QString  type() const;
+
+protected slots:
+  virtual void onValueChanged();
+
+private:
+          bool editHypothesis( SMESH::SMESH_Hypothesis_ptr, QWidget* );
+
+private:
+  SMESH::SMESH_Hypothesis_var  myHypo, myInitParamsHypo;
+  QString                      myHypType;
+  ListOfWidgets                myParamWidgets;
+  bool                         myIsCreate;
+};
+
+class SMESHGUI_HypothesisDlg : public QtxDialog
 {
-  public:
-  virtual void CreateHypothesis (const bool isAlgo, QWidget* parent) = 0;
-  virtual void EditHypothesis (SMESH::SMESH_Hypothesis_ptr theHyp) = 0;
+  Q_OBJECT
+
+public:
+  SMESHGUI_HypothesisDlg( SMESHGUI_GenericHypothesisCreator*, QWidget* );
+  virtual ~SMESHGUI_HypothesisDlg();
+
+          void setHIcon( const QPixmap& );
+          void setCustomFrame( QFrame* );
+          void setType( const QString& );
+
+protected slots:
+  virtual void accept();
+  void onHelp(); 
+
+private:
+  SMESHGUI_GenericHypothesisCreator*   myCreator;
+  QVBoxLayout*                         myLayout;
+  QLabel                              *myIconLabel, *myTypeLabel;
+  QString                              myHelpFileName;
 };
 
-//=================================================================================
-// class    : HypothesisData
-// purpose  :
-//=================================================================================
+/*!
+ * \brief Class containing information about hypothesis
+*/
 class HypothesisData
 {
  public:
-  HypothesisData (const QString& aPluginName,
-                 const QString& aServerLibName,
-                 const QString& aClientLibName,
-                 const QString& aLabel,
-                 const QString& anIconId) :
- PluginName(aPluginName),
- ServerLibName(aServerLibName),
- ClientLibName(aClientLibName),
- Label(aLabel),
- IconId(anIconId)
- {};
-
- QString PluginName;
- QString ServerLibName;
- QString ClientLibName;
- QString Label;
- QString IconId;
+  HypothesisData( const QString& theTypeName,
+                  const QString& thePluginName,
+                  const QString& theServerLibName,
+                  const QString& theClientLibName,
+                  const QString& theLabel,
+                  const QString& theIconId,
+                  const QValueList<int>& theDim,
+                  const bool theIsAux,
+                  const QStringList& theNeededHypos,
+                  const QStringList& theOptionalHypos,
+                  const QStringList& theInputTypes,
+                  const QStringList& theOutputTypes)
+    : TypeName( theTypeName ),
+    PluginName( thePluginName ),
+    ServerLibName( theServerLibName ),
+    ClientLibName( theClientLibName ),
+    Label( theLabel ),
+    IconId( theIconId ),
+    Dim( theDim ),
+    IsAux( theIsAux ),
+    NeededHypos( theNeededHypos ), OptionalHypos( theOptionalHypos ),
+    InputTypes( theInputTypes ), OutputTypes( theOutputTypes )
+    {};
+
+ QString TypeName;        //!< hypothesis type name
+ QString PluginName;      //!< plugin name
+ QString ServerLibName;   //!< server library name
+ QString ClientLibName;   //!< client library name
+ QString Label;           //!< label
+ QString IconId;          //!< icon identifier
+ QValueList<int> Dim;     //!< list of supported dimensions (see SMESH::Dimension enumeration)
+ bool IsAux;              //!< TRUE if given hypothesis is auxiliary one, FALSE otherwise
+
+ // for algorithm only: dependencies algo <-> algo and algo -> hypos
+ QStringList NeededHypos;  //!< list of obligatory hypotheses
+ QStringList OptionalHypos;//!< list of optional hypotheses
+ QStringList InputTypes;   //!< list of element types required as a prerequisite
+ QStringList OutputTypes;  //!< list of types of generated elements
 };
 
+/*!
+ * \brief Class containing set of hypotheses
+ *
+ * Actually it contains list of hypo types
+ */
+class HypothesesSet
+{
+ public:
+  HypothesesSet( const QString& theSetName ) 
+    : HypoSetName( theSetName ) {};
+  HypothesesSet( const QString&     theSetName,
+                 const QStringList& theHypoList,
+                 const QStringList& theAlgoList )
+    : HypoSetName( theSetName ), HypoList(theHypoList), AlgoList(theAlgoList) {};
+  QString     HypoSetName;
+  QStringList HypoList, AlgoList;
+};
 #endif