X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_Hypotheses.h;h=fb41e7adbdea80368e04ad0617c063be3bc82453;hp=c431014e7f675204479ba03f1617d65fb3924443;hb=499f29d24922cec66e41b41a0039a954993bc6df;hpb=bbca2cb797c37bb7695d3f35490bcd328fbddd4e diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.h b/src/SMESHGUI/SMESHGUI_Hypotheses.h index c431014e7..fb41e7adb 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.h +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2015 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2022 CEA/DEN, EDF R&D, OPEN CASCADE // // Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN, // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS @@ -72,6 +72,9 @@ public: QString getMainShapeEntry() const { return myMainShapeEntry; } void setMainShapeEntry( const QString& theEntry ) { myMainShapeEntry = theEntry; } + void setNoGeomMesh( const bool noGeom ) { myNoGeomMesh = noGeom; } + bool getNoGeomMesh() const { return myNoGeomMesh; } + signals: void finished( int ); @@ -87,8 +90,10 @@ protected: isVariable = false; } const char* text() const { - ((QByteArray&) myTextAsBytes) = myText.toLatin1(); return myTextAsBytes.constData(); + ((QByteArray&) myTextAsBytes) = myText.toUtf8(); return myTextAsBytes.constData(); } + void setNoName() { myName.clear(); } // ==> widget occupies both columns + bool hasName() const { return !myName.isEmpty(); } }; typedef QList ListOfStdParams; @@ -138,6 +143,7 @@ private: ListOfWidgets myParamWidgets; ListOfWidgets myParamLabels; bool myIsCreate; + bool myNoGeomMesh; //!< true for a mesh not based on geometry QtxDialog* myDlg; QString myShapeEntry; QString myMainShapeEntry; @@ -154,30 +160,31 @@ public: void setHIcon( const QPixmap& ); void setCustomFrame( QFrame* ); void setType( const QString& ); + void showEvent(QShowEvent *event); protected slots: virtual void accept(); virtual void reject(); - void onHelp(); + void onHelp(); -private: + private: SMESHGUI_GenericHypothesisCreator* myCreator; QLabel *myIconLabel, *myTypeLabel; QString myHelpFileName; }; /*! - * \brief Class containing information about hypothesis -*/ -class HypothesisData + * \brief Information about a hypothesis + */ +struct HypothesisData { -public: HypothesisData( const QString&, const QString&, const QString&, const QString&, const QString&, const QString&, - const QString&, const QList&, const bool, + const QString&, const int, const int, + const QList&, const bool, const QStringList&, const QStringList&, const QStringList&, const QStringList&, - const bool=true, const bool supportSub=false ); + const int, const bool supportSub ); QString TypeName; //!< hypothesis type name QString PluginName; //!< plugin name @@ -186,11 +193,15 @@ public: QString Label; //!< label QString IconId; //!< icon identifier QString Context; //!< ["GLOBAL","LOCAL","ANY"(default)] + int GroupID; //!< group ID (staring from zero) + int Priority; //!< integer, priority within the group QList Dim; //!< list of supported dimensions (see SMESH::Dimension enumeration) - bool IsAuxOrNeedHyp; //!< TRUE if given hypothesis is auxiliary one, FALSE otherwise - //!< TRUE if given algorithm can't work w/o hypotheses - bool IsNeedGeometry; //!< TRUE if the algorithm works with shapes only, FALSE otherwise - bool IsSupportSubmeshes; //!< TRUE if the algo building all-dim elems supports submeshes + bool IsAuxOrNeedHyp; //!< TRUE if given HYPOTHESIS is auxiliary one, FALSE otherwise + //!< TRUE if given ALGORITHM can't work w/o hypotheses + int IsNeedGeometry; //!< 1 if the algorithm works with shapes only, + //!< -1 if the algorithm works without shapes only, + //!< 0 if the algorithm works in both cases + bool IsSupportSubmeshes; //!< TRUE if the algorithm building all-dim elems supports sub-meshes // for algorithm only: dependencies algo <-> algo and algo -> hypos QStringList BasicHypos; //!< list of basic hypotheses @@ -207,33 +218,54 @@ public: class HypothesesSet { public: - HypothesesSet( const QString& ); - HypothesesSet( const QString&, const QStringList&, const QStringList& ); + + enum SetType { MAIN, ALT, INTERN, NB_HYP_TYPES }; //!< hypos/algos type: main, alternative, internal-edges + + //HypothesesSet( const QString& ); + HypothesesSet( const QString& name, + bool useCommonSize, bool isQuadDominated, + const QStringList& mainHypos, const QStringList& mainAlgos, + const QStringList& altHypos, const QStringList& altAlgos, + const QStringList& intHypos, const QStringList& intAlgos ); QString name() const; - void set( bool, const QStringList& ); - int count( bool ) const; + bool toUseCommonSize() const { return myUseCommonSize; } + bool isQuadDominated() const { return myQuadDominated; } + bool hasAlgo( SetType type ) const { return !myAlgoList[ type ].isEmpty(); } + //int count( bool, SetType ) const; + + int maxDim() const; void setIsCustom( bool ); bool getIsCustom() const; - int maxDim() const; - bool isAlgo() const; + void setAlgoAvailable( SetType type, bool isAvailable ); + bool getAlgoAvailable( SetType type ); + + static SetType getPreferredHypType(); + static const char* getCommonHypoSetHypoType(); - //this method sets internal index to -1, thus before any data access it is necessary to call next() - void init( bool ); + //bool isAlgo() const; + // CASCADE-like iteration + void init( bool, SetType ); bool more() const; void next(); QString current() const; private: - QStringList* list(bool) const; + QStringList* list(bool,SetType) const; QStringList* list() const; private: + bool myUseCommonSize; // Average size is asked only and used to create default hypotheses + bool myQuadDominated; QString myHypoSetName; - QStringList myHypoList, myAlgoList; + QStringList myHypoList[3], myAlgoList[3]; // per SetType + bool myIsAlgoAvailable[3]; // current state depending on geometry etc + + // iteration + SetType myHypType; bool myIsAlgo, myIsCustom; int myIndex; };