Salome HOME
ptv, do not send mouse release event just after mouse double click
[modules/gui.git] / src / VTKViewer / VTKViewer_ViewWindow.h
1 #ifndef VTKVIEWER_VIEWWINDOW_H
2 #define VTKVIEWER_VIEWWINDOW_H
3
4 #include "VTKViewer.h"
5
6 #include "SUIT_ViewWindow.h"
7
8 #include "QtxAction.h"
9
10 class vtkRenderer;
11 class SUIT_Desktop;
12 class VTKViewer_Viewer;
13 class VTKViewer_Trihedron;
14 class VTKViewer_Transform;
15 class VTKViewer_RenderWindow;
16 class VTKViewer_InteractorStyle;
17 class VTKViewer_RenderWindowInteractor;
18 class VTKViewer_Actor;
19
20 #ifdef WIN32
21 #pragma warning( disable:4251 )
22 #endif
23
24 class VTKVIEWER_EXPORT VTKViewer_ViewWindow : public SUIT_ViewWindow
25 {
26   Q_OBJECT
27
28 public:
29   VTKViewer_ViewWindow( SUIT_Desktop*, VTKViewer_Viewer*,
30                         VTKViewer_InteractorStyle* = 0,
31                         VTKViewer_RenderWindowInteractor* = 0 );
32   virtual ~VTKViewer_ViewWindow();
33   
34   /*!Gets tool bar.*/
35   QToolBar*    getToolBar() { return myToolBar; }
36   
37   void         setBackgroundColor( const QColor& );
38   QColor       backgroundColor() const;
39
40   /*!Gets renderer.*/
41   vtkRenderer*                      getRenderer()     { return myRenderer;     }
42   /*!Gets render window.*/
43   VTKViewer_RenderWindow*           getRenderWindow() { return myRenderWindow; }
44   /*!Gets render window interactor.*/
45   VTKViewer_RenderWindowInteractor* getRWInteractor() { return myRWInteractor; }
46   bool                              isTrihedronDisplayed();
47
48   void Repaint( bool theUpdateTrihedron = true );
49   void onAdjustTrihedron();
50   void GetScale( double theScale[3] );
51   void SetScale( double theScale[3] );
52   void AddActor( VTKViewer_Actor*, bool update = false );
53   void RemoveActor( VTKViewer_Actor*, bool update = false);
54
55 public slots:
56   void onFrontView();
57   void onBackView();
58   void onTopView();
59   void onBottomView();
60   void onLeftView();
61   void onRightView();
62   void onResetView();
63   void onFitAll();
64   void activateZoom();
65   void activateWindowFit();
66   void activateRotation();
67   void activatePanning();
68   void activateGlobalPanning();
69   void onTrihedronShow();
70
71 protected:
72   QImage dumpView();
73
74 protected slots:
75   void onKeyPressed(QKeyEvent* event);
76   void onKeyReleased(QKeyEvent* event);
77   void onMousePressed(QMouseEvent* event);
78   void onMouseDoubleClicked(QMouseEvent* event);
79   void onMouseReleased(QMouseEvent* event);
80   void onMouseMoving(QMouseEvent* event);
81
82 private:
83   void                              InsertActor( VTKViewer_Actor* theActor,
84                                                  bool theMoveInternalActors = false );
85   void                              MoveActor( VTKViewer_Actor* theActor );
86
87 private:
88   enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, RotationId,
89          FrontId, BackId, TopId, BottomId, LeftId, RightId, ResetId, TrihedronShowId };
90   typedef QMap<int, QtxAction*> ActionsMap;
91   
92   void    createActions();
93   void    createToolBar();
94   
95   VTKViewer_Viewer*                 myModel;
96  
97   vtkRenderer*                      myRenderer;
98   VTKViewer_RenderWindow*           myRenderWindow;
99   VTKViewer_RenderWindowInteractor* myRWInteractor;
100   
101   VTKViewer_Trihedron*              myTrihedron;  
102   VTKViewer_Transform*              myTransform;
103   
104   QToolBar*                         myToolBar;
105   ActionsMap                        myActionsMap;  
106   
107   double                            myCurScale;
108
109   friend class VTKViewer_RenderWindowInteractor;
110 };
111
112 #ifdef WIN32
113 #pragma warning( default:4251 )
114 #endif
115
116 #endif