Salome HOME
no message
[modules/gui.git] / src / VTKViewer / VTKViewer_ViewModel.cxx
1 #include "VTKViewer_ViewModel.h"
2 #include "VTKViewer_ViewWindow.h"
3 #include "VTKViewer_ViewManager.h"
4 #include "VTKViewer_RenderWindowInteractor.h"
5
6 #include "SUIT_ViewWindow.h"
7 #include "SUIT_Desktop.h"
8 #include "SUIT_Session.h"
9
10 #include <qpainter.h>
11 #include <qapplication.h>
12 #include <qcolordialog.h>
13 #include <qpalette.h>
14 #include <qpopupmenu.h>
15
16 //****************************************************************
17 VTKViewer_Viewer::VTKViewer_Viewer()
18 :SUIT_ViewModel() 
19 {
20 }
21
22 //****************************************************************
23 VTKViewer_Viewer::~VTKViewer_Viewer() 
24 {
25 }
26
27 //****************************************************************
28 SUIT_ViewWindow* VTKViewer_Viewer::createView(SUIT_Desktop* theDesktop)
29 {
30   return new VTKViewer_ViewWindow(theDesktop, this);
31 }
32
33 //*********************************************************************
34 void VTKViewer_Viewer::setViewManager(SUIT_ViewManager* theViewManager)
35 {
36   SUIT_ViewModel::setViewManager(theViewManager);
37   connect(theViewManager, SIGNAL(mousePress(SUIT_ViewWindow*, QMouseEvent*)), 
38           this, SLOT(onMousePress(SUIT_ViewWindow*, QMouseEvent*)));
39
40   connect(theViewManager, SIGNAL(mouseMove(SUIT_ViewWindow*, QMouseEvent*)), 
41           this, SLOT(onMouseMove(SUIT_ViewWindow*, QMouseEvent*)));
42
43   connect(theViewManager, SIGNAL(mouseRelease(SUIT_ViewWindow*, QMouseEvent*)), 
44           this, SLOT(onMouseRelease(SUIT_ViewWindow*, QMouseEvent*)));
45 }
46
47 //*********************************************************************
48 void VTKViewer_Viewer::contextMenuPopup(QPopupMenu* thePopup)
49 {
50   thePopup->insertItem( tr( "MEN_DUMP_VIEW" ), this, SLOT( onDumpView() ) );
51   thePopup->insertItem( tr( "MEN_CHANGE_BACKGROUD" ), this, SLOT( onChangeBgColor() ) );
52
53   thePopup->insertSeparator();
54
55   VTKViewer_ViewWindow* aView = (VTKViewer_ViewWindow*)(myViewManager->getActiveView());
56   if ( aView && !aView->getToolBar()->isVisible() )
57     thePopup->insertItem( tr( "MEN_SHOW_TOOLBAR" ), this, SLOT( onShowToolbar() ) );
58 }
59
60 //*********************************************************************
61 void VTKViewer_Viewer::onMousePress(SUIT_ViewWindow* vw, QMouseEvent* event)
62 {
63   VTKViewer_RenderWindowInteractor* rwi = 0;
64   if ( vw && vw->inherits( "VTKViewer_ViewWindow" ) )
65     rwi = ((VTKViewer_ViewWindow*)vw)->getRWInteractor();
66   if ( !rwi )
67     return;
68
69   switch(event->button()) {
70   case LeftButton:
71     rwi->LeftButtonPressed(event) ;
72     break ;
73   case MidButton:
74     rwi->MiddleButtonPressed(event) ;
75     break ;
76   case RightButton:
77     rwi->RightButtonPressed(event) ;
78     break;
79   default:
80     break ;
81   }
82 }
83
84 //*********************************************************************
85 void VTKViewer_Viewer::onMouseMove(SUIT_ViewWindow* vw, QMouseEvent* event)
86 {
87   VTKViewer_RenderWindowInteractor* rwi = 0;
88   if ( vw && vw->inherits( "VTKViewer_ViewWindow" ) )
89     rwi = ((VTKViewer_ViewWindow*)vw)->getRWInteractor();
90   if ( rwi )
91     rwi->MouseMove( event );
92 }
93
94 //*********************************************************************
95 void VTKViewer_Viewer::onMouseRelease(SUIT_ViewWindow* vw, QMouseEvent* event)
96 {
97   VTKViewer_RenderWindowInteractor* rwi = 0;
98   if ( vw && vw->inherits( "VTKViewer_ViewWindow" ) )
99     rwi = ((VTKViewer_ViewWindow*)vw)->getRWInteractor();
100   if ( !rwi )
101     return;
102
103   switch(event->button()) {
104   case LeftButton:
105     rwi->LeftButtonReleased(event) ;
106     break ;
107   case MidButton:
108     rwi->MiddleButtonReleased(event) ;
109     break ;
110   case RightButton:
111     rwi->RightButtonReleased(event) ;
112     break;
113   default:
114     break ;
115   }
116 }
117
118 //*********************************************************************
119 void VTKViewer_Viewer::enableSelection(bool isEnabled)
120 {
121   mySelectionEnabled = isEnabled;
122   //!! To be done for view windows
123 }
124
125 //*********************************************************************
126 void VTKViewer_Viewer::enableMultiselection(bool isEnable)
127 {
128   myMultiSelectionEnabled = isEnable;
129   //!! To be done for view windows
130 }
131
132 void VTKViewer_Viewer::onDumpView()
133 {
134   VTKViewer_ViewWindow* aView = (VTKViewer_ViewWindow*)(myViewManager->getActiveView());
135   if ( aView )
136     aView->onDumpView();
137 }
138
139 //*********************************************************************
140 void VTKViewer_Viewer::onChangeBgColor()
141 {
142   VTKViewer_ViewWindow* aView = (VTKViewer_ViewWindow*)(myViewManager->getActiveView());
143   if ( !aView )
144     return;
145
146   QColor aColor = QColorDialog::getColor( aView->backgroundColor(), aView);
147   if ( aColor.isValid() )
148     aView->setBackgroundColor(aColor);
149 }
150
151 //*********************************************************************
152 void VTKViewer_Viewer::onShowToolbar() {
153   VTKViewer_ViewWindow* aView = (VTKViewer_ViewWindow*)(myViewManager->getActiveView());
154   if ( aView )
155     aView->getToolBar()->show();    
156 }