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 /*!Constructor.Sets background color to black.*/
17 VTKViewer_Viewer::VTKViewer_Viewer()
19 myBgColor( Qt::black )
24 VTKViewer_Viewer::~VTKViewer_Viewer()
28 /*!Gets background color.*/
29 QColor VTKViewer_Viewer::backgroundColor() const
34 /*!Sets background color.*/
35 void VTKViewer_Viewer::setBackgroundColor( const QColor& c )
41 /*!Create new instance of VTKViewer_ViewWindow, sets background color and return pointer to it.*/
42 SUIT_ViewWindow* VTKViewer_Viewer::createView( SUIT_Desktop* theDesktop )
44 VTKViewer_ViewWindow* vw = new VTKViewer_ViewWindow( theDesktop, this );
45 vw->setBackgroundColor( myBgColor );
49 /*!Sets view manager and connect slots.*/
50 void VTKViewer_Viewer::setViewManager(SUIT_ViewManager* theViewManager)
52 SUIT_ViewModel::setViewManager(theViewManager);
53 connect(theViewManager, SIGNAL(mousePress(SUIT_ViewWindow*, QMouseEvent*)),
54 this, SLOT(onMousePress(SUIT_ViewWindow*, QMouseEvent*)));
56 connect(theViewManager, SIGNAL(mouseMove(SUIT_ViewWindow*, QMouseEvent*)),
57 this, SLOT(onMouseMove(SUIT_ViewWindow*, QMouseEvent*)));
59 connect(theViewManager, SIGNAL(mouseRelease(SUIT_ViewWindow*, QMouseEvent*)),
60 this, SLOT(onMouseRelease(SUIT_ViewWindow*, QMouseEvent*)));
63 /*!Insert context into popup menu.*/
64 void VTKViewer_Viewer::contextMenuPopup(QPopupMenu* thePopup)
66 thePopup->insertItem( tr( "MEN_DUMP_VIEW" ), this, SLOT( onDumpView() ) );
67 thePopup->insertItem( tr( "MEN_CHANGE_BACKGROUD" ), this, SLOT( onChangeBgColor() ) );
69 thePopup->insertSeparator();
71 VTKViewer_ViewWindow* aView = (VTKViewer_ViewWindow*)(myViewManager->getActiveView());
72 if ( aView && !aView->getToolBar()->isVisible() )
73 thePopup->insertItem( tr( "MEN_SHOW_TOOLBAR" ), this, SLOT( onShowToolbar() ) );
76 /*!On mouse press event.*/
77 void VTKViewer_Viewer::onMousePress(SUIT_ViewWindow* vw, QMouseEvent* event)
79 VTKViewer_RenderWindowInteractor* rwi = 0;
80 if ( vw && vw->inherits( "VTKViewer_ViewWindow" ) )
81 rwi = ((VTKViewer_ViewWindow*)vw)->getRWInteractor();
85 switch(event->button()) {
87 rwi->LeftButtonPressed(event) ;
90 rwi->MiddleButtonPressed(event) ;
93 rwi->RightButtonPressed(event) ;
100 /*!On mouse move event.*/
101 void VTKViewer_Viewer::onMouseMove(SUIT_ViewWindow* vw, QMouseEvent* event)
103 VTKViewer_RenderWindowInteractor* rwi = 0;
104 if ( vw && vw->inherits( "VTKViewer_ViewWindow" ) )
105 rwi = ((VTKViewer_ViewWindow*)vw)->getRWInteractor();
107 rwi->MouseMove( event );
110 /*!On mouse release event.*/
111 void VTKViewer_Viewer::onMouseRelease(SUIT_ViewWindow* vw, QMouseEvent* event)
113 VTKViewer_RenderWindowInteractor* rwi = 0;
114 if ( vw && vw->inherits( "VTKViewer_ViewWindow" ) )
115 rwi = ((VTKViewer_ViewWindow*)vw)->getRWInteractor();
119 switch(event->button()) {
121 rwi->LeftButtonReleased(event) ;
124 rwi->MiddleButtonReleased(event) ;
127 rwi->RightButtonReleased(event) ;
134 /*!Sets flag to enable selection \a isEnable.*/
135 void VTKViewer_Viewer::enableSelection(bool isEnabled)
137 mySelectionEnabled = isEnabled;
138 //!! To be done for view windows
141 /*!Sets flag to multi selection enable \a isEnable.*/
142 void VTKViewer_Viewer::enableMultiselection(bool isEnable)
144 myMultiSelectionEnabled = isEnable;
145 //!! To be done for view windows
148 /*!On dump view event.*/
149 void VTKViewer_Viewer::onDumpView()
151 VTKViewer_ViewWindow* aView = (VTKViewer_ViewWindow*)(myViewManager->getActiveView());
156 /*!On change back ground color event.*/
157 void VTKViewer_Viewer::onChangeBgColor()
159 VTKViewer_ViewWindow* aView = (VTKViewer_ViewWindow*)(myViewManager->getActiveView());
163 QColor aColor = QColorDialog::getColor( aView->backgroundColor(), aView);
164 if ( aColor.isValid() )
165 aView->setBackgroundColor(aColor);
168 /*!On show tool bar event.*/
169 void VTKViewer_Viewer::onShowToolbar() {
170 VTKViewer_ViewWindow* aView = (VTKViewer_ViewWindow*)(myViewManager->getActiveView());
172 aView->getToolBar()->show();