Salome HOME
Join BR-D5-38-2003
[modules/geom.git] / src / DisplayGUI / DisplayGUI.cxx
index 6f337597d9fb09b029197ae3df0c1339d16c9863..61dc6bfca652e92a84180c9292e2cdadecd989cc 100644 (file)
 #include <SALOME_ListIteratorOfListIO.hxx>
 
 #include <SVTK_ViewWindow.h>
-#include <SVTK_RenderWindowInteractor.h>
+#include <SVTK_View.h>
 #include <SVTK_ViewModel.h>
 #include <SOCC_ViewModel.h>
 #include <SVTK_Prs.h>
 #include <SOCC_Prs.h>
 
+#include <QtxActionMenuMgr.h>
+
 #include <SalomeApp_Application.h>
-#include <SalomeApp_SelectionMgr.h>
+#include <LightApp_SelectionMgr.h>
 #include <SalomeApp_Study.h>
 
 #include <AIS_ListIteratorOfListOfInteractive.hxx>
@@ -97,6 +99,9 @@ DisplayGUI::~DisplayGUI()
 bool DisplayGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
 {
   DisplayGUI* myDisplayGUI = GetDisplayGUI( getGeometryGUI() );
+  LightApp_SelectionMgr *Sel = getGeometryGUI()->getApp()->selectionMgr();
+  SALOME_ListIO selected;
+  Sel->selectedObjects( selected );
 
   switch (theCommandID) {
   case 211: // MENU VIEW - WIREFRAME/SHADING
@@ -153,6 +158,7 @@ bool DisplayGUI::OnGUIEvent(int theCommandID, SUIT_Desktop* parent)
       break;
     }
   }
+  Sel->setSelectedObjects( selected );
   return true;
 }
 
@@ -234,7 +240,7 @@ void DisplayGUI::Display()
   if ( !anActiveStudy ) return;
   
   //get SalomeApp selection manager
-  SalomeApp_SelectionMgr* aSelMgr = app->selectionMgr();
+  LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
   if ( !aSelMgr ) return;
   
   SALOME_ListIO aList;
@@ -290,7 +296,7 @@ void DisplayGUI::Erase()
   if ( !anActiveStudy ) return;
   
   //get SalomeApp selection manager
-  SalomeApp_SelectionMgr* aSelMgr = app->selectionMgr();
+  LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
   if ( !aSelMgr ) return;
   
   SALOME_ListIO aList;
@@ -342,10 +348,8 @@ void DisplayGUI::SetDisplayMode( const int mode, SUIT_ViewWindow* viewWindow )
   if ( !viewWindow ) 
     viewWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
   if ( viewWindow->getViewManager()->getType() == SVTK_Viewer::Type() ) {
-    SVTK_ViewWindow* wnd = dynamic_cast<SVTK_ViewWindow*>( viewWindow );
-    SVTK_RenderWindowInteractor* myRenderInter = wnd ? wnd->getRWInteractor() : 0;
-    if( myRenderInter )
-      myRenderInter->SetDisplayMode( mode );
+    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();
@@ -380,10 +384,8 @@ int DisplayGUI::GetDisplayMode( SUIT_ViewWindow* viewWindow )
   if ( !viewWindow ) 
     viewWindow = SUIT_Session::session()->activeApplication()->desktop()->activeWindow();
   if ( viewWindow->getViewManager()->getType() == SVTK_Viewer::Type() ) {
-    SVTK_ViewWindow* wnd = dynamic_cast<SVTK_ViewWindow*>( viewWindow );
-    SVTK_RenderWindowInteractor* myRenderInter = wnd ? wnd->getRWInteractor() : 0;
-    if( myRenderInter )
-      dispMode = myRenderInter->GetDisplayMode();
+    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();
@@ -417,7 +419,7 @@ void DisplayGUI::ChangeDisplayMode( const int mode, SUIT_ViewWindow* viewWindow
   SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
   if ( !app ) return;
 
-  SalomeApp_SelectionMgr* aSelMgr = app->selectionMgr();
+  LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
   if ( !aSelMgr ) return;
   
   SUIT_OverrideCursor();
@@ -426,10 +428,7 @@ void DisplayGUI::ChangeDisplayMode( const int mode, SUIT_ViewWindow* viewWindow
   
   if ( viewWindow->getViewManager()->getType() == SVTK_Viewer::Type() ) {
     SVTK_ViewWindow* vw = dynamic_cast<SVTK_ViewWindow*>( viewWindow );
-    SVTK_RenderWindowInteractor* rwi = vw ? vw->getRWInteractor() : 0;
-
-    if( !rwi )
-      return;
+    SVTK_View* aView = vw->getView();
 
     aSelMgr->selectedObjects( aList );
     SALOME_ListIteratorOfListIO It( aList );
@@ -439,12 +438,12 @@ void DisplayGUI::ChangeDisplayMode( const int mode, SUIT_ViewWindow* viewWindow
       SVTK_Prs* vtkPrs = stvkViewer ? dynamic_cast<SVTK_Prs*>( 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();