Salome HOME
Synchronize adm files
[modules/gui.git] / src / OCCViewer / OCCViewer_ViewFrame.h
1 // Copyright (C) 2007-2014  CEA/DEN, EDF R&D, OPEN CASCADE
2 //
3 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
4 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
5 //
6 // This library is free software; you can redistribute it and/or
7 // modify it under the terms of the GNU Lesser General Public
8 // License as published by the Free Software Foundation; either
9 // version 2.1 of the License, or (at your option) any later version.
10 //
11 // This library is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14 // Lesser General Public License for more details.
15 //
16 // You should have received a copy of the GNU Lesser General Public
17 // License along with this library; if not, write to the Free Software
18 // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
19 //
20 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
21 //
22
23 #ifndef OCCVIEWER_VIEWFRAME_H
24 #define OCCVIEWER_VIEWFRAME_H
25
26 #include "OCCViewer.h"
27 #include "OCCViewer_ViewWindow.h"
28
29 #include <gp_Pln.hxx>
30 #include <TopAbs_ShapeEnum.hxx>
31
32 class SUIT_Desktop;
33 class OCCViewer_Viewer;
34 class QGridLayout;
35
36 class OCCVIEWER_EXPORT OCCViewer_ViewFrame : public OCCViewer_ViewWindow  
37 {
38   Q_OBJECT
39 public:
40   enum { MAIN_VIEW, BOTTOM_RIGHT=MAIN_VIEW, BOTTOM_LEFT, TOP_LEFT, TOP_RIGHT };
41
42   OCCViewer_ViewFrame(SUIT_Desktop* theDesktop, OCCViewer_Viewer* theModel);
43   virtual ~OCCViewer_ViewFrame();
44
45   bool event( QEvent* e );
46
47   OCCViewer_ViewWindow*   getView( const int ) const;
48
49   virtual OCCViewer_ViewPort3d* getViewPort() { return getView(MAIN_VIEW)->getViewPort(); }
50   OCCViewer_ViewPort3d* getViewPort(int theView);
51
52   virtual void performRestoring( const viewAspect& theAspect) { getView(MAIN_VIEW)->performRestoring(theAspect); }
53   virtual void initLayout() {}
54
55   virtual void updateEnabledDrawMode();
56   virtual void setCuttingPlane( bool on, const double x = 0 , const double y = 0 , const double z = 0,
57                                 const double dx = 0, const double dy = 0, const double dz = 1);
58
59   virtual void setCuttingPlane( bool on, const gp_Pln thePln );
60
61   virtual bool isCuttingPlane() { return getView(MAIN_VIEW)->isCuttingPlane(); }
62
63   virtual QString getVisualParameters();
64   virtual void setVisualParameters( const QString& parameters );
65
66   virtual void initSketchers() { getView(MAIN_VIEW)->initSketchers(); }
67   virtual OCCViewer_ViewSketcher* getSketcher( const int i)  { return getView(MAIN_VIEW)->getSketcher(i); }
68   virtual void activateSketching( int i ) { getView(MAIN_VIEW)->activateSketching(i); }
69
70   virtual int  interactionStyle() const { return getView(MAIN_VIEW)->interactionStyle(); }
71   virtual void setInteractionStyle( const int i );
72
73   virtual int  zoomingStyle() const { return getView(MAIN_VIEW)->zoomingStyle(); }
74   virtual void setZoomingStyle( const int );
75
76   virtual bool isSelectionEnabled() const { return getView(MAIN_VIEW)->isSelectionEnabled(); }
77   virtual void enableSelection( bool );
78
79   virtual bool isPreselectionEnabled() const { return getView(MAIN_VIEW)->isPreselectionEnabled(); }
80   virtual void enablePreselection( bool );
81
82   virtual void setViewManager( SUIT_ViewManager* );
83
84   virtual bool eventFilter(QObject* watched, QEvent* e) { return SUIT_ViewWindow::eventFilter(watched, e); }
85
86   virtual QColor backgroundColor() const;                 // obsolete
87   virtual void   setBackgroundColor( const QColor& );     // obsolete
88
89   virtual Qtx::BackgroundData background() const;
90   virtual void                setBackground( const Qtx::BackgroundData& );
91
92   virtual void showStaticTrihedron( bool );
93
94   virtual void setDropDownButtons( bool );
95
96   virtual SUIT_CameraProperties cameraProperties();
97
98 public slots:
99   virtual void onFrontView() { getView(MAIN_VIEW)->onFrontView(); }
100   virtual void onViewFitAll();
101   virtual void onBackView() { getView(MAIN_VIEW)->onBackView(); }
102   virtual void onTopView() { getView(MAIN_VIEW)->onTopView(); }
103   virtual void onBottomView() { getView(MAIN_VIEW)->onBottomView(); }
104   virtual void onLeftView() { getView(MAIN_VIEW)->onLeftView(); }
105   virtual void onRightView() { getView(MAIN_VIEW)->onRightView(); }
106   virtual void onClockWiseView() { getView(MAIN_VIEW)->onClockWiseView(); }
107   virtual void onAntiClockWiseView() { getView(MAIN_VIEW)->onAntiClockWiseView(); }
108   virtual void onResetView() { getView(MAIN_VIEW)->onResetView(); }
109   virtual void onFitAll();
110   virtual void activateZoom() {}
111   virtual void activateWindowFit() {}
112   virtual void activateRotation() {}
113   virtual void activatePanning() {}
114   virtual void activateGlobalPanning() {}
115   virtual void onSetRotationPoint( bool on ) {}
116   virtual void onAxialScale() {}
117   virtual void onAmbientToogle() {}
118   virtual void onMemorizeView() {}
119   virtual void onRestoreView() {}
120   virtual void onSwitchInteractionStyle( bool on ) {}
121
122   virtual void activateSetRotationGravity() {}
123   virtual void activateSetRotationSelected( double theX, double theY, double theZ ) {}
124   virtual void activateStartPointSelection( TopAbs_ShapeEnum ) {}
125   virtual void updateGravityCoords() {}
126    
127   void onMaximizedView( OCCViewer_ViewWindow*, bool );
128   void returnTo3dView();
129
130   virtual void onDumpView();
131
132 protected:
133   virtual QImage dumpView();
134   virtual bool   dumpViewToFormat( const QImage&, const QString&, const QString& );
135
136 private slots:
137   void onContextMenuRequested(QContextMenuEvent*);
138
139 private:
140   void connectViewSignals( OCCViewer_ViewWindow* theView );
141   void updateWindowTitle( OCCViewer_ViewWindow* theView );
142   void createSubViews();
143   void splitSubViews();
144
145   QList<OCCViewer_ViewWindow*> myViews;
146   QGridLayout* myLayout;
147   OCCViewer_ViewWindow* myMaximizedView;
148   int mySplitMode;
149   QList<int> myViewsMode;
150
151   OCCViewer_ViewWindow* myPopupRequestedView;
152 };
153
154 #endif