X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2FDisplayGUI%2FDisplayGUI.cxx;h=504f861f6063fbda972ddca7d698df5bcbf5cb87;hb=ef6997a915bc1eae6141b4182e69788ed10176c9;hp=b329a2f6209625ac91c08b1701dfa2df50582088;hpb=a994aaae9fdb6be17cd155fb34058e401825d620;p=modules%2Fgeom.git diff --git a/src/DisplayGUI/DisplayGUI.cxx b/src/DisplayGUI/DisplayGUI.cxx index b329a2f62..504f861f6 100644 --- a/src/DisplayGUI/DisplayGUI.cxx +++ b/src/DisplayGUI/DisplayGUI.cxx @@ -17,7 +17,7 @@ // 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 +// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // // // @@ -35,8 +35,6 @@ #include #include -#include -#include #include #include #include @@ -44,14 +42,16 @@ #include #include -#include +#include #include #include #include #include +#include + #include -#include +#include #include #include @@ -59,21 +59,6 @@ #include -DisplayGUI* DisplayGUI::myGUIObject = 0; - -//======================================================================= -// function : DisplayGUI::GetDisplayGUI() -// purpose : Get the only DisplayGUI object [ static ] -//======================================================================= -DisplayGUI* DisplayGUI::GetDisplayGUI( GeometryGUI* parent ) -{ - if ( myGUIObject == 0 ) { - // init DisplayGUI only once - myGUIObject = new DisplayGUI( parent ); - } - return myGUIObject; -} - //======================================================================= // function : DisplayGUI::DisplayGUI() // purpose : Constructor @@ -82,7 +67,6 @@ DisplayGUI::DisplayGUI( GeometryGUI* parent ) : GEOMGUI( parent ) { } - //======================================================================= // function : DisplayGUI::~DisplayGUI() // purpose : Destructor @@ -98,58 +82,68 @@ DisplayGUI::~DisplayGUI() //======================================================================= bool DisplayGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent) { - DisplayGUI* myDisplayGUI = GetDisplayGUI( getGeometryGUI() ); + SalomeApp_Application* app = getGeometryGUI()->getApp(); + if (!app) return false; + + LightApp_SelectionMgr *Sel = app->selectionMgr(); + SALOME_ListIO selected; + Sel->selectedObjects( selected ); switch (theCommandID) { case 211: // MENU VIEW - WIREFRAME/SHADING { - myDisplayGUI->InvertDisplayMode(); - int newMode = myDisplayGUI->GetDisplayMode(); - SUIT_Session::session()->activeApplication()->desktop()->menuBar()-> - changeItem( 211, newMode == 1 ? tr( "GEOM_MEN_WIREFRAME" ) : tr("GEOM_MEN_SHADING") ); + InvertDisplayMode(); + int newMode = GetDisplayMode(); + getGeometryGUI()->action( 211 )->setMenuText + ( newMode == 1 ? tr( "GEOM_MEN_WIREFRAME" ) : tr("GEOM_MEN_SHADING") ); + getGeometryGUI()->menuMgr()->update(); break; } case 212: // MENU VIEW - DISPLAY ALL { - myDisplayGUI->DisplayAll(); + getGeometryGUI()->EmitSignalDeactivateDialog(); + DisplayAll(); break; } case 213: // MENU VIEW - DISPLAY ONLY { - myDisplayGUI->DisplayOnly(); + getGeometryGUI()->EmitSignalDeactivateDialog(); + DisplayOnly(); break; } case 214: // MENU VIEW - ERASE ALL { - myDisplayGUI->EraseAll(); + EraseAll(); break; } case 215: // MENU VIEW - ERASE { - myDisplayGUI->Erase(); + Erase(); break; } case 216: // MENU VIEW - DISPLAY { - myDisplayGUI->Display(); + getGeometryGUI()->EmitSignalDeactivateDialog(); + Display(); break; } case 80311: // POPUP VIEWER - WIREFRAME { - myDisplayGUI->ChangeDisplayMode( 0 ); + ChangeDisplayMode( 0 ); break; } case 80312: // POPUP VIEWER - SHADING { - myDisplayGUI->ChangeDisplayMode( 1 ); + ChangeDisplayMode( 1 ); break; } default: { - SUIT_Session::session()->activeApplication()->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); + app->putInfo(tr("GEOM_PRP_COMMAND").arg(theCommandID)); break; } } + Sel->setSelectedObjects( selected ); return true; } @@ -159,7 +153,10 @@ bool DisplayGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent) //===================================================================================== void DisplayGUI::DisplayAll() { - SalomeApp_Study* appStudy = dynamic_cast( SUIT_Session::session()->activeApplication()->activeStudy() ); + SalomeApp_Application* app = getGeometryGUI()->getApp(); + if ( !app ) return; + + SalomeApp_Study* appStudy = dynamic_cast( app->activeStudy() ); if ( !appStudy ) return; _PTR(Study) aStudy = appStudy->studyDS(); if ( !aStudy ) return; @@ -177,7 +174,9 @@ void DisplayGUI::DisplayAll() _PTR(SObject) valSO ( anIter->Value() ); _PTR(SObject) refSO; if ( !valSO->ReferencedObject( refSO ) ) { - listIO.Append( new SALOME_InteractiveObject( valSO->GetID().c_str(), SC->ComponentDataType().c_str() ,valSO->GetName().c_str() ) ); + listIO.Append( new SALOME_InteractiveObject(valSO->GetID().c_str(), + SC->ComponentDataType().c_str(), + valSO->GetName().c_str()) ); } anIter->Next(); } @@ -192,14 +191,14 @@ void DisplayGUI::EraseAll() { SUIT_OverrideCursor(); - SUIT_Application* app = SUIT_Session::session()->activeApplication(); + SUIT_Application* app = getGeometryGUI()->getApp(); if ( app ) { SUIT_ViewWindow* vw = app->desktop()->activeWindow(); if ( vw ) { SalomeApp_Study* appStudy = dynamic_cast( app->activeStudy() ); SUIT_ViewManager* vman = vw->getViewManager(); if ( vman->getType() == OCCViewer_Viewer::Type() || - vman->getType() == VTKViewer_Viewer::Type() ) { + vman->getType() == SVTK_Viewer::Type() ) { GEOM_Displayer( appStudy ).EraseAll(); } } @@ -223,28 +222,28 @@ void DisplayGUI::DisplayOnly() void DisplayGUI::Display() { SALOME_ListIO listIO; - - SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); + + SalomeApp_Application* app = getGeometryGUI()->getApp(); if ( !app ) return; SalomeApp_Study* anActiveStudy = dynamic_cast( app->activeStudy() ); if ( !anActiveStudy ) return; - + //get SalomeApp selection manager - SalomeApp_SelectionMgr* aSelMgr = app->selectionMgr(); + LightApp_SelectionMgr* aSelMgr = app->selectionMgr(); if ( !aSelMgr ) return; - + SALOME_ListIO aList; aSelMgr->selectedObjects( aList ); SALOME_ListIteratorOfListIO It( aList ); - + SUIT_OverrideCursor(); for( ;It.More();It.Next() ) { Handle(SALOME_InteractiveObject) anIObject = It.Value(); if ( anIObject->hasEntry() ) { _PTR(SObject) SO ( anActiveStudy->studyDS()->FindObjectID( anIObject->getEntry() ) ); - if ( SO && QString( SO->GetID().c_str() ) == QString( SO->GetFatherComponent()->GetID().c_str() ) ) { + if ( SO && QString(SO->GetID().c_str()) == QString(SO->GetFatherComponent()->GetID().c_str()) ) { _PTR(SComponent) SC ( SO->GetFatherComponent() ); // if component is selected listIO.Clear(); @@ -254,8 +253,10 @@ void DisplayGUI::Display() _PTR(SObject) valSO ( anIter->Value() ); _PTR(SObject) refSO; if ( !valSO->ReferencedObject( refSO ) ) { - listIO.Append( new SALOME_InteractiveObject( valSO->GetID().c_str(), SC->ComponentDataType().c_str() ,valSO->GetName().c_str() ) ); - } + listIO.Append( new SALOME_InteractiveObject(valSO->GetID().c_str(), + SC->ComponentDataType().c_str(), + valSO->GetName().c_str()) ); + } anIter->Next(); } break; @@ -280,27 +281,27 @@ void DisplayGUI::Erase() { SALOME_ListIO listIO; - SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); + SalomeApp_Application* app = getGeometryGUI()->getApp(); if ( !app ) return; SalomeApp_Study* anActiveStudy = dynamic_cast( app->activeStudy() ); if ( !anActiveStudy ) return; - + //get SalomeApp selection manager - SalomeApp_SelectionMgr* aSelMgr = app->selectionMgr(); + LightApp_SelectionMgr* aSelMgr = app->selectionMgr(); if ( !aSelMgr ) return; - + SALOME_ListIO aList; aSelMgr->selectedObjects( aList ); SALOME_ListIteratorOfListIO It( aList ); SUIT_OverrideCursor(); - for( ;It.More();It.Next() ) { + for( ; It.More(); It.Next() ) { Handle(SALOME_InteractiveObject) anIObject = It.Value(); if ( anIObject->hasEntry() ) { _PTR(SObject) SO ( anActiveStudy->studyDS()->FindObjectID( anIObject->getEntry() ) ); - if ( SO && QString( SO->GetID().c_str() ) == QString( SO->GetFatherComponent()->GetID().c_str() ) ) { + if ( SO && QString(SO->GetID().c_str()) == QString(SO->GetFatherComponent()->GetID().c_str()) ) { _PTR(SComponent) SC ( SO->GetFatherComponent() ); // if component is selected listIO.Clear(); @@ -310,8 +311,10 @@ void DisplayGUI::Erase() _PTR(SObject) valSO ( anIter->Value() ); _PTR(SObject) refSO; if ( !valSO->ReferencedObject( refSO ) ) { - listIO.Append( new SALOME_InteractiveObject( valSO->GetID().c_str(), SC->ComponentDataType().c_str() ,valSO->GetName().c_str() ) ); - } + listIO.Append( new SALOME_InteractiveObject(valSO->GetID().c_str(), + SC->ComponentDataType().c_str(), + valSO->GetName().c_str()) ); + } anIter->Next(); } break; @@ -325,7 +328,7 @@ void DisplayGUI::Erase() } } GEOM_Displayer(anActiveStudy).Erase( listIO, true ); - ((SalomeApp_Application*)(SUIT_Session::session()->activeApplication()))->selectionMgr()->clearSelected(); + getGeometryGUI()->getApp()->selectionMgr()->clearSelected(); } //===================================================================================== @@ -337,10 +340,10 @@ void DisplayGUI::SetDisplayMode( const int mode, SUIT_ViewWindow* viewWindow ) SUIT_OverrideCursor(); if ( !viewWindow ) - viewWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); - if ( viewWindow->getViewManager()->getType() == VTKViewer_Viewer::Type() ) { - VTKViewer_RenderWindowInteractor* myRenderInter= ((VTKViewer_ViewWindow*)viewWindow)->getRWInteractor(); - myRenderInter->SetDisplayMode( mode ); + viewWindow = getGeometryGUI()->getApp()->desktop()->activeWindow(); + if ( viewWindow->getViewManager()->getType() == SVTK_Viewer::Type() ) { + SVTK_View* aView = ((SVTK_ViewWindow*)viewWindow)->getView(); + aView->SetDisplayMode( mode ); } else if ( viewWindow->getViewManager()->getType() == OCCViewer_Viewer::Type() ) { OCCViewer_Viewer* v3d = ((OCCViewer_ViewManager*)(viewWindow->getViewManager()))->getOCCViewer(); @@ -351,7 +354,7 @@ void DisplayGUI::SetDisplayMode( const int mode, SUIT_ViewWindow* viewWindow ) AIS_ListOfInteractive List1; ic->ObjectsInCollector( List1 ); List.Append( List1 ); - + AIS_ListIteratorOfListOfInteractive ite( List ); while( ite.More() ) { if( ite.Value()->IsInstance( STANDARD_TYPE(GEOM_AISShape) ) ) { @@ -360,7 +363,7 @@ void DisplayGUI::SetDisplayMode( const int mode, SUIT_ViewWindow* viewWindow ) } ite.Next(); } - + ic->SetDisplayMode( newmode, Standard_False ); } } @@ -373,10 +376,10 @@ int DisplayGUI::GetDisplayMode( SUIT_ViewWindow* viewWindow ) { int dispMode = 0; if ( !viewWindow ) - viewWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); - if ( viewWindow->getViewManager()->getType() == VTKViewer_Viewer::Type() ) { - VTKViewer_RenderWindowInteractor* myRenderInter= ((VTKViewer_ViewWindow*)viewWindow)->getRWInteractor(); - dispMode = myRenderInter->GetDisplayMode(); + viewWindow = getGeometryGUI()->getApp()->desktop()->activeWindow(); + if ( viewWindow->getViewManager()->getType() == SVTK_Viewer::Type() ) { + SVTK_View* aView = ((SVTK_ViewWindow*)viewWindow)->getView(); + dispMode = aView->GetDisplayMode(); } else if ( viewWindow->getViewManager()->getType() == OCCViewer_Viewer::Type() ) { OCCViewer_Viewer* v3d = ((OCCViewer_ViewManager*)(viewWindow->getViewManager()))->getOCCViewer(); @@ -404,37 +407,38 @@ void DisplayGUI::InvertDisplayMode( SUIT_ViewWindow* viewWindow ) //===================================================================================== void DisplayGUI::ChangeDisplayMode( const int mode, SUIT_ViewWindow* viewWindow ) { - if ( !viewWindow ) - viewWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow(); - - SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() ); + SalomeApp_Application* app = getGeometryGUI()->getApp(); if ( !app ) return; - SalomeApp_SelectionMgr* aSelMgr = app->selectionMgr(); + if ( !viewWindow ) + viewWindow = app->desktop()->activeWindow(); + + LightApp_SelectionMgr* aSelMgr = app->selectionMgr(); if ( !aSelMgr ) return; - + SUIT_OverrideCursor(); SALOME_ListIO aList; - - if ( viewWindow->getViewManager()->getType() == VTKViewer_Viewer::Type() ) { + + if ( viewWindow->getViewManager()->getType() == SVTK_Viewer::Type() ) { SVTK_ViewWindow* vw = dynamic_cast( viewWindow ); - SVTK_RenderWindowInteractor* rwi = vw->getRWInteractor(); + SVTK_View* aView = vw->getView(); aSelMgr->selectedObjects( aList ); SALOME_ListIteratorOfListIO It( aList ); for( ;It.More(); It.Next() ) { - SVTK_Viewer* stvkViewer = (SVTK_Viewer*)(vw->getViewManager()->getViewModel()); - SVTK_Prs* vtkPrs = dynamic_cast( stvkViewer->CreatePrs( It.Value()->getEntry() ) ); + SVTK_Viewer* stvkViewer = dynamic_cast(vw->getViewManager()->getViewModel()); + SVTK_Prs* vtkPrs = + stvkViewer ? dynamic_cast( stvkViewer->CreatePrs( It.Value()->getEntry() ) ) : 0; if ( vtkPrs && !vtkPrs->IsNull() ) { if ( mode == 0 ) - rwi->ChangeRepresentationToWireframe( vtkPrs->GetObjects() ); + aView->ChangeRepresentationToWireframe( vtkPrs->GetObjects() ); else if ( mode == 1 ) - rwi->ChangeRepresentationToSurface( vtkPrs->GetObjects() ); + aView->ChangeRepresentationToSurface( vtkPrs->GetObjects() ); } } - rwi->Render(); + aView->Repaint(); } else if ( viewWindow->getViewManager()->getType() == OCCViewer_Viewer::Type() ) { OCCViewer_Viewer* v3d = ((OCCViewer_ViewManager*)(viewWindow->getViewManager()))->getOCCViewer(); @@ -471,6 +475,6 @@ extern "C" #endif GEOMGUI* GetLibGUI( GeometryGUI* parent ) { - return DisplayGUI::GetDisplayGUI( parent ); + return new DisplayGUI( parent ); } }