]> SALOME platform Git repositories - modules/gui.git/blob - src/OCCViewer/OCCViewer_ViewWindow.h
Salome HOME
Join modifications from branch BR_3_1_0deb
[modules/gui.git] / src / OCCViewer / OCCViewer_ViewWindow.h
1 // Copyright (C) 2005  OPEN CASCADE, CEA/DEN, EDF R&D, PRINCIPIA R&D
2 // 
3 // This library is free software; you can redistribute it and/or
4 // modify it under the terms of the GNU Lesser General Public
5 // License as published by the Free Software Foundation; either 
6 // version 2.1 of the License.
7 // 
8 // This library is distributed in the hope that it will be useful 
9 // but WITHOUT ANY WARRANTY; without even the implied warranty of 
10 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU 
11 // Lesser General Public License for more details.
12 //
13 // You should have received a copy of the GNU Lesser General Public  
14 // License along with this library; if not, write to the Free Software 
15 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
16 //
17 // See http://www.salome-platform.org/
18 //
19 #ifndef OCCVIEWER_VIEWWINDOW_H
20 #define OCCVIEWER_VIEWWINDOW_H
21
22 #include "OCCViewer_ViewModel.h"
23
24 #include "SUIT_ViewWindow.h"
25
26 #include "QtxAction.h"
27
28 #include <qcursor.h>
29 #include <qvaluelist.h>
30
31 class SUIT_Desktop;
32 class OCCViewer_ViewPort3d;
33
34 class OCCViewer_ClippingDlg;
35
36 #ifdef WIN32
37 #pragma warning( disable:4251 )
38 #endif
39
40 class OCCVIEWER_EXPORT OCCViewer_ViewWindow : public SUIT_ViewWindow  
41 {
42   Q_OBJECT
43
44 public:
45   enum OperationType{ NOTHING, PANVIEW, ZOOMVIEW, ROTATE, PANGLOBAL, WINDOWFIT, FITALLVIEW, RESETVIEW,
46                       FRONTVIEW, BACKVIEW, TOPVIEW, BOTTOMVIEW, LEFTVIEW, RIGHTVIEW };
47
48   OCCViewer_ViewWindow(SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel);
49         virtual ~OCCViewer_ViewWindow() {};
50
51   OCCViewer_ViewPort3d* getViewPort() { return myViewPort; }
52
53   bool eventFilter(QObject* watched, QEvent* e);
54
55   QToolBar* getToolBar() { return myToolBar; }
56
57   void performRestoring( const viewAspect& );
58   
59   virtual void initLayout();
60
61   void updateEnabledDrawMode();
62
63   void setCuttingPlane( bool on, const double x = 0 , const double y = 0 , const double z = 0,
64                                  const double dx = 0, const double dy = 0, const double dz = 1);
65  
66 public slots:
67   void onFrontView();
68   void onViewFitAll();
69   void onBackView();
70   void onTopView();
71   void onBottomView();
72   void onLeftView();
73   void onRightView();
74   void onResetView();
75   void onFitAll();
76   void activateZoom();
77   void activateWindowFit();
78   void activateRotation();
79   void activatePanning();
80   void activateGlobalPanning();
81   void onCloneView();
82   void onClipping( bool on );
83   void onMemorizeView();
84   void onRestoreView();
85   void onTrihedronShow();
86   void setRestoreFlag();
87   
88 signals:
89   void vpTransformationStarted(OCCViewer_ViewWindow::OperationType type);
90   void vpTransformationFinished(OCCViewer_ViewWindow::OperationType type);
91   void cloneView();
92
93 protected:
94   enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, RotationId,
95          FrontId, BackId, TopId, BottomId, LeftId, RightId, ResetId, CloneId, ClippingId, MemId, RestoreId,
96          TrihedronShowId };
97
98   typedef QMap<int, QtxAction*> ActionsMap;
99
100   QImage dumpView();
101
102   /* Transformation selected but not started yet */
103   bool transformRequested() const { return ( myOperation != NOTHING ); }
104   void setTransformRequested ( OperationType op );
105
106   /* Transformation is selected and already started */
107   bool          transformInProcess() const { return myEventStarted; }
108   void          setTransformInProcess( bool bOn ) { myEventStarted = bOn; }
109
110   void vpMousePressEvent(QMouseEvent* theEvent);
111   void vpMouseReleaseEvent(QMouseEvent* theEvent);
112   void vpMouseMoveEvent(QMouseEvent* theEvent);
113
114   void resetState();
115   void drawRect();
116
117   void createActions();
118   void createToolBar();
119  
120   virtual OperationType getButtonState(QMouseEvent* theEvent);
121
122   OperationType         myOperation;
123   OCCViewer_Viewer*     myModel;
124   OCCViewer_ViewPort3d* myViewPort;
125
126   int                                   myRestoreFlag;
127
128   int                                   myStartX;
129   int                                   myStartY;
130   int                                   myCurrX;
131   int                                   myCurrY;
132
133   bool                  myEventStarted;       // set when transformation is in process 
134   bool                  myCursorIsHand;                 
135   bool                  myDrawRect;           // set when a rect is used for selection or magnify 
136   bool                  myEnableDrawMode;
137   bool                  myPaintersRedrawing;  // set to draw with external painters 
138  
139   QRect                 myRect;                         
140   QCursor               myCursor;
141
142   QToolBar*  myToolBar;
143   ActionsMap myActionsMap;
144
145   double myCurScale;
146
147 private:
148   OCCViewer_ClippingDlg* myClippingDlg;
149   
150 };
151
152 #ifdef WIN32
153 #pragma warning( default:4251 )
154 #endif
155
156 #endif