X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_HypothesesUtils.cxx;h=c1fc49bee78d6131bc95fe04ff1a9491d2ae4b1e;hp=fa29da180e0efe8ed73680d34caa0e020d9e08f2;hb=75d0234b452659c44159aaf33ed833af89a0ff4c;hpb=d6b7cb735f99cfc9d68fd3a44c0d4c456017f384 diff --git a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx index fa29da180..c1fc49bee 100644 --- a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx +++ b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 CEA/DEN, EDF R&D, OPEN CASCADE +// Copyright (C) 2007-2016 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 @@ -49,9 +49,7 @@ #include // Qt includes -#include #include -//#include // Other includes @@ -74,7 +72,7 @@ #endif #ifdef _DEBUG_ -static int MYDEBUG = 1; +static int MYDEBUG = 0; #else static int MYDEBUG = 0; #endif @@ -180,7 +178,8 @@ namespace SMESH void InitAvailableHypotheses() { SUIT_OverrideCursor wc; - if (myHypothesesMap.empty() && myAlgorithmsMap.empty()) { + if ( myHypothesesMap.empty() && myAlgorithmsMap.empty() ) + { // Resource manager SUIT_ResourceMgr* resMgr = SMESHGUI::resourceMgr(); if (!resMgr) return; @@ -283,14 +282,14 @@ namespace SMESH QStringList GetAvailableHypotheses( const bool isAlgo, const int theDim, const bool isAux, - const bool isNeedGeometry, + const bool hasGeometry, const bool isSubMesh) { QStringList aHypList; // Init list of available hypotheses, if needed InitAvailableHypotheses(); - bool checkGeometry = ( !isNeedGeometry && isAlgo ); + bool checkGeometry = ( isAlgo ); const char* context = isSubMesh ? "LOCAL" : "GLOBAL"; // fill list of hypotheses/algorithms THypothesisDataMap& pMap = isAlgo ? myAlgorithmsMap : myHypothesesMap; @@ -302,7 +301,8 @@ namespace SMESH ( theDim < 0 || aData->Dim.contains( theDim )) && ( isAlgo || aData->IsAuxOrNeedHyp == isAux ) && ( aData->Context == "ANY" || aData->Context == context ) && - ( !checkGeometry || aData->IsNeedGeometry == isNeedGeometry )) + ( !checkGeometry || (!aData->IsNeedGeometry || + ( aData->IsNeedGeometry > 0 ) == hasGeometry))) { aHypList.append(anIter.key()); } @@ -369,6 +369,90 @@ namespace SMESH return aHypData; } + //================================================================================ + /*! + * \brief Return the HypothesisData holding a name of a group of hypotheses + * a given hypothesis belongs to + */ + //================================================================================ + + HypothesisData* GetGroupTitle( const HypothesisData* hyp, const bool isAlgo ) + { + static std::vector< std::vector< HypothesisData > > theGroups; + if ( theGroups.empty() ) + { + theGroups.resize(14); // 14: isAlgo * 10 + dim + + QString dummyS("GROUP"); + QList dummyIL; dummyIL << 1; + QStringList dummySL; + HypothesisData group( dummyS,dummyS,dummyS,dummyS,dummyS,dummyS,dummyS,-1,-1, + dummyIL, 0, dummySL,dummySL,dummySL,dummySL,0,0 ); + // no group + int key = 0; + theGroups[ key ].push_back( group ); + + // 1D algo + key = 11; + // 0: Basic + group.Label = "GROUP:" + QObject::tr( "SMESH_1D_ALGO_GROUP_BASIC" ); + theGroups[ key ].push_back( group ); + // 1: Advanced + group.Label = "GROUP:" + QObject::tr( "SMESH_1D_ALGO_GROUP_ADVANCED" ); + theGroups[ key ].push_back( group ); + + // 1D hypotheses + key = 01; + // 0: Basic + group.Label = "GROUP:" + QObject::tr( "SMESH_1D_HYP_GROUP_BASIC" ); + theGroups[ key ].push_back( group ); + // 1: Progression + group.Label = "GROUP:" + QObject::tr( "SMESH_1D_HYP_GROUP_PROGRESSION" ); + theGroups[ key ].push_back( group ); + // 2: Advanced + group.Label = "GROUP:" + QObject::tr( "SMESH_1D_HYP_GROUP_ADVANCED" ); + theGroups[ key ].push_back( group ); + + // 2D algo + key = 12; + // 0: Regular + group.Label = "GROUP:" + QObject::tr( "SMESH_2D_ALGO_GROUP_REGULAR" ); + theGroups[ key ].push_back( group ); + // 1: Free + group.Label = "GROUP:" + QObject::tr( "SMESH_2D_ALGO_GROUP_FREE" ); + theGroups[ key ].push_back( group ); + // 2: Advanced + group.Label = "GROUP:" + QObject::tr( "SMESH_2D_ALGO_GROUP_ADVANCED" ); + theGroups[ key ].push_back( group ); + + // 3D algo + key = 13; + // 0: Regular + group.Label = "GROUP:" + QObject::tr( "SMESH_3D_ALGO_GROUP_REGULAR" ); + theGroups[ key ].push_back( group ); + // 1: Free + group.Label = "GROUP:" + QObject::tr( "SMESH_3D_ALGO_GROUP_FREE" ); + theGroups[ key ].push_back( group ); + // 2: Advanced + group.Label = "GROUP:" + QObject::tr( "SMESH_3D_ALGO_GROUP_ADVANCED" ); + theGroups[ key ].push_back( group ); + } + + size_t key = 0, groupID = 0; + if ( hyp && !hyp->Dim.isEmpty() ) + { + key = hyp->Dim[0] + isAlgo * 10; + groupID = hyp->GroupID; + } + + if ( key < theGroups.size() && !theGroups[ key ].empty() ) + { + std::vector< HypothesisData > & group = theGroups[ key ]; + return & ( groupID < group.size() ? group[ groupID ] : group.back() ); + } + return & theGroups[ 0 ][ 0 ]; + } + bool IsAvailableHypothesis(const HypothesisData* algoData, const QString& hypType, bool& isAuxiliary) @@ -378,7 +462,7 @@ namespace SMESH return false; if ( algoData->BasicHypos.contains( hypType )) return true; - if ( algoData->OptionalHypos.contains( hypType)) { + if ( algoData->OptionalHypos.contains( hypType )) { isAuxiliary = true; return true; } @@ -629,7 +713,7 @@ namespace SMESH { SMESH_Hypothesis_var hypo = SMESH_Hypothesis::_narrow( SObjectToObject( aHypObj ) ); SObjectList meshList = GetMeshesUsingAlgoOrHypothesis( hypo ); - for( int i = 0; i < meshList.size(); i++ ) + for( size_t i = 0; i < meshList.size(); i++ ) RemoveHypothesisOrAlgorithmOnMesh( meshList[ i ], hypo ); } } @@ -729,7 +813,7 @@ namespace SMESH QString GetMessageOnAlgoStateErrors(const algo_error_array& errors) { QString resMsg; // PAL14861 = QObject::tr("SMESH_WRN_MISSING_PARAMETERS") + ":\n"; - for ( int i = 0; i < errors.length(); ++i ) { + for ( size_t i = 0; i < errors.length(); ++i ) { const SMESH::AlgoStateError & error = errors[ i ]; const bool hasAlgo = ( strlen( error.algoName ) != 0 ); QString msg;