// 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
//
//
//
#ifndef SMESHGUI_Hypotheses_HeaderFile
#define SMESHGUI_Hypotheses_HeaderFile
+#include "SMESH_SMESHGUI.hxx"
+
+#include <SALOMEconfig.h>
#include CORBA_SERVER_HEADER(SMESH_Hypothesis)
-// QT Includes
-#include <qstring.h>
-#include <qwidget.h>
+#include <QtxDialog.h>
+#include <qvariant.h>
+
+class QVBoxLayout;
+class QPixmap;
-//=================================================================================
-// class : SMESHGUI_GenericHypothesisCreator
-// purpose :
-//=================================================================================
-class SMESHGUI_GenericHypothesisCreator
+/*!
+ * \brief Auxiliary class for creation of hypotheses
+*/
+class SMESHGUI_EXPORT SMESHGUI_GenericHypothesisCreator : public QObject
{
- public:
- virtual void CreateHypothesis (const bool isAlgo, QWidget* parent) = 0;
- virtual void EditHypothesis (SMESH::SMESH_Hypothesis_ptr theHyp) = 0;
+ 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 : HypothesisData
-// purpose :
-//=================================================================================
+class SMESHGUI_HypothesisDlg : public QtxDialog
+{
+ 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;
+};
+
+/*!
+ * \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