X-Git-Url: http://git.salome-platform.org/gitweb/?p=modules%2Fsmesh.git;a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI_HypothesesUtils.cxx;h=8f4d0e782ba511a70ec32df4e04a723ab096fede;hp=5d47d4c1909a8611f20996ffaacb06e9c9a0f65e;hb=9ed19e02e901a0d6dc2d44b2251051ac1eaf000e;hpb=220083d44c2de174a49cc9e6b214a8b6df2db284 diff --git a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx index 5d47d4c19..8f4d0e782 100644 --- a/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx +++ b/src/SMESHGUI/SMESHGUI_HypothesesUtils.cxx @@ -1,49 +1,54 @@ // Copyright (C) 2003 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 -// +// 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.opencascade.org/SALOME/ or email : webmaster.salome@opencascade.org -#include -#include - -#include - -#include "QAD.h" -#include "QAD_Tools.h" -#include "QAD_Config.h" -#include "QAD_Desktop.h" -#include "QAD_MessageBox.h" -#include "QAD_WaitCursor.h" -#include "QAD_ResourceMgr.h" - -#include "SALOMEGUI_QtCatchCorbaException.hxx" - #include "SMESHGUI_HypothesesUtils.h" + +#include "SMESHGUI.h" #include "SMESHGUI_Hypotheses.h" #include "SMESHGUI_XmlHandler.h" -#include "SMESHGUI.h" - #include "SMESHGUI_Utils.h" #include "SMESHGUI_GEOMGenUtils.h" -#include "SMESHGUI_SMESHGenUtils.h" + +#include "SUIT_Tools.h" +#include "SUIT_Desktop.h" +#include "SUIT_MessageBox.h" +#include "SUIT_OverrideCursor.h" +#include "SUIT_ResourceMgr.h" +#include "SUIT_Session.h" + +#include "OB_Browser.h" + +#include "SalomeApp_Study.h" +#include "SalomeApp_Tools.h" +#include "SalomeApp_Application.h" + +#include +#include #include "SALOMEconfig.h" #include CORBA_CLIENT_HEADER(SALOMEDS_Attributes) +#include +#include + +#include + #ifdef _DEBUG_ static int MYDEBUG = 0; #else @@ -51,7 +56,7 @@ static int MYDEBUG = 0; #endif namespace SMESH{ - + using namespace std; typedef map THypothesisDataMap; @@ -61,12 +66,12 @@ namespace SMESH{ typedef map THypCreatorMap; THypCreatorMap myHypCreatorMap; - void addMap( const THypothesisDataMap& theMap, + void addMap(const THypothesisDataMap& theMap, THypothesisDataMap& toMap) { THypothesisDataMap::const_iterator it; - for ( it = theMap.begin(); it != theMap.end(); it++ ) - toMap.insert( *it ); + for (it = theMap.begin(); it != theMap.end(); it++) + toMap.insert(*it); } @@ -74,79 +79,80 @@ namespace SMESH{ SMESH::SMESH_Hypothesis_ptr theHyp, const bool theIsAddition) { - if ( theHypStatus > SMESH::HYP_OK ) { - + if (theHypStatus > SMESH::HYP_OK) { + // get Hyp name QString aHypName ("NULL Hypothesis"); - if ( !CORBA::is_nil( theHyp )) { - SALOMEDS::SObject_var Shyp = SMESH::FindSObject( theHyp ); - if ( !CORBA::is_nil( Shyp )) + if (!CORBA::is_nil(theHyp)) { + _PTR(SObject) Shyp = SMESH::FindSObject(theHyp); + if (Shyp) // name in study - aHypName = Shyp->GetName(); + aHypName = Shyp->GetName().c_str(); else // label in xml file - aHypName = GetHypothesisData( theHyp->GetName() )->Label; + aHypName = GetHypothesisData(theHyp->GetName())->Label; } // message - bool isFatal = ( theHypStatus >= SMESH::HYP_UNKNOWN_FATAL ); + bool isFatal = (theHypStatus >= SMESH::HYP_UNKNOWN_FATAL); QString aMsg; - if ( theIsAddition ) - aMsg = ( isFatal ? "SMESH_CANT_ADD_HYP" : "SMESH_ADD_HYP_WRN"); + if (theIsAddition) + aMsg = (isFatal ? "SMESH_CANT_ADD_HYP" : "SMESH_ADD_HYP_WRN"); else - aMsg = ( isFatal ? "SMESH_CANT_RM_HYP" : "SMESH_RM_HYP_WRN"); - - aMsg = QObject::tr( aMsg ).arg( aHypName ) + - QObject::tr( QString( "SMESH_HYP_%1" ).arg( theHypStatus )); - - QAD_MessageBox::warn1(QAD_Application::getDesktop(), - QObject::tr( "SMESH_WRN_WARNING" ), + aMsg = (isFatal ? "SMESH_CANT_RM_HYP" : "SMESH_RM_HYP_WRN"); + + aMsg = QObject::tr(aMsg).arg(aHypName) + + QObject::tr(QString("SMESH_HYP_%1").arg(theHypStatus)); + + SUIT_MessageBox::warn1(SMESHGUI::desktop(), + QObject::tr("SMESH_WRN_WARNING"), aMsg, - QObject::tr( "SMESH_BUT_OK" )); + QObject::tr("SMESH_BUT_OK")); } } void InitAvailableHypotheses() { - QAD_WaitCursor wc; + SUIT_OverrideCursor wc; if (myHypothesesMap.empty() && myAlgorithmsMap.empty()) { // Resource manager - QAD_ResourceMgr* resMgr = QAD_Desktop::createResourceManager(); + SUIT_ResourceMgr* resMgr = SMESHGUI::resourceMgr(); if (!resMgr) return; - + // Find name of a resource XML file ("SMESH_Meshers.xml"); QString HypsXml; char* cenv = getenv("SMESH_MeshersList"); if (cenv) HypsXml.sprintf("%s", cenv); - - QStringList HypsXmlList = QStringList::split( ":", HypsXml, false ); + + QStringList HypsXmlList = QStringList::split(":", HypsXml, false); if (HypsXmlList.count() == 0) { - QAD_MessageBox::error1(QAD_Application::getDesktop(), + SUIT_MessageBox::error1(SMESHGUI::desktop(), QObject::tr("SMESH_WRN_WARNING"), QObject::tr("MESHERS_FILE_NO_VARIABLE"), QObject::tr("SMESH_BUT_OK")); return; } - + // loop on files in HypsXml QString aNoAccessFiles; - for ( int i = 0; i < HypsXmlList.count(); i++ ) { + for (int i = 0; i < HypsXmlList.count(); i++) { QString HypsXml = HypsXmlList[ i ]; - + // Find full path to the resource XML file - QString xmlFile = HypsXml + ".xml"; - xmlFile = QAD_Tools::addSlash(resMgr->findFile(xmlFile, HypsXml)) + xmlFile; - - QFile file (QAD_Tools::unix2win(xmlFile)); + QString xmlFile = resMgr->path("resources", "SMESH", HypsXml + ".xml"); + if ( xmlFile.isEmpty() ) // try PLUGIN resources + xmlFile = resMgr->path("resources", HypsXml, HypsXml + ".xml"); + + QFile file (xmlFile); if (file.exists() && file.open(IO_ReadOnly)) { file.close(); - + SMESHGUI_XmlHandler* aXmlHandler = new SMESHGUI_XmlHandler(); ASSERT(aXmlHandler); - + QXmlInputSource source (file); QXmlSimpleReader reader; reader.setContentHandler(aXmlHandler); @@ -154,11 +160,11 @@ namespace SMESH{ bool ok = reader.parse(source); file.close(); if (ok) { - addMap( aXmlHandler->myHypothesesMap, myHypothesesMap ); - addMap( aXmlHandler->myAlgorithmsMap, myAlgorithmsMap ); + addMap(aXmlHandler->myHypothesesMap, myHypothesesMap); + addMap(aXmlHandler->myAlgorithmsMap, myAlgorithmsMap); } else { - QAD_MessageBox::error1(QAD_Application::getDesktop(), + SUIT_MessageBox::error1(SMESHGUI::desktop(), QObject::tr("INF_PARSE_ERROR"), QObject::tr(aXmlHandler->errorProtocol()), QObject::tr("SMESH_BUT_OK")); @@ -171,17 +177,17 @@ namespace SMESH{ aNoAccessFiles += ", " + xmlFile; } } // end loop - - + + if (!aNoAccessFiles.isEmpty()) { QString aMess = QObject::tr("MESHERS_FILE_CANT_OPEN") + " " + aNoAccessFiles + "\n"; aMess += QObject::tr("MESHERS_FILE_CHECK_VARIABLE"); - wc.stop(); - QAD_MessageBox::warn1(QAD_Application::getDesktop(), + wc.suspend(); + SUIT_MessageBox::warn1(SMESHGUI::desktop(), QObject::tr("SMESH_WRN_WARNING"), aMess, QObject::tr("SMESH_BUT_OK")); - wc.start(); + wc.resume(); } } } @@ -190,10 +196,10 @@ namespace SMESH{ QStringList GetAvailableHypotheses(const bool isAlgo) { QStringList aHypList; - + // Init list of available hypotheses, if needed InitAvailableHypotheses(); - + // fill list of hypotheses/algorithms THypothesisDataMap::iterator anIter; if (isAlgo) { @@ -208,10 +214,10 @@ namespace SMESH{ aHypList.append(((*anIter).first).c_str()); } } - + return aHypList; } - + HypothesisData* GetHypothesisData (const char* aHypType) { @@ -237,7 +243,7 @@ namespace SMESH{ if(MYDEBUG) MESSAGE("Get HypothesisCreator for " << aHypType); SMESHGUI_GenericHypothesisCreator* aCreator = 0; - + // check, if creator for this hypothesis type already exists if (myHypCreatorMap.find(aHypType) != myHypCreatorMap.end()) { aCreator = myHypCreatorMap[aHypType]; @@ -270,7 +276,7 @@ namespace SMESH{ typedef SMESHGUI_GenericHypothesisCreator* (*GetHypothesisCreator) \ (QString aHypType, QString aServerLibName, SMESHGUI* aSMESHGUI); GetHypothesisCreator procHandle = - (GetHypothesisCreator)dlsym( libHandle, "GetHypothesisCreator" ); + (GetHypothesisCreator)dlsym(libHandle, "GetHypothesisCreator"); if (!procHandle) { if(MYDEBUG) MESSAGE("bad hypothesis client plugin library"); dlclose(libHandle); @@ -290,7 +296,7 @@ namespace SMESH{ } } catch (const SALOME::SALOME_Exception& S_ex) { - QtCatchCorbaException(S_ex); + SalomeApp_Tools::QtCatchCorbaException(S_ex); } } @@ -305,24 +311,29 @@ namespace SMESH{ if(MYDEBUG) MESSAGE("Create " << aHypType << " with name " << aHypName); SMESH::SMESH_Hypothesis_var Hyp; - + HypothesisData* aHypData = GetHypothesisData(aHypType); QString aServLib = aHypData->ServerLibName; - + try { - Hyp = SMESH::GetSMESHGen()->CreateHypothesis(aHypType, aServLib); + Hyp = SMESHGUI::GetSMESHGen()->CreateHypothesis(aHypType, aServLib); if (!Hyp->_is_nil()) { - SALOMEDS::SObject_var SHyp = SMESH::FindSObject(Hyp.in()); - if (!SHyp->_is_nil()) { - if ( strcmp(aHypName,"") != 0 ) - SMESH::SetName( SHyp, aHypName ); - GetActiveStudy()->updateObjBrowser(true); + _PTR(SObject) SHyp = SMESH::FindSObject(Hyp.in()); + if (SHyp) { + //if (strcmp(aHypName,"") != 0) + if (strlen(aHypName) > 0) + SMESH::SetName(SHyp, aHypName); + //SalomeApp_Application* app = + // dynamic_cast(SUIT_Session::session()->activeApplication()); + //if (app) + // app->objectBrowser()->updateTree(); + SMESHGUI::GetSMESHGUI()->updateObjBrowser(); return Hyp._retn(); } } } catch (const SALOME::SALOME_Exception & S_ex) { - QtCatchCorbaException(S_ex); + SalomeApp_Tools::QtCatchCorbaException(S_ex); } return SMESH::SMESH_Hypothesis::_nil(); @@ -332,29 +343,29 @@ namespace SMESH{ bool AddHypothesisOnMesh (SMESH::SMESH_Mesh_ptr aMesh, SMESH::SMESH_Hypothesis_ptr aHyp) { if(MYDEBUG) MESSAGE ("SMESHGUI::AddHypothesisOnMesh"); - int res = SMESH::HYP_UNKNOWN_FATAL; - QAD_WaitCursor wc; - - if ( !aMesh->_is_nil() ) { - SALOMEDS::SObject_var SM = SMESH::FindSObject( aMesh ); + int res = SMESH::HYP_UNKNOWN_FATAL; + SUIT_OverrideCursor wc; + + if (!aMesh->_is_nil()) { + _PTR(SObject) SM = SMESH::FindSObject(aMesh); GEOM::GEOM_Object_var aShapeObject = SMESH::GetShapeOnMeshOrSubMesh(SM); try { - res = aMesh->AddHypothesis( aShapeObject, aHyp ); - if ( res < SMESH::HYP_UNKNOWN_FATAL ) { - SALOMEDS::SObject_var SH = SMESH::FindSObject(aHyp); - if ( !SM->_is_nil() && !SH->_is_nil() ) { + res = aMesh->AddHypothesis(aShapeObject, aHyp); + if (res < SMESH::HYP_UNKNOWN_FATAL) { + _PTR(SObject) SH = SMESH::FindSObject(aHyp); + if (SM && SH) { SMESH::ModifiedMesh(SM, false); } } - if ( res > SMESH::HYP_OK ) { - wc.stop(); - processHypothesisStatus( res, aHyp, true ); - wc.start(); + if (res > SMESH::HYP_OK) { + wc.suspend(); + processHypothesisStatus(res, aHyp, true); + wc.resume(); } } - catch( const SALOME::SALOME_Exception& S_ex ) { - wc.stop(); - QtCatchCorbaException( S_ex ); + catch(const SALOME::SALOME_Exception& S_ex) { + wc.suspend(); + SalomeApp_Tools::QtCatchCorbaException(S_ex); res = SMESH::HYP_UNKNOWN_FATAL; } } @@ -364,164 +375,183 @@ namespace SMESH{ bool AddHypothesisOnSubMesh (SMESH::SMESH_subMesh_ptr aSubMesh, SMESH::SMESH_Hypothesis_ptr aHyp) { - if(MYDEBUG) MESSAGE( "SMESHGUI::AddHypothesisOnSubMesh() "); + if(MYDEBUG) MESSAGE("SMESHGUI::AddHypothesisOnSubMesh() "); int res = SMESH::HYP_UNKNOWN_FATAL; - QAD_WaitCursor wc; - - if ( !aSubMesh->_is_nil() && ! aHyp->_is_nil() ) { + SUIT_OverrideCursor wc; + + if (!aSubMesh->_is_nil() && ! aHyp->_is_nil()) { try { SMESH::SMESH_Mesh_var aMesh = aSubMesh->GetFather(); - SALOMEDS::SObject_var SsubM = SMESH::FindSObject( aSubMesh ); - GEOM::GEOM_Object_var aShapeObject = SMESH::GetShapeOnMeshOrSubMesh( SsubM ); - if ( !aMesh->_is_nil() && !SsubM->_is_nil() && !aShapeObject->_is_nil() ) { - res = aMesh->AddHypothesis( aShapeObject, aHyp ); - if ( res < SMESH::HYP_UNKNOWN_FATAL ) { - SALOMEDS::SObject_var meshSO = SMESH::FindSObject( aMesh ); - if ( !meshSO->_is_nil() ) - SMESH::ModifiedMesh( meshSO, false ); + _PTR(SObject) SsubM = SMESH::FindSObject(aSubMesh); + GEOM::GEOM_Object_var aShapeObject = SMESH::GetShapeOnMeshOrSubMesh(SsubM); + if (!aMesh->_is_nil() && SsubM && !aShapeObject->_is_nil()) { + res = aMesh->AddHypothesis(aShapeObject, aHyp); + if (res < SMESH::HYP_UNKNOWN_FATAL) { + _PTR(SObject) meshSO = SMESH::FindSObject(aMesh); + if (meshSO) + SMESH::ModifiedMesh(meshSO, false); } - if ( res > SMESH::HYP_OK ) { - wc.stop(); - processHypothesisStatus( res, aHyp, true ); - wc.start(); + if (res > SMESH::HYP_OK) { + wc.suspend(); + processHypothesisStatus(res, aHyp, true); + wc.resume(); } } else { - SCRUTE( aHyp->_is_nil() ); - SCRUTE( aMesh->_is_nil() ); - SCRUTE( SsubM->_is_nil() ); - SCRUTE( aShapeObject->_is_nil() ); + SCRUTE(aHyp->_is_nil()); + SCRUTE(aMesh->_is_nil()); + SCRUTE(!SsubM); + SCRUTE(aShapeObject->_is_nil()); } } - catch( const SALOME::SALOME_Exception& S_ex ) { - wc.stop(); - QtCatchCorbaException( S_ex ); + catch(const SALOME::SALOME_Exception& S_ex) { + wc.suspend(); + SalomeApp_Tools::QtCatchCorbaException(S_ex); res = SMESH::HYP_UNKNOWN_FATAL; } } else { - SCRUTE( aSubMesh->_is_nil() ); - SCRUTE( aHyp->_is_nil() ); + SCRUTE(aSubMesh->_is_nil()); + SCRUTE(aHyp->_is_nil()); } return res < SMESH::HYP_UNKNOWN_FATAL; } - + bool RemoveHypothesisOrAlgorithmOnMesh (const Handle(SALOME_InteractiveObject)& IObject) { int res = SMESH::HYP_UNKNOWN_FATAL; - QAD_WaitCursor wc; - - if (IObject->hasReference()) { - try { - SALOMEDS::Study_var aStudy = GetActiveStudyDocument(); - SMESH_Hypothesis_var anHyp = IObjectToInterface(IObject); - SALOMEDS::SObject_var aHypSObj = aStudy->FindObjectID(IObject->getReference()); - if (!aHypSObj->_is_nil()) { - SALOMEDS::SObject_var MorSM = SMESH::GetMeshOrSubmesh(aHypSObj); - if (!MorSM->_is_nil()) { + SUIT_OverrideCursor wc; + + try { + _PTR(Study) aStudy = GetActiveStudyDocument(); + SMESH_Hypothesis_var anHyp = IObjectToInterface(IObject); + if (IObject->hasReference()) + { + if(MYDEBUG) MESSAGE("HAS REFERENCE " << IObject->getEntry()); + _PTR(SObject) aHypSObj = aStudy->FindObjectID(IObject->getReference()); + if (aHypSObj) { + _PTR(SObject) MorSM = SMESH::GetMeshOrSubmesh(aHypSObj); + if (MorSM) { GEOM::GEOM_Object_var aShape = SMESH::GetShapeOnMeshOrSubMesh(MorSM); if (!aShape->_is_nil()){ - SMESH::SMESH_Mesh_var aMesh = + SMESH::SMESH_Mesh_var aMesh = SMESH::SObjectToInterface(MorSM); SMESH::SMESH_subMesh_var aSubMesh = SMESH::SObjectToInterface(MorSM); - + if (!aSubMesh->_is_nil()) aMesh = aSubMesh->GetFather(); - + if (!aMesh->_is_nil()) { res = aMesh->RemoveHypothesis(aShape, anHyp); - if ( res < SMESH::HYP_UNKNOWN_FATAL ) { - SALOMEDS::SObject_var meshSO = SMESH::FindSObject( aMesh ); - if ( !meshSO->_is_nil() ) + if (res < SMESH::HYP_UNKNOWN_FATAL) { + _PTR(SObject) meshSO = SMESH::FindSObject(aMesh); + if (meshSO) SMESH::ModifiedMesh(meshSO, false); } - if ( res > SMESH::HYP_OK ) { - wc.stop(); - processHypothesisStatus( res, anHyp, false ); - wc.start(); + if (res > SMESH::HYP_OK) { + wc.suspend(); + processHypothesisStatus(res, anHyp, false); + wc.resume(); } } } } } } - catch( const SALOME::SALOME_Exception& S_ex ) { - wc.stop(); - QtCatchCorbaException( S_ex ); - res = SMESH::HYP_UNKNOWN_FATAL; + else if (IObject->hasEntry()) + { + if(MYDEBUG) MESSAGE("IObject entry HAS ENTRY " << IObject->getEntry()); + SObjectList meshList = GetMeshesUsingAlgoOrHypothesis(anHyp); + for ( int i = 0; i < meshList.size(); ++i ) { + SMESH::SMESH_Mesh_var aMesh = + SMESH::SObjectToInterface( meshList[ i ]); + GEOM::GEOM_Object_var aShape = SMESH::GetShapeOnMeshOrSubMesh( meshList[ i ]); + if ( ! aMesh->_is_nil() && !aShape->_is_nil() ) { + res = aMesh->RemoveHypothesis(aShape, anHyp); + if ( res < SMESH::HYP_UNKNOWN_FATAL ) + SMESH::ModifiedMesh( meshList[ i ], false); + if ( res > SMESH::HYP_OK ) { + wc.suspend(); + processHypothesisStatus( res, anHyp, false ); + wc.resume(); + } + } + } } - } - else if (IObject->hasEntry()) { - if(MYDEBUG) MESSAGE("IObject entry " << IObject->getEntry()); + } + catch(const SALOME::SALOME_Exception& S_ex) { + wc.suspend(); + SalomeApp_Tools::QtCatchCorbaException(S_ex); + res = SMESH::HYP_UNKNOWN_FATAL; } return res < SMESH::HYP_UNKNOWN_FATAL; } - - bool RemoveHypothesisOrAlgorithmOnMesh (SALOMEDS::SObject_ptr MorSM, - SMESH::SMESH_Hypothesis_ptr anHyp) + + bool RemoveHypothesisOrAlgorithmOnMesh (_PTR(SObject) MorSM, + SMESH::SMESH_Hypothesis_ptr anHyp) { - SALOMEDS::SObject_var AHR, aRef; SALOMEDS::GenericAttribute_var anAttr; SALOMEDS::AttributeIOR_var anIOR; int res = SMESH::HYP_UNKNOWN_FATAL; - QAD_WaitCursor wc; - - if (!MorSM->_is_nil()) { + SUIT_OverrideCursor wc; + + if (MorSM) { try { - GEOM::GEOM_Object_var aShapeObject = SMESH::GetShapeOnMeshOrSubMesh(MorSM); - if (!aShapeObject->_is_nil()) { - SMESH::SMESH_Mesh_var aMesh = SMESH::SObjectToInterface(MorSM); + GEOM::GEOM_Object_var aShapeObject = SMESH::GetShapeOnMeshOrSubMesh(MorSM); + if (!aShapeObject->_is_nil()) { + SMESH::SMESH_Mesh_var aMesh = SMESH::SObjectToInterface(MorSM); SMESH::SMESH_subMesh_var aSubMesh = SMESH::SObjectToInterface(MorSM); - - if ( !aSubMesh->_is_nil() ) + + if (!aSubMesh->_is_nil()) aMesh = aSubMesh->GetFather(); - + if (!aMesh->_is_nil()) { res = aMesh->RemoveHypothesis(aShapeObject, anHyp); - if ( res < SMESH::HYP_UNKNOWN_FATAL ) { - SALOMEDS::SObject_var meshSO = SMESH::FindSObject( aMesh ); - if ( !meshSO->_is_nil() ) + if (res < SMESH::HYP_UNKNOWN_FATAL) { + _PTR(SObject) meshSO = SMESH::FindSObject(aMesh); + if (meshSO) SMESH::ModifiedMesh(meshSO, false); } - if ( res > SMESH::HYP_OK ) { - wc.stop(); - processHypothesisStatus( res, anHyp, false ); - wc.start(); + if (res > SMESH::HYP_OK) { + wc.suspend(); + processHypothesisStatus(res, anHyp, false); + wc.resume(); } } } - } catch( const SALOME::SALOME_Exception& S_ex ) { - wc.stop(); - QtCatchCorbaException( S_ex ); + } catch(const SALOME::SALOME_Exception& S_ex) { + wc.suspend(); + SalomeApp_Tools::QtCatchCorbaException(S_ex); res = SMESH::HYP_UNKNOWN_FATAL; } } return res < SMESH::HYP_UNKNOWN_FATAL; } - SALOMEDS::Study::ListOfSObject* GetMeshesUsingAlgoOrHypothesis( SMESH::SMESH_Hypothesis_ptr AlgoOrHyp ) + SObjectList GetMeshesUsingAlgoOrHypothesis(SMESH::SMESH_Hypothesis_ptr AlgoOrHyp) { - SALOMEDS::Study::ListOfSObject_var listSOmesh = - new SALOMEDS::Study::ListOfSObject; - listSOmesh->length(0); + SObjectList listSOmesh; + listSOmesh.resize(0); + unsigned int index = 0; if (!AlgoOrHyp->_is_nil()) { - SALOMEDS::SObject_var SO_Hypothesis = SMESH::FindSObject(AlgoOrHyp); - if (!SO_Hypothesis->_is_nil()) { - SALOMEDS::Study::ListOfSObject_var listSO = - GetActiveStudyDocument()->FindDependances(SO_Hypothesis); - if(MYDEBUG) MESSAGE("SMESHGUI::GetMeshesUsingAlgoOrHypothesis(): dependency number ="<length()); - for (unsigned int i = 0; i < listSO->length(); i++) { - SALOMEDS::SObject_ptr SO = listSO[i]; - if (!SO->_is_nil()) { - SALOMEDS::SObject_var aFather = SO->GetFather(); - if (!aFather->_is_nil()) { - SALOMEDS::SObject_var SOfatherFather = aFather->GetFather(); - if (!SOfatherFather->_is_nil()) { + _PTR(SObject) SO_Hypothesis = SMESH::FindSObject(AlgoOrHyp); + if (SO_Hypothesis) { + SObjectList listSO = + SMESHGUI::activeStudy()->studyDS()->FindDependances(SO_Hypothesis); + + if(MYDEBUG) MESSAGE("SMESHGUI::GetMeshesUsingAlgoOrHypothesis(): dependency number ="<GetFather(); + if (aFather) { + _PTR(SObject) SOfatherFather = aFather->GetFather(); + if (SOfatherFather) { if(MYDEBUG) MESSAGE("SMESHGUI::GetMeshesUsingAlgoOrHypothesis(): dependency added to list"); index++; - listSOmesh->length(index); + listSOmesh.resize(index); listSOmesh[index - 1] = SOfatherFather; } } @@ -529,8 +559,7 @@ namespace SMESH{ } } } - if(MYDEBUG) MESSAGE("SMESHGUI::GetMeshesUsingAlgoOrHypothesis(): completed"); - return listSOmesh._retn(); + if (MYDEBUG) MESSAGE("SMESHGUI::GetMeshesUsingAlgoOrHypothesis(): completed"); + return listSOmesh; } - }