Implementation of 'Show' and 'Show Only' actions from popup menu for selected objects in Dependency tree.

This commit is contained in:
akl 2014-05-28 09:11:20 +04:00
parent 328ea5246c
commit ff4c9a2717
3 changed files with 84 additions and 5 deletions

View File

@ -74,12 +74,12 @@ SET(DependencyTree_HEADERS
DependencyTree.h DependencyTree.h
DependencyTree_Object.h DependencyTree_Object.h
DependencyTree_Arrow.h DependencyTree_Arrow.h
DependencyTree_ViewModel.h
) )
# header files / to be processed by moc # header files / to be processed by moc
SET(_moc_HEADERS SET(_moc_HEADERS
DependencyTree_View.h DependencyTree_View.h
DependencyTree_ViewModel.h
) )
# --- sources --- # --- sources ---

View File

@ -17,14 +17,24 @@
// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
// //
#include <GraphicsView_Viewer.h>
#include "DependencyTree_ViewModel.h" #include "DependencyTree_ViewModel.h"
#include "DependencyTree_View.h"
#include "DependencyTree_View.h"
#include "GEOM_Displayer.h"
#include <GraphicsView_Viewer.h>
#include <GraphicsView_ViewPort.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 <QWidget>
#include <QMenu>
#include <iostream> #include <iostream>
DependencyTree_ViewModel::DependencyTree_ViewModel( const QString& title ) 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 ) void DependencyTree_ViewModel::contextMenuPopup( QMenu* theMenu )
{ {
GraphicsView_Viewer::contextMenuPopup( theMenu ); GraphicsView_Viewer::contextMenuPopup( theMenu );
@ -51,12 +123,15 @@ void DependencyTree_ViewModel::contextMenuPopup( QMenu* theMenu )
{ {
int aNbSelected = aViewPort->nbSelected(); int aNbSelected = aViewPort->nbSelected();
std::cout<<"\n aNbSelected " << aNbSelected << std::endl; 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 ) //SUIT_ViewWindow* DependencyTree_ViewModel::createView( SUIT_Desktop* theDesktop )
//{ //{
// DependencyTree_ViewWindow* aViewFrame; // DependencyTree_ViewWindow* aViewFrame;

View File

@ -22,6 +22,7 @@
class DependencyTree_ViewModel: public GraphicsView_Viewer class DependencyTree_ViewModel: public GraphicsView_Viewer
{ {
Q_OBJECT
public: public:
@ -35,5 +36,8 @@ public:
// static QString Type() { return "DependencyTree"; } // static QString Type() { return "DependencyTree"; }
private slots:
void onShowSelected();
void onShowOnlySelected();
}; };