X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_Hypotheses.h;h=83da609d3cdcc04b7206f1dee4add797f8f1183b;hp=431ca2294c04d15c743108f7608644971ac8c26f;hb=036be279a4ab48c58fc6a5d08d9815d34208d503;hpb=4faf0496885699de7cd7007ba0711ff49a7fed20 diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.h b/src/SMESHGUI/SMESHGUI_Hypotheses.h index 431ca2294..83da609d3 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.h +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.h @@ -1,50 +1,168 @@ -// SMESH SMESHGUI : GUI for SMESH component +// Copyright (C) 2007-2013 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.org +// 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. // -// File : SMESHGUI_Hypotheses.h -// Author : Julia DOROVSKIKH -// Module : SMESH -// $Header$ +// 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 +// + +// 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" -#ifndef SMESHGUI_Hypotheses_HeaderFile -#define SMESHGUI_Hypotheses_HeaderFile +// Qt includes +#include +#include +// IDL includes #include #include CORBA_SERVER_HEADER(SMESH_Hypothesis) -// QT Includes -#include -#include -#include -#include +class QEventLoop; /*! * \brief Auxiliary class for creation of hypotheses */ -class SMESHGUI_GenericHypothesisCreator +class SMESHGUI_EXPORT SMESHGUI_GenericHypothesisCreator : public QObject +{ + Q_OBJECT + +public: + SMESHGUI_GenericHypothesisCreator( const QString& ); + virtual ~SMESHGUI_GenericHypothesisCreator(); + + 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 ); + + QString getMainShapeEntry() const { return myMainShapeEntry; } + void setMainShapeEntry( const QString& theEntry ) { myMainShapeEntry = theEntry; } + +signals: + void finished( int ); + +protected: + struct StdParam + { + QString myName; + QVariant myValue; + bool isVariable; + QString myText; + QByteArray myTextAsBytes; + StdParam() { + isVariable = false; + } + const char* text() const { + ((QByteArray&) myTextAsBytes) = myText.toLatin1(); return myTextAsBytes.constData(); + } + }; + + 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(); + QLabel* getLabel(int i) const; + QtxDialog* dlg() const; + QString getVariableName(const char* methodName) 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(); + +private slots: + virtual void onDialogFinished( int ); + +private: + void editHypothesis( SMESH::SMESH_Hypothesis_ptr, const QString&, QWidget*, QObject* obj, const QString& ); + +private: + SMESH::SMESH_Hypothesis_var myHypo, myInitParamsHypo; + bool myToDeleteInitParamsHypo; + QString myHypName; + QString myHypType; + ListOfWidgets myParamWidgets; + ListOfWidgets myParamLabels; + bool myIsCreate; + QtxDialog* myDlg; + QString myShapeEntry; + QString myMainShapeEntry; +}; + +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; + QLabel *myIconLabel, *myTypeLabel; + QString myHelpFileName; }; /*! @@ -52,30 +170,30 @@ class SMESHGUI_GenericHypothesisCreator */ class HypothesisData { - public: - HypothesisData( 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 ) - {}; - - 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 +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 }; /*! @@ -85,14 +203,36 @@ 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; + + void setIsCustom( bool ); + bool getIsCustom() const; + int maxDim() 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: + QString myHypoSetName; + QStringList myHypoList, myAlgoList; + bool myIsAlgo, myIsCustom; + int myIndex; }; -#endif + +#endif // SMESHGUI_HYPOTHESES_H