X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FSMESHGUI%2FSMESHGUI.cxx;h=e13acafd339df6d027b1ba45db26e146ea4ca8fc;hb=6a1c128a1ee1074cb4af360309c3403471d20b1e;hp=0227331c157aedf75546969f4c9d029c71ba632f;hpb=e292bda630ab4962307e7c2b2a1524710a0d3b61;p=modules%2Fsmesh.git diff --git a/src/SMESHGUI/SMESHGUI.cxx b/src/SMESHGUI/SMESHGUI.cxx index 0227331c1..e13acafd3 100644 --- a/src/SMESHGUI/SMESHGUI.cxx +++ b/src/SMESHGUI/SMESHGUI.cxx @@ -184,7 +184,6 @@ namespace{ if(!filename.isEmpty()) { SUIT_OverrideCursor wc; _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); - theComponentMesh->SetCurrentStudy( _CAST(Study,aStudy)->GetStudy() ); try { SMESH::mesh_array_var aMeshes = new SMESH::mesh_array; @@ -1063,10 +1062,6 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) if( !mgr ) return false; - if (CORBA::is_nil(GetSMESHGen()->GetCurrentStudy())) { - GetSMESHGen()->SetCurrentStudy(_CAST(Study,aStudy)->GetStudy()); - } - SUIT_ViewWindow* view = application()->desktop()->activeWindow(); SVTK_ViewWindow* vtkwnd = dynamic_cast( view ); @@ -1168,6 +1163,9 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) if (aSel) aSel->selectedObjects( sel_objects ); + if( theCommandID==302 ) + startOperation( myEraseAll ); + SALOME_ListIteratorOfListIO anIt( sel_objects ); for( ; anIt.More(); anIt.Next() ) { @@ -1268,10 +1266,11 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) case 701: // COMPUTE MESH { if(checkLock(aStudy)) break; - if ( vtkwnd ) { - LightApp_SelectionMgr *Sel = selectionMgr(); - SALOME_ListIO selected; Sel->selectedObjects( selected ); + LightApp_SelectionMgr *Sel = selectionMgr(); + SALOME_ListIO selected; Sel->selectedObjects( selected ); + + if ( vtkwnd ) { int nbSel = selected.Extent(); if (nbSel != 1){ break; @@ -1280,7 +1279,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) SMESH::SMESH_Mesh_var aMesh; SMESH::SMESH_subMesh_var aSubMesh; Handle(SALOME_InteractiveObject) IObject = selected.First(); - if (IObject->hasEntry()){ + if (IObject->hasEntry()) { _PTR(SObject) aMeshSObj = aStudy->FindObjectID(IObject->getEntry()); GEOM::GEOM_Object_var aShapeObject = SMESH::GetShapeOnMeshOrSubMesh( aMeshSObj ); if ( aShapeObject->_is_nil() ) { @@ -1288,69 +1287,50 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) break; } if( aMeshSObj ) { - SMESH::SMESH_Mesh_var aMesh = SMESH::SObjectToInterface(aMeshSObj); - SMESH::SMESH_subMesh_var aSubMesh = SMESH::SObjectToInterface(aMeshSObj); - - if (!aMesh->_is_nil()){ - GEOM::GEOM_Object_var refShapeObject = SMESH::GetShapeOnMeshOrSubMesh(aMeshSObj); - if (!refShapeObject->_is_nil()) { - if(!GetSMESHGen()->IsReadyToCompute(aMesh,refShapeObject)){ - SUIT_MessageBox::warn1(desktop(), - tr("SMESH_WRN_WARNING"), - tr("SMESH_WRN_MISSING_PARAMETERS"), - tr("SMESH_BUT_OK")); - break; - } - try{ - if (GetSMESHGen()->Compute(aMesh,refShapeObject)) - SMESH::ModifiedMesh(aMeshSObj,true); - // TO Do : change icon of all submeshes - else - SUIT_MessageBox::warn1(desktop(), - tr("SMESH_WRN_WARNING"), - tr("SMESH_WRN_COMPUTE_FAILED"), - tr("SMESH_BUT_OK")); - } - catch(const SALOME::SALOME_Exception & S_ex){ - SalomeApp_Tools::QtCatchCorbaException(S_ex); - } - } - }else if(!aSubMesh->_is_nil()){ + aMesh = SMESH::SObjectToInterface(aMeshSObj); + aSubMesh = SMESH::SObjectToInterface(aMeshSObj); + if ( !aSubMesh->_is_nil() ) aMesh = aSubMesh->GetFather(); - GEOM::GEOM_Object_var refShapeObject = SMESH::GetShapeOnMeshOrSubMesh(aMeshSObj); - if(!refShapeObject->_is_nil()){ - bool compute = GetSMESHGen()->IsReadyToCompute(aMesh,refShapeObject); - if(!compute){ - SUIT_MessageBox::warn1(desktop(), - tr("SMESH_WRN_WARNING"), - tr("SMESH_WRN_MISSING_PARAMETERS"), - tr("SMESH_BUT_OK")); - break; - } - try{ - if ( GetSMESHGen()->Compute(aMesh,refShapeObject) ) - SMESH::ModifiedMesh(aMeshSObj,true); - // TO Do : change icon of all submeshes - else - SUIT_MessageBox::warn1(desktop(), - tr("SMESH_WRN_WARNING"), - tr("SMESH_WRN_COMPUTE_FAILED"), - tr("SMESH_BUT_OK")); - }catch(const SALOME::SALOME_Exception & S_ex){ - SalomeApp_Tools::QtCatchCorbaException(S_ex); - } - } - } + + if (!aMesh->_is_nil()) { +// if(!GetSMESHGen()->IsReadyToCompute(aMesh,aShapeObject)) { +// SUIT_MessageBox::warn1(desktop(), +// tr("SMESH_WRN_WARNING"), +// tr("SMESH_WRN_MISSING_PARAMETERS"), +// tr("SMESH_BUT_OK")); +// break; +// } + SMESH::algo_error_array_var errors = GetSMESHGen()->GetAlgoState(aMesh,aShapeObject); + if ( errors->length() > 0 ) { + SUIT_MessageBox::warn1(desktop(), + tr("SMESH_WRN_WARNING"), + SMESH::GetMessageOnAlgoStateErrors( errors.in() ), + tr("SMESH_BUT_OK")); + break; + } + try{ + if (GetSMESHGen()->Compute(aMesh,aShapeObject)) + SMESH::ModifiedMesh(aMeshSObj,true); + else + SUIT_MessageBox::warn1(desktop(), + tr("SMESH_WRN_WARNING"), + tr("SMESH_WRN_COMPUTE_FAILED"), + tr("SMESH_BUT_OK")); + } + catch(const SALOME::SALOME_Exception & S_ex){ + SalomeApp_Tools::QtCatchCorbaException(S_ex); + } + } } } - CORBA::Long anId = aStudy->StudyId(); - TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId,IObject->getEntry()); - if ( automaticUpdate() && aVisualObj){ - aVisualObj->Update(); - SMESH_Actor* anActor = SMESH::FindActorByEntry(IObject->getEntry()); - if(!anActor){ - anActor = SMESH::CreateActor(aStudy,IObject->getEntry()); - if(anActor){ + CORBA::Long anId = aStudy->StudyId(); + TVisualObjPtr aVisualObj = SMESH::GetVisualObj(anId,IObject->getEntry()); + if ( automaticUpdate() && aVisualObj){ + aVisualObj->Update(); + SMESH_Actor* anActor = SMESH::FindActorByEntry(IObject->getEntry()); + if(!anActor){ + anActor = SMESH::CreateActor(aStudy,IObject->getEntry()); + if(anActor){ SMESH::DisplayActor(view,anActor); //apo SMESH::FitAll(); } @@ -1364,6 +1344,7 @@ bool SMESHGUI::OnGUIEvent( int theCommandID ) tr("SMESH_BUT_OK")); } updateObjBrowser(); + Sel->setSelectedObjects( selected ); break; } @@ -2221,7 +2202,10 @@ void SMESHGUI::createPopupItem( const int id, QChar lc = QtxPopupMgr::Selection::defEquality(); QString rule = "(%1) and (%2) and (%3)"; rule = rule.arg( QString( "%1>0" ).arg( QtxPopupMgr::Selection::defSelCountParam() ) ); - rule = rule.arg( QString( "%1client in {%2}" ).arg( lc ).arg( clients ) ); + if( clients.isEmpty() ) + rule = rule.arg( QString( "true" ) ); + else + rule = rule.arg( QString( "%1client in {%2}" ).arg( lc ).arg( clients ) ); rule = rule.arg( QString( "%1type in {%2}" ).arg( lc ).arg( types ) ); rule += theRule; @@ -2821,11 +2805,16 @@ void SMESHGUI::OnGUIEvent() SMESH::SMESH_Gen_var SMESHGUI::GetSMESHGen() { + _PTR(Study) aStudy = SMESH::GetActiveStudyDocument(); //Document OCAF de l'etude active if ( CORBA::is_nil( myComponentSMESH ) ) { SMESHGUI aGUI; //SRN BugID: IPAL9186: Create an instance of SMESHGUI to initialize myComponentSMESH + if ( aStudy ) + aGUI.myComponentSMESH->SetCurrentStudy(_CAST(Study,aStudy)->GetStudy()); return aGUI.myComponentSMESH; } + if ( aStudy ) + myComponentSMESH->SetCurrentStudy(_CAST(Study,aStudy)->GetStudy()); return myComponentSMESH; } @@ -3116,6 +3105,6 @@ LightApp_Operation* SMESHGUI::createOperation( const int id ) const LightApp_Displayer* SMESHGUI::displayer() { if( !myDisplayer ) - myDisplayer = new SMESHGUI_Displayer( dynamic_cast( getApp()->activeStudy() ) ); + myDisplayer = new SMESHGUI_Displayer( getApp() ); return myDisplayer; }