// 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 )
{
}
+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 );
{
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;