]> SALOME platform Git repositories - modules/gui.git/blob - src/OCCViewer/OCCViewer_ViewWindow.h
Salome HOME
Correction of the path to XML file.
[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 #ifdef WIN32
35 #pragma warning( disable:4251 )
36 #endif
37
38 class OCCVIEWER_EXPORT OCCViewer_ViewWindow : public SUIT_ViewWindow  
39 {
40   Q_OBJECT
41
42 public:
43   enum OperationType{ NOTHING, PANVIEW, ZOOMVIEW, ROTATE, PANGLOBAL, WINDOWFIT, FITALLVIEW, RESETVIEW,
44                       FRONTVIEW, BACKVIEW, TOPVIEW, BOTTOMVIEW, LEFTVIEW, RIGHTVIEW };
45
46   OCCViewer_ViewWindow(SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel);
47         virtual ~OCCViewer_ViewWindow() {};
48
49   OCCViewer_ViewPort3d* getViewPort() { return myViewPort; }
50
51   bool eventFilter(QObject* watched, QEvent* e);
52
53   QToolBar* getToolBar() { return myToolBar; }
54
55   void performRestoring( const viewAspect& );
56   
57   virtual void initLayout();
58
59 public slots:
60   void onFrontView();
61   void onViewFitAll();
62   void onBackView();
63   void onTopView();
64   void onBottomView();
65   void onLeftView();
66   void onRightView();
67   void onResetView();
68   void onFitAll();
69   void activateZoom();
70   void activateWindowFit();
71   void activateRotation();
72   void activatePanning();
73   void activateGlobalPanning();
74   void onCloneView();
75   void onMemorizeView();
76   void onRestoreView();
77   void onTrihedronShow();
78   void setRestoreFlag();
79   
80 signals:
81   void vpTransformationStarted(OCCViewer_ViewWindow::OperationType type);
82   void vpTransformationFinished(OCCViewer_ViewWindow::OperationType type);
83   void cloneView();
84
85 protected:
86   enum { DumpId, FitAllId, FitRectId, ZoomId, PanId, GlobalPanId, RotationId,
87          FrontId, BackId, TopId, BottomId, LeftId, RightId, ResetId, CloneId, MemId, RestoreId,
88          TrihedronShowId };
89
90   typedef QMap<int, QtxAction*> ActionsMap;
91
92   QImage dumpView();
93
94   /* Transformation selected but not started yet */
95   bool transformRequested() const { return ( myOperation != NOTHING ); }
96   void setTransformRequested ( OperationType op );
97
98   /* Transformation is selected and already started */
99   bool          transformInProcess() const { return myEventStarted; }
100   void          setTransformInProcess( bool bOn ) { myEventStarted = bOn; }
101
102   void vpMousePressEvent(QMouseEvent* theEvent);
103   void vpMouseReleaseEvent(QMouseEvent* theEvent);
104   void vpMouseMoveEvent(QMouseEvent* theEvent);
105
106   void resetState();
107   void drawRect();
108
109   void createActions();
110   void createToolBar();
111  
112   virtual OperationType getButtonState(QMouseEvent* theEvent);
113
114   OperationType         myOperation;
115   OCCViewer_Viewer*     myModel;
116   OCCViewer_ViewPort3d* myViewPort;
117
118   int                                   myRestoreFlag;
119
120   int                                   myStartX;
121   int                                   myStartY;
122   int                                   myCurrX;
123   int                                   myCurrY;
124
125   bool                  myEventStarted;       // set when transformation is in process 
126   bool                  myCursorIsHand;                 
127   bool                  myDrawRect;           // set when a rect is used for selection or magnify 
128   bool                  myEnableDrawMode;
129   bool                  myPaintersRedrawing;  // set to draw with external painters 
130  
131   QRect                 myRect;                         
132   QCursor               myCursor;
133
134   QToolBar*  myToolBar;
135   ActionsMap myActionsMap;
136
137   double myCurScale;
138 };
139
140 #ifdef WIN32
141 #pragma warning( default:4251 )
142 #endif
143
144 #endif