1 #include "VTKViewer_ViewModel.h"
2 #include "VTKViewer_ViewWindow.h"
3 #include "VTKViewer_ViewManager.h"
4 #include "VTKViewer_RenderWindowInteractor.h"
6 #include "SUIT_ViewWindow.h"
7 #include "SUIT_Desktop.h"
8 #include "SUIT_Session.h"
11 #include <qapplication.h>
12 #include <qcolordialog.h>
14 #include <qpopupmenu.h>
16 //****************************************************************
17 VTKViewer_Viewer::VTKViewer_Viewer()
19 myBgColor( Qt::black )
23 //****************************************************************
24 VTKViewer_Viewer::~VTKViewer_Viewer()
28 QColor VTKViewer_Viewer::backgroundColor() const
33 void VTKViewer_Viewer::setBackgroundColor( const QColor& c )
39 //****************************************************************
40 SUIT_ViewWindow* VTKViewer_Viewer::createView( SUIT_Desktop* theDesktop )
42 VTKViewer_ViewWindow* vw = new VTKViewer_ViewWindow( theDesktop, this );
43 vw->setBackgroundColor( myBgColor );
47 //*********************************************************************
48 void VTKViewer_Viewer::setViewManager(SUIT_ViewManager* theViewManager)
50 SUIT_ViewModel::setViewManager(theViewManager);
51 connect(theViewManager, SIGNAL(mousePress(SUIT_ViewWindow*, QMouseEvent*)),
52 this, SLOT(onMousePress(SUIT_ViewWindow*, QMouseEvent*)));
54 connect(theViewManager, SIGNAL(mouseMove(SUIT_ViewWindow*, QMouseEvent*)),
55 this, SLOT(onMouseMove(SUIT_ViewWindow*, QMouseEvent*)));
57 connect(theViewManager, SIGNAL(mouseRelease(SUIT_ViewWindow*, QMouseEvent*)),
58 this, SLOT(onMouseRelease(SUIT_ViewWindow*, QMouseEvent*)));
61 //*********************************************************************
62 void VTKViewer_Viewer::contextMenuPopup(QPopupMenu* thePopup)
64 thePopup->insertItem( tr( "MEN_DUMP_VIEW" ), this, SLOT( onDumpView() ) );
65 thePopup->insertItem( tr( "MEN_CHANGE_BACKGROUD" ), this, SLOT( onChangeBgColor() ) );
67 thePopup->insertSeparator();
69 VTKViewer_ViewWindow* aView = (VTKViewer_ViewWindow*)(myViewManager->getActiveView());
70 if ( aView && !aView->getToolBar()->isVisible() )
71 thePopup->insertItem( tr( "MEN_SHOW_TOOLBAR" ), this, SLOT( onShowToolbar() ) );
74 //*********************************************************************
75 void VTKViewer_Viewer::onMousePress(SUIT_ViewWindow* vw, QMouseEvent* event)
77 VTKViewer_RenderWindowInteractor* rwi = 0;
78 if ( vw && vw->inherits( "VTKViewer_ViewWindow" ) )
79 rwi = ((VTKViewer_ViewWindow*)vw)->getRWInteractor();
83 switch(event->button()) {
85 rwi->LeftButtonPressed(event) ;
88 rwi->MiddleButtonPressed(event) ;
91 rwi->RightButtonPressed(event) ;
98 //*********************************************************************
99 void VTKViewer_Viewer::onMouseMove(SUIT_ViewWindow* vw, QMouseEvent* event)
101 VTKViewer_RenderWindowInteractor* rwi = 0;
102 if ( vw && vw->inherits( "VTKViewer_ViewWindow" ) )
103 rwi = ((VTKViewer_ViewWindow*)vw)->getRWInteractor();
105 rwi->MouseMove( event );
108 //*********************************************************************
109 void VTKViewer_Viewer::onMouseRelease(SUIT_ViewWindow* vw, QMouseEvent* event)
111 VTKViewer_RenderWindowInteractor* rwi = 0;
112 if ( vw && vw->inherits( "VTKViewer_ViewWindow" ) )
113 rwi = ((VTKViewer_ViewWindow*)vw)->getRWInteractor();
117 switch(event->button()) {
119 rwi->LeftButtonReleased(event) ;
122 rwi->MiddleButtonReleased(event) ;
125 rwi->RightButtonReleased(event) ;
132 //*********************************************************************
133 void VTKViewer_Viewer::enableSelection(bool isEnabled)
135 mySelectionEnabled = isEnabled;
136 //!! To be done for view windows
139 //*********************************************************************
140 void VTKViewer_Viewer::enableMultiselection(bool isEnable)
142 myMultiSelectionEnabled = isEnable;
143 //!! To be done for view windows
146 void VTKViewer_Viewer::onDumpView()
148 VTKViewer_ViewWindow* aView = (VTKViewer_ViewWindow*)(myViewManager->getActiveView());
153 //*********************************************************************
154 void VTKViewer_Viewer::onChangeBgColor()
156 VTKViewer_ViewWindow* aView = (VTKViewer_ViewWindow*)(myViewManager->getActiveView());
160 QColor aColor = QColorDialog::getColor( aView->backgroundColor(), aView);
161 if ( aColor.isValid() )
162 aView->setBackgroundColor(aColor);
165 //*********************************************************************
166 void VTKViewer_Viewer::onShowToolbar() {
167 VTKViewer_ViewWindow* aView = (VTKViewer_ViewWindow*)(myViewManager->getActiveView());
169 aView->getToolBar()->show();