X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FSMESHGUI%2FSMESHGUI_Hypotheses.h;h=fba15ebd198e33e7ce5b91ac66bae03bb8e6a244;hb=0f966be15063df14e00bda24b435c039adfa029c;hp=431ca2294c04d15c743108f7608644971ac8c26f;hpb=4faf0496885699de7cd7007ba0711ff49a7fed20;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.h b/src/SMESHGUI/SMESHGUI_Hypotheses.h index 431ca2294..fba15ebd1 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.h +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.h @@ -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 // // // @@ -28,23 +28,108 @@ #ifndef SMESHGUI_Hypotheses_HeaderFile #define SMESHGUI_Hypotheses_HeaderFile +#include "SMESH_SMESHGUI.hxx" + #include #include CORBA_SERVER_HEADER(SMESH_Hypothesis) -// QT Includes -#include -#include -#include -#include +#include +#include + +class QVBoxLayout; +class QPixmap; /*! * \brief Auxiliary class for creation of hypotheses */ -class SMESHGUI_GenericHypothesisCreator +class SMESHGUI_EXPORT SMESHGUI_GenericHypothesisCreator : public QObject +{ + Q_OBJECT + +public: + SMESHGUI_GenericHypothesisCreator( const QString& theHypType ); + virtual ~SMESHGUI_GenericHypothesisCreator(); + + void create( SMESH::SMESH_Hypothesis_ptr, const QString&, QWidget*); + void create( bool isAlgo, const QString&, QWidget*); + void edit( SMESH::SMESH_Hypothesis_ptr, const QString&, QWidget*); + + virtual bool checkParams() const = 0; + virtual void onReject(); + + QString hypType() const; + QString hypName() const; + bool isCreation() const; + +protected: + typedef struct + { + QString myName; + QVariant myValue; + + } StdParam; + + typedef QValueList ListOfStdParams; + typedef QPtrList ListOfWidgets; + + SMESH::SMESH_Hypothesis_var hypothesis() const; + SMESH::SMESH_Hypothesis_var initParamsHypothesis() const; + const ListOfWidgets& widgets() const; + ListOfWidgets& changeWidgets(); + QtxDialog* dlg() const { return myDlg; } + + 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 int ) 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, const QString&, QWidget* ); + +private: + SMESH::SMESH_Hypothesis_var myHypo, myInitParamsHypo; + QString myHypName; + QString myHypType; + ListOfWidgets myParamWidgets; + bool myIsCreate; + QtxDialog* myDlg; +}; + +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(); + virtual void reject(); + void onHelp(); + +private: + SMESHGUI_GenericHypothesisCreator* myCreator; + QVBoxLayout* myLayout; + QLabel* myIconLabel; + QLabel* myTypeLabel; + QString myHelpFileName; }; /*! @@ -53,22 +138,33 @@ class SMESHGUI_GenericHypothesisCreator class HypothesisData { public: - HypothesisData( const QString& thePluginName, + HypothesisData( const QString& theTypeName, + const QString& thePluginName, const QString& theServerLibName, const QString& theClientLibName, const QString& theLabel, const QString& theIconId, const QValueList& theDim, - const bool theIsAux ) -: PluginName( thePluginName ), - ServerLibName( theServerLibName ), - ClientLibName( theClientLibName ), - Label( theLabel ), - IconId( theIconId ), - Dim( theDim ), - IsAux( theIsAux ) - {}; + const bool theIsAux, + const QStringList& theNeededHypos, + const QStringList& theOptionalHypos, + const QStringList& theInputTypes, + const QStringList& theOutputTypes, + const bool theIsNeedGeometry = true) + : TypeName( theTypeName ), + PluginName( thePluginName ), + ServerLibName( theServerLibName ), + ClientLibName( theClientLibName ), + Label( theLabel ), + IconId( theIconId ), + Dim( theDim ), + IsAux( theIsAux ), + NeededHypos( theNeededHypos ), OptionalHypos( theOptionalHypos ), + InputTypes( theInputTypes ), OutputTypes( theOutputTypes ), + IsNeedGeometry( theIsNeedGeometry ) + {}; + QString TypeName; //!< hypothesis type name QString PluginName; //!< plugin name QString ServerLibName; //!< server library name QString ClientLibName; //!< client library name @@ -76,6 +172,13 @@ class HypothesisData QString IconId; //!< icon identifier QValueList Dim; //!< list of supported dimensions (see SMESH::Dimension enumeration) bool IsAux; //!< TRUE if given hypothesis is auxiliary one, FALSE otherwise + bool IsNeedGeometry; //!< TRUE if for given hypothesis need shape, 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 }; /*!