X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FVISUGUI%2FVisuGUI_Tools.cxx;h=757b1749ba1008371b112fd7f20a74af62b3c568;hb=e208a04edd5d8cebc0185834ecdf3faec4514f99;hp=978a4c24f0c010ad7cf0e2e503b9de443cd9308c;hpb=776278fcaf14fcaa6265ddca8116a6a0209aa375;p=modules%2Fvisu.git diff --git a/src/VISUGUI/VisuGUI_Tools.cxx b/src/VISUGUI/VisuGUI_Tools.cxx index 978a4c24..757b1749 100644 --- a/src/VISUGUI/VisuGUI_Tools.cxx +++ b/src/VISUGUI/VisuGUI_Tools.cxx @@ -28,6 +28,9 @@ #include "VisuGUI_Tools.h" +#include "VisuGUI.h" +#include "VisuGUI_ViewTools.h" + #include "VISU_Gen_i.hh" #include "VISU_Prs3d_i.hh" #include "VISU_Result_i.hh" @@ -42,15 +45,15 @@ #include "SalomeApp_Study.h" #include "SalomeApp_Application.h" -#include "OB_Browser.h" #include "LightApp_DataObject.h" #include "LightApp_SelectionMgr.h" +#include "OB_Browser.h" + #include "SALOME_ListIO.hxx" #include "SALOME_ListIteratorOfListIO.hxx" #include "SVTK_ViewWindow.h" -#include "SVTK_ViewModel.h" #include "SVTK_Functor.h" #include "VTKViewer_Algorithm.h" @@ -61,8 +64,6 @@ #include "SUIT_Session.h" #include "SUIT_MessageBox.h" -#include "VisuGUI.h" - #include #include @@ -366,6 +367,11 @@ namespace VISU for (; anIter.More(); anIter.Next()) { Handle(SALOME_InteractiveObject) anIO = anIter.Value(); if (anIO->hasEntry()) { + + // asv : if selected object is a Save Point object selected in object browser - return false + if ( QString( anIO->getEntry() ).startsWith( QObject::tr( "SAVE_POINT_DEF_NAME" ) ) ) + return false; + _PTR(SObject) aSObject = aStudy->FindObjectID(anIO->getEntry()); VISU::Storable::TRestoringMap pMap; if (aSObject) { @@ -421,49 +427,6 @@ namespace VISU return true; } - // Display/Erase - - void - ErasePrs (const SalomeApp_Module* theModule, - CORBA::Object_ptr theObject, bool theUpdate) - { - if (!CORBA::is_nil(theObject)) { - VISU::Base_var aBase = VISU::Base::_narrow(theObject); - if (CORBA::is_nil(aBase)) return; - VISU::VISUType aType = aBase->GetType(); - switch (aType) { - case VISU::TCURVE: - { - if (VISU::Curve_i* aCurve = dynamic_cast(VISU::GetServant(aBase).in())) - PlotCurve(theModule, aCurve, VISU::eErase ); - break; - } - case VISU::TCONTAINER: - { - if (VISU::Container_i* aContainer = dynamic_cast(VISU::GetServant(aBase).in())) - PlotContainer(theModule, aContainer, VISU::eErase ); - break; - } - case VISU::TTABLE: - { - if (VISU::Table_i* aTable = dynamic_cast(VISU::GetServant(aBase).in())) - PlotTable(theModule, aTable, VISU::eErase ); - break; - } - default: - { - if (VISU::Prs3d_i* aPrsObject = dynamic_cast(VISU::GetServant(aBase).in())) { - ErasePrs3d(theModule, aPrsObject); - if (theUpdate) { - if (SVTK_ViewWindow* vw = GetViewWindow(theModule)) - vw->Repaint(); - } - } - } - } // switch (aType) - } - } - void DeleteSObject(VisuGUI* theModule, _PTR(Study) theStudy, @@ -472,16 +435,13 @@ namespace VISU _PTR(ChildIterator) aChildIter = theStudy->NewChildIterator(theSObject); for (aChildIter->InitEx(true); aChildIter->More(); aChildIter->Next()) { _PTR(SObject) aChildSObject = aChildIter->Value(); - CORBA::Object_var aChildObj = VISU::ClientSObjectToObject(aChildSObject); - RemoveScalarBarPosition(theModule,aChildObj); - ErasePrs(theModule, aChildObj); + ErasePrs(theModule, aChildObj, /*repaint_view_window = */false); } CORBA::Object_var anObj = VISU::ClientSObjectToObject(theSObject); if (!CORBA::is_nil(anObj)) { - RemoveScalarBarPosition(theModule,anObj); - ErasePrs(theModule, anObj); + ErasePrs(theModule, anObj, /*repaint_view_window = */true); VISU::RemovableObject_var aRemovableObject = VISU::RemovableObject::_narrow(anObj); if (!CORBA::is_nil(aRemovableObject)) { @@ -506,19 +466,10 @@ namespace VISU if (CheckLock(GetCStudy(GetAppStudy(theModule)),GetDesktop(theModule))) return; - RemoveScalarBarPosition(theModule,thePrs); - thePrs->RemoveFromStudy(); - } + SVTK_ViewWindow* vw = GetActiveViewWindow(theModule); + RemoveScalarBarPosition(theModule, vw, thePrs); - void - ErasePrs3d(const SalomeApp_Module* theModule, - VISU::Prs3d_i* thePrs) - { - if ( SVTK_ViewWindow* vw = GetViewWindow( theModule ) ){ - if (VISU_Actor* anVISUActor = FindActor( vw, thePrs )) { - anVISUActor->VisibilityOff(); - } - } + thePrs->RemoveFromStudy(); } // Presentation management @@ -527,8 +478,8 @@ namespace VISU ChangeRepresentation (const SalomeApp_Module* theModule, VISU::PresentationType theType) { - SVTK_ViewWindow* vw = GetViewWindow( theModule, false ); - if( !vw ) + SVTK_ViewWindow* vw = GetActiveViewWindow(theModule); + if (!vw) return; Handle(SALOME_InteractiveObject) anIO; @@ -563,17 +514,15 @@ namespace VISU } } } - + void SetShading ( const SalomeApp_Module* theModule, bool theOn ) { - SUIT_ViewWindow* aView = GetActiveView(theModule, SVTK_Viewer::Type()); - if (!aView) return; - SVTK_ViewWindow* vw = dynamic_cast( aView ); - if( !vw ) + SVTK_ViewWindow* vw = GetActiveViewWindow(theModule); + if (!vw) return; - + Handle(SALOME_InteractiveObject) anIO; CORBA::Object_var anObject = GetSelectedObj(theModule, &anIO); if (CORBA::is_nil(anObject)) return; @@ -654,167 +603,30 @@ namespace VISU return dynamic_cast(VISU::GetServant(anObject).in()); } - // Views - - SUIT_ViewWindow* GetActiveView(const SalomeApp_Module* theModule, QString theType) - { - if(SalomeApp_Application* anApp = theModule->getApp()){ - if(SUIT_ViewManager* aViewManager = anApp->activeViewManager()){ - if (!theType.isNull()) { - if (aViewManager->getType() != theType) - return 0; - } - return aViewManager->getActiveView(); - } - } - return 0; - } - // VTK View - TViewWindows - GetViews(const SalomeApp_Module* theModule) - { - TViewWindows aViewWindows; - if(SalomeApp_Application* anApp = theModule->getApp()){ - ViewManagerList aViewManagerList; - anApp->viewManagers(SVTK_Viewer::Type(),aViewManagerList); - QPtrListIterator anIter(aViewManagerList); - while(SUIT_ViewManager* aViewManager = anIter.current()){ - QPtrVector aViews = aViewManager->getViews(); - for(int i = 0, iEnd = aViews.size(); i < iEnd; i++){ - if(SUIT_ViewWindow* aViewWindow = aViews.at(i)) - if(SVTK_ViewWindow* aView = dynamic_cast(aViewWindow)) - aViewWindows.push_back(aView); - } - ++anIter; - } - } - return aViewWindows; - } - - SVTK_ViewWindow* - GetViewWindow( const SalomeApp_Module* theModule, const bool theCreate ) - { - if (SalomeApp_Application* anApp = theModule->getApp()) - { - SVTK_ViewWindow* wnd = dynamic_cast(anApp->desktop()->activeWindow()); - if( wnd ) - return wnd; - else - { - SUIT_ViewManager* aViewManager = anApp->getViewManager( SVTK_Viewer::Type(), theCreate ); - return aViewManager ? dynamic_cast( aViewManager->getActiveView() ) : 0; - } - } - return NULL; - } - - /*SVTK_ViewWindow* - GetViewWindow(const SalomeApp_Module* theModule, const bool theCreate ) - { - if (SalomeApp_Application* anApp = theModule->getApp()) - { - SVTK_ViewWindow* wnd = dynamic_cast(anApp->desktop()->activeWindow()); - if( wnd ) - return wnd; - else - { - if(SUIT_ViewManager* aViewManager = anApp->getViewManager( SVTK_Viewer::Type(), theCreate )) - return dynamic_cast( aViewManager->getActiveView() ); - } - } - return NULL; - }*/ - - - SVTK_ViewWindow* - GetViewWindow() - { - SalomeApp_Application* anApp = dynamic_cast - (SUIT_Session::session()->activeApplication()); - if (anApp) { - if (SUIT_ViewManager* aViewManager = anApp->activeViewManager()) { - if (aViewManager->getType() == SVTK_Viewer::Type()) { - if (SUIT_ViewWindow* aViewWindow = aViewManager->getActiveView()) { - return dynamic_cast(aViewWindow); - } - } - } - } - return NULL; - } - VISU_Actor* - PublishInView(const SalomeApp_Module* theModule, - VISU::Prs3d_i* thePrs) + PublishMeshInView(const SalomeApp_Module* theModule, + VISU::Prs3d_i* thePrs, + SVTK_ViewWindow* theViewWindow) { VISU_Actor* aActor = NULL; - if(!thePrs) + if (!thePrs || !theViewWindow) return aActor; - if(SVTK_ViewWindow* aView = GetViewWindow(theModule)){ - QApplication::setOverrideCursor( Qt::waitCursor ); - try{ - if(aActor = thePrs->CreateActor()) - aView->AddActor(aActor); - }catch(std::exception& exc){ - SUIT_MessageBox::warn1 - (GetDesktop(theModule), QObject::tr("WRN_VISU"), - QObject::tr("ERR_CANT_CREATE_ACTOR") + ": " + QObject::tr(exc.what()), - QObject::tr("BUT_OK")); - } - QApplication::restoreOverrideCursor(); - } - return aActor; - } - VISU_Actor* - UpdateViewer(const SalomeApp_Module* theModule, - VISU::Prs3d_i* thePrs, - bool theDispOnly) - { - SVTK_ViewWindow* vw = GetViewWindow( theModule ); - if (!vw) return NULL; - - vtkRenderer *aRen = vw->getRenderer(); - vtkActorCollection *anActColl = aRen->GetActors(); - anActColl->InitTraversal(); - - vtkActor *anActor; - VISU_Actor* anVISUActor = NULL; - VISU_Actor* aResActor = NULL; - while(vtkActor *anActor = anActColl->GetNextActor()){ - anVISUActor = VISU_Actor::SafeDownCast(anActor); - if(anVISUActor){ - VISU::Prs3d_i* aPrs = anVISUActor->GetPrs3d(); - if(aPrs == NULL) continue; - if (thePrs == aPrs) { - try { - aResActor = anVISUActor; - thePrs->UpdateActor(aResActor); - aResActor->VisibilityOn(); - } catch (std::runtime_error& exc) { - aResActor->VisibilityOff(); - INFOS(exc.what()); - SUIT_MessageBox::warn1 - (GetDesktop(theModule), QObject::tr("WRN_VISU"), - QObject::tr("ERR_CANT_CREATE_ACTOR") + ": " + QObject::tr(exc.what()), - QObject::tr("BUT_OK")); - } - } else if (theDispOnly) { - anVISUActor->VisibilityOff(); - } else { - } - } else if (theDispOnly && anActor->GetVisibility()) { - anActor->VisibilityOff(); - } else { - } + QApplication::setOverrideCursor( Qt::waitCursor ); + try { + if (aActor = thePrs->CreateActor()) + theViewWindow->AddActor(aActor); + } catch(std::exception& exc) { + SUIT_MessageBox::warn1 + (GetDesktop(theModule), QObject::tr("WRN_VISU"), + QObject::tr("ERR_CANT_CREATE_ACTOR") + ": " + QObject::tr(exc.what()), + QObject::tr("BUT_OK")); } - if (aResActor) - return aResActor; + QApplication::restoreOverrideCursor(); - //anVISUActor = PublishInView( theModule, thePrs ); - return anVISUActor; + return aActor; } void @@ -1196,7 +1008,8 @@ namespace VISU // Others void CreateMesh (const SalomeApp_Module* theModule, - const Handle(SALOME_InteractiveObject)& theIO) + const Handle(SALOME_InteractiveObject)& theIO, + SVTK_ViewWindow* theViewWindow) { _PTR(Study) aStudy = GetCStudy(GetAppStudy(theModule)); //if (CheckLock(aStudy)) @@ -1243,7 +1056,7 @@ namespace VISU timer.Show(); #endif - QApplication::restoreOverrideCursor(); + //QApplication::restoreOverrideCursor(); VISU::Mesh_i* pPresent = NULL; if (!CORBA::is_nil(aMesh)) pPresent = dynamic_cast(VISU::GetServant(aMesh).in()); @@ -1255,23 +1068,19 @@ namespace VISU return; } - if (SVTK_ViewWindow* aView = GetViewWindow(theModule)) { + if (theViewWindow) { try { #ifdef CHECKTIME Utils_Timer timer; timer.Start(); #endif - PublishInView(theModule, pPresent); - //aView->onFitAll(); - SetFitAll(aView); + PublishMeshInView(theModule, pPresent, theViewWindow); + SetFitAll(theViewWindow); #ifdef CHECKTIME timer.Stop(); MESSAGE("VisuGUI::CreateMesh() - DISPLAY MESH"); timer.Show(); #endif - theModule->application()->putInfo(QObject::tr("INF_DONE")); - // Make "Save" button active - theModule->getApp()->updateActions(); } catch (std::runtime_error& exc) { INFOS(exc.what()); SUIT_MessageBox::warn1 @@ -1280,6 +1089,10 @@ namespace VISU QObject::tr("BUT_OK")); } } + + theModule->application()->putInfo(QObject::tr("INF_DONE")); + // Make "Save" button active + theModule->getApp()->updateActions(); } // ======================================================================================== @@ -1411,58 +1224,45 @@ namespace VISU } return aList; } - - int GetFreePositionOfDefaultScalarBar(VisuGUI* theModule){ + + int GetFreePositionOfDefaultScalarBar(VisuGUI* theModule, SVTK_ViewWindow* theViewWindow) + { int minIndx = 1; std::set aIndexes; - SVTK_ViewWindow* vw = GetViewWindow(theModule); TViewToPrs3d aMap = theModule->getScalarBarsMap(); - TViewToPrs3d::const_iterator aViewToPrsIter = aMap.find(vw); - if (aViewToPrsIter != aMap.end()){ + TViewToPrs3d::const_iterator aViewToPrsIter = aMap.find(theViewWindow); + if (aViewToPrsIter != aMap.end()) { TSetPrs3d::const_iterator aPrsIter = (aViewToPrsIter->second).begin(); - for(;aPrsIter!=(aViewToPrsIter->second).end();aPrsIter++){ + for (; aPrsIter != (aViewToPrsIter->second).end(); aPrsIter++) { aIndexes.insert((*aPrsIter).second); } } std::set::const_iterator aIter = aIndexes.begin(); - for (int i=1,length=aIndexes.size(); i <= length; i++){ + for (int i = 1,length = aIndexes.size(); i <= length; i++) { std::set::const_iterator aIter = aIndexes.find(i); - if(aIter==aIndexes.end()){minIndx = i;break;} + if (aIter == aIndexes.end()) { minIndx = i; break; } else minIndx = i + 1; - } return minIndx; } - - void AddScalarBarPosition(VisuGUI* theModule,VISU::Prs3d_i* thePrs3d, int pos){ - SVTK_ViewWindow* vw = GetViewWindow(theModule); + + void AddScalarBarPosition (VisuGUI* theModule, SVTK_ViewWindow* theViewWindow, + VISU::Prs3d_i* thePrs3d, int pos) + { TViewToPrs3d& aMap = theModule->myScalarBarsMap; - TPrs3dToInd aPair; aPair.first=thePrs3d; aPair.second=pos; - aMap[vw].insert(aPair); + TPrs3dToInd aPair; aPair.first = thePrs3d; aPair.second = pos; + aMap[theViewWindow].insert(aPair); } - - void RemoveScalarBarPosition(VisuGUI* theModule,SVTK_ViewWindow* vw,VISU::Prs3d_i* thePrs3d){ + + void RemoveScalarBarPosition(VisuGUI* theModule, SVTK_ViewWindow* theViewWindow, + VISU::Prs3d_i* thePrs3d) + { TViewToPrs3d& aMap = theModule->myScalarBarsMap; - TSetPrs3d::iterator aIter = aMap[vw].begin(); - for(;aIter!=aMap[vw].end();aIter++) - if((*aIter).first == thePrs3d){ - aMap[vw].erase(*aIter); + TSetPrs3d::iterator aIter = aMap[theViewWindow].begin(); + for (; aIter != aMap[theViewWindow].end(); aIter++) + if ((*aIter).first == thePrs3d) { + aMap[theViewWindow].erase(*aIter); return; } } - - void RemoveScalarBarPosition(VisuGUI* theModule,VISU::Prs3d_i* thePrs3d){ - SVTK_ViewWindow* vw = GetViewWindow(theModule); - RemoveScalarBarPosition(theModule,vw,thePrs3d); - } - - void RemoveScalarBarPosition(VisuGUI* theModule,CORBA::Object_ptr theObject){ - if (!CORBA::is_nil(theObject)) { - Base_var aBase = Base::_narrow(theObject); - if (CORBA::is_nil(aBase)) return; - if (VISU::Prs3d_i* aPrsObject = dynamic_cast(VISU::GetServant(aBase).in())){ - RemoveScalarBarPosition(theModule,aPrsObject); - } - } - } }