X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_Hypotheses.h;h=34b875fa3814b0e37c345d46928035b698228af9;hp=fba15ebd198e33e7ce5b91ac66bae03bb8e6a244;hb=6650dea1f85dd5c640829d6e0391d703a304a152;hpb=79b1ac2b6df9117f16f11d444b1f165d477a1813 diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.h b/src/SMESHGUI/SMESHGUI_Hypotheses.h index fba15ebd1..34b875fa3 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.h +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.h @@ -1,43 +1,45 @@ -// SMESH SMESHGUI : GUI for SMESH component +// Copyright (C) 2007-2010 CEA/DEN, EDF R&D, OPEN CASCADE // -// Copyright (C) 2003 CEA -// -// This library is free software; you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public -// License as published by the Free Software Foundation; either -// version 2.1 of the License. -// -// This library is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// Lesser General Public License for more details. -// -// You should have received a copy of the GNU Lesser General Public -// 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.com +// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, +// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS // +// This library is free software; you can redistribute it and/or +// modify it under the terms of the GNU Lesser General Public +// License as published by the Free Software Foundation; either +// version 2.1 of the License. // +// This library is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// Lesser General Public License for more details. +// +// You should have received a copy of the GNU Lesser General Public +// 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.com // -// File : SMESHGUI_Hypotheses.h -// Author : Julia DOROVSKIKH -// Module : SMESH -// $Header$ -#ifndef SMESHGUI_Hypotheses_HeaderFile -#define SMESHGUI_Hypotheses_HeaderFile +// SMESH SMESHGUI : GUI for SMESH component +// File : SMESHGUI_Hypotheses.h +// Author : Julia DOROVSKIKH, Open CASCADE S.A.S. +// +#ifndef SMESHGUI_HYPOTHESES_H +#define SMESHGUI_HYPOTHESES_H +// SMESH includes #include "SMESH_SMESHGUI.hxx" +#include "SMESHGUI_HypothesesUtils.h" +// Qt includes +#include +#include + +// IDL includes #include #include CORBA_SERVER_HEADER(SMESH_Hypothesis) -#include -#include - -class QVBoxLayout; -class QPixmap; +class QEventLoop; /*! * \brief Auxiliary class for creation of hypotheses @@ -47,56 +49,78 @@ class SMESHGUI_EXPORT SMESHGUI_GenericHypothesisCreator : public QObject Q_OBJECT public: - SMESHGUI_GenericHypothesisCreator( const QString& theHypType ); + SMESHGUI_GenericHypothesisCreator( const QString& ); 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*); + void create( SMESH::SMESH_Hypothesis_ptr, + const QString&, QWidget*, QObject*, const QString& ); + void create( bool, const QString&, QWidget*, QObject*, const QString& ); + void edit( SMESH::SMESH_Hypothesis_ptr, const QString&, QWidget*, QObject*, const QString& ); + void setInitParamsHypothesis(SMESH::SMESH_Hypothesis_ptr); + + virtual bool checkParams( QString& ) const; + virtual void onReject(); + virtual QString helpPage() const; + + QString hypType() const; + QString hypName() const; + bool isCreation() const; + + QString getShapeEntry() const { return myShapeEntry; } + void setShapeEntry( const QString& theEntry ); - virtual bool checkParams() const = 0; - virtual void onReject(); + QString getMainShapeEntry() const { return myMainShapeEntry; } + void setMainShapeEntry( const QString& theEntry ) { myMainShapeEntry = theEntry; } - QString hypType() const; - QString hypName() const; - bool isCreation() const; +signals: + void finished( int ); protected: - typedef struct + struct StdParam { 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; + bool isVariable; + StdParam(){ + isVariable = false; + } + }; + + typedef QList ListOfStdParams; + typedef QList ListOfWidgets; + + SMESH::SMESH_Hypothesis_var hypothesis() const; + SMESH::SMESH_Hypothesis_var initParamsHypothesis(const bool strict=false) const; + bool hasInitParamsHypothesis() const; + const ListOfWidgets& widgets() const; + ListOfWidgets& changeWidgets(); + QtxDialog* dlg() const; + + 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; + virtual QStringList getVariablesFromDlg() 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 void valueChanged( QWidget* ); + virtual QString caption() const; + virtual QPixmap icon() const; + virtual QString type() const; protected slots: - virtual void onValueChanged(); + virtual void onValueChanged(); + +private slots: + virtual void onDialogFinished( int ); private: - bool editHypothesis( SMESH::SMESH_Hypothesis_ptr, const QString&, QWidget* ); + void editHypothesis( SMESH::SMESH_Hypothesis_ptr, const QString&, QWidget*, QObject* obj, const QString& ); private: SMESH::SMESH_Hypothesis_var myHypo, myInitParamsHypo; @@ -105,6 +129,8 @@ private: ListOfWidgets myParamWidgets; bool myIsCreate; QtxDialog* myDlg; + QString myShapeEntry; + QString myMainShapeEntry; }; class SMESHGUI_HypothesisDlg : public QtxDialog @@ -125,11 +151,9 @@ protected slots: void onHelp(); private: - SMESHGUI_GenericHypothesisCreator* myCreator; - QVBoxLayout* myLayout; - QLabel* myIconLabel; - QLabel* myTypeLabel; - QString myHelpFileName; + SMESHGUI_GenericHypothesisCreator* myCreator; + QLabel *myIconLabel, *myTypeLabel; + QString myHelpFileName; }; /*! @@ -137,48 +161,30 @@ private: */ class HypothesisData { - public: - 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, - 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 - QString Label; //!< label - 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 +public: + HypothesisData( const QString&, const QString&, const QString&, + const QString&, const QString&, const QString&, + const QList&, const bool, + const QStringList&, const QStringList&, + const QStringList&, const QStringList&, + const bool=true, const bool supportSub=false ); + + 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 + QList Dim; //!< list of supported dimensions (see SMESH::Dimension enumeration) + bool IsAux; //!< TRUE if given hypothesis is auxiliary one, FALSE otherwise + bool IsNeedGeometry; //!< TRUE if the algorithm works with shapes only, FALSE otherwise + bool IsSupportSubmeshes; //!< TRUE if the algo building all-dim elems supports submeshes + + // 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 }; /*! @@ -188,14 +194,32 @@ class HypothesisData */ 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; +public: + HypothesesSet( const QString& ); + HypothesesSet( const QString&, const QStringList&, const QStringList& ); + + QString name() const; + void set( bool, const QStringList& ); + int count( bool ) const; + + bool isAlgo() const; + + //this method sets internal index to -1, thus before any data access it is necessary to call next() + void init( bool ); + + bool more() const; + void next(); + QString current() const; + +private: + QStringList* list(bool) const; + QStringList* list() const; + +private: + bool myIsAlgo; + QString myHypoSetName; + QStringList myHypoList, myAlgoList; + int myIndex; }; -#endif + +#endif // SMESHGUI_HYPOTHESES_H