X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_Hypotheses.h;h=49c3025141bcd703dc9b056a2ab6127928b6670d;hp=6eb03fa9bf5bcc28cdb834b3f72ceb873354884a;hb=a274ade365bd0f0e19d56c577acc4a13aa1972a7;hpb=c98d9fcd7f02c1f1f5c24dd3e709ed75228d66c4 diff --git a/src/SMESHGUI/SMESHGUI_Hypotheses.h b/src/SMESHGUI/SMESHGUI_Hypotheses.h index 6eb03fa9b..49c302514 100644 --- a/src/SMESHGUI/SMESHGUI_Hypotheses.h +++ b/src/SMESHGUI/SMESHGUI_Hypotheses.h @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2016 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2021 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,6 +160,7 @@ public: void setHIcon( const QPixmap& ); void setCustomFrame( QFrame* ); void setType( const QString& ); + void showEvent(QShowEvent *event); protected slots: virtual void accept(); @@ -173,10 +180,11 @@ struct HypothesisData { 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 @@ -185,11 +193,15 @@ struct HypothesisData 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 @@ -206,33 +218,54 @@ struct HypothesisData 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 ); - //this method sets internal index to -1, thus before any data access it is necessary to call next() - void init( bool ); + static SetType getPreferredHypType(); + static const char* getCommonHypoSetHypoType(); + //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; };