]> SALOME platform Git repositories - modules/geom.git/commitdiff
Salome HOME
Implementation of 'Show' and 'Show Only' actions from popup menu for selected objects...
authorakl <akl@opencascade.com>
Wed, 28 May 2014 05:11:20 +0000 (09:11 +0400)
committerakl <akl@opencascade.com>
Wed, 28 May 2014 05:11:20 +0000 (09:11 +0400)
src/DependencyTree/CMakeLists.txt
src/DependencyTree/DependencyTree_ViewModel.cxx
src/DependencyTree/DependencyTree_ViewModel.h

index 30d86cbadc08c3977d082b96c715c5228a23df74..36d21200597617b756c4de733db04f8ad5bffc13 100644 (file)
@@ -74,12 +74,12 @@ SET(DependencyTree_HEADERS
   DependencyTree.h
   DependencyTree_Object.h
   DependencyTree_Arrow.h
-  DependencyTree_ViewModel.h
   )
 
 # header files / to be processed by moc
 SET(_moc_HEADERS
   DependencyTree_View.h
+  DependencyTree_ViewModel.h
 )
 
 # --- sources ---
index deb50407453068ab647a02e3ac3475be16657065..b3301b981fdf6f7cd1961f96b76d540c3bb0c710 100644 (file)
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-#include <GraphicsView_Viewer.h>
-
 #include "DependencyTree_ViewModel.h"
+
 #include "DependencyTree_View.h"
+#include "GEOM_Displayer.h"
 
+#include <GraphicsView_Viewer.h>
 #include <GraphicsView_ViewPort.h>
+#include <SalomeApp_Application.h>
+#include <SalomeApp_Study.h>
+#include <LightApp_SelectionMgr.h>
+#include <SALOME_ListIO.hxx>
+#include <SALOME_ListIteratorOfListIO.hxx>
+#include <SUIT_Session.h>
+#include <OCCViewer_ViewModel.h>
+#include <OCCViewer_ViewManager.h>
 
 #include <QWidget>
+#include <QMenu>
 #include <iostream>
 
 DependencyTree_ViewModel::DependencyTree_ViewModel( const QString& title )
@@ -42,6 +52,68 @@ DependencyTree_ViewModel::~DependencyTree_ViewModel()
 {
 }
 
+void activateOCCViewer() {
+}
+
+void DependencyTree_ViewModel::onShowSelected()
+{
+  std::cout<<"\n\n\n\n *****onShowSelected " << std::endl;
+  SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+  if ( !app ) return;
+
+  app->getViewManager(OCCViewer_Viewer::Type(), /*create=*/true);
+
+  LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
+  if ( !aSelMgr ) return;
+
+  SALOME_ListIO aSelList;
+  aSelMgr->selectedObjects(aSelList);
+
+  SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>(app->activeStudy());
+  GEOM_Displayer* disp = new GEOM_Displayer( appStudy );
+
+  OCCViewer_ViewManager* anOCCVM = (OCCViewer_ViewManager*) app->getViewManager( OCCViewer_Viewer::Type(), /*create=*/true );
+
+  if ( SUIT_ViewModel* vmod = anOCCVM->getViewModel() ) {
+    if ( SALOME_View* aViewFrame = dynamic_cast<SALOME_View*>( vmod ) ) {
+      SALOME_ListIteratorOfListIO Iter( aSelList );
+      for ( ; Iter.More(); Iter.Next() ) {
+       disp->Display( Iter.Value(), false, aViewFrame );
+      }
+      aViewFrame->Repaint();
+    }
+  }
+}
+
+void DependencyTree_ViewModel::onShowOnlySelected()
+{
+  std::cout<<"\n\n\n\n *****onShowOnlySelected " << std::endl;
+  SalomeApp_Application* app = dynamic_cast< SalomeApp_Application* >( SUIT_Session::session()->activeApplication() );
+  if ( !app ) return;
+
+  LightApp_SelectionMgr* aSelMgr = app->selectionMgr();
+  if ( !aSelMgr ) return;
+
+  SALOME_ListIO aSelList;
+  aSelMgr->selectedObjects(aSelList);
+
+  SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>(app->activeStudy());
+  GEOM_Displayer* disp = new GEOM_Displayer( appStudy );
+
+  OCCViewer_ViewManager* anOCCVM = (OCCViewer_ViewManager*) app->getViewManager( OCCViewer_Viewer::Type(), /*create=*/true );
+
+  if ( SUIT_ViewModel* vmod = anOCCVM->getViewModel() ) {
+    if ( SALOME_View* aViewFrame = dynamic_cast<SALOME_View*>( vmod ) ) {
+      disp->EraseAll( true, false, aViewFrame ); 
+      SALOME_ListIteratorOfListIO Iter( aSelList );
+      for ( ; Iter.More(); Iter.Next() ) {
+       disp->Display( Iter.Value(), false, aViewFrame );
+      }
+      aViewFrame->Repaint();
+    }
+  }
+}
+
 void DependencyTree_ViewModel::contextMenuPopup( QMenu* theMenu )
 {
   GraphicsView_Viewer::contextMenuPopup( theMenu );
@@ -51,12 +123,15 @@ void DependencyTree_ViewModel::contextMenuPopup( QMenu* theMenu )
   {
     int aNbSelected = aViewPort->nbSelected();
     std::cout<<"\n  aNbSelected " << aNbSelected << std::endl;
+    if( aNbSelected > 0 ) {
+      theMenu->addAction( tr( "MEN_DISPLAY" ), this, SLOT( onShowSelected() ) );
+      theMenu->addAction( tr( "MEN_DISPLAY_ONLY" ), this, SLOT( onShowOnlySelected() ) );
+    }
   }
 
 
 }
 
-
 //SUIT_ViewWindow* DependencyTree_ViewModel::createView( SUIT_Desktop* theDesktop )
 //{
 //     DependencyTree_ViewWindow* aViewFrame;
index 3223a00dc76839e3afc311134d6375835511d7e5..e41fd815691c7c7533af46274248c86bb449df5b 100644 (file)
@@ -22,6 +22,7 @@
 
 class DependencyTree_ViewModel: public GraphicsView_Viewer
 {
+  Q_OBJECT
 
 public:
 
@@ -35,5 +36,8 @@ public:
 
 //  static QString                Type() { return "DependencyTree";  }
 
+private slots:
+  void onShowSelected();
+  void onShowOnlySelected();
 
 };