Salome HOME
no message
[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   QToolBar*    getToolBar() { return myToolBar; }
35   
36   void         setBackgroundColor( const QColor& );
37   QColor       backgroundColor() const;
38
39   vtkRenderer*                      getRenderer()     { return myRenderer;     }
40   VTKViewer_RenderWindow*           getRenderWindow() { return myRenderWindow; }
41   VTKViewer_RenderWindowInteractor* getRWInteractor() { return myRWInteractor; }
42   bool                              isTrihedronDisplayed();
43
44   void Repaint( bool theUpdateTrihedron = true );
45   void onAdjustTrihedron();
46   void GetScale( double theScale[3] );
47   void SetScale( double theScale[3] );
48   void AddActor( VTKViewer_Actor*, bool update = false );
49   void RemoveActor( VTKViewer_Actor*, bool update = false);
50
51 public slots:
52   void onFrontView();
53   void onBackView();
54   void onTopView();
55   void onBottomView();
56   void onLeftView();
57   void onRightView();
58   void onResetView();
59   void onFitAll();
60   void onDumpView();
61   void activateZoom();
62   void activateWindowFit();
63   void activateRotation();
64   void activatePanning();
65   void activateGlobalPanning();
66
67 protected slots:
68   void onKeyPressed(QKeyEvent* event);
69   void onKeyReleased(QKeyEvent* event);
70   void onMousePressed(QMouseEvent* event);
71   void onMouseDoubleClicked(QMouseEvent* event);
72   void onMouseReleased(QMouseEvent* event);
73   void onMouseMoving(QMouseEvent* event);
74
75 private:
76   void                              InsertActor( VTKViewer_Actor* theActor,
77                                                  bool theMoveInternalActors = false );
78   void                              MoveActor( VTKViewer_Actor* theActor );
79
80 private:
81   enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, RotationId,
82          FrontId, BackId, TopId, BottomId, LeftId, RightId, ResetId };
83   typedef QMap<int, QtxAction*> ActionsMap;
84   
85   void    createActions();
86   void    createToolBar();
87   
88   VTKViewer_Viewer*                 myModel;
89  
90   vtkRenderer*                      myRenderer;
91   VTKViewer_RenderWindow*           myRenderWindow;
92   VTKViewer_RenderWindowInteractor* myRWInteractor;
93   
94   VTKViewer_Trihedron*              myTrihedron;  
95   VTKViewer_Transform*              myTransform;
96   
97   QToolBar*                         myToolBar;
98   ActionsMap                        myActionsMap;  
99   
100   double                            myCurScale;
101
102   friend class VTKViewer_RenderWindowInteractor;
103 };
104
105 #ifdef WIN32
106 #pragma warning( default:4251 )
107 #endif
108
109 #endif