Salome HOME
b5c3706da956764bebaa2b0db2a2341369ba8805
[modules/shaper.git] / src / XGUI / XGUI_ViewerProxy.cpp
1 #include "XGUI_ViewerProxy.h"
2 #include "XGUI_Workshop.h"
3 #include "XGUI_MainWindow.h"
4 #include "XGUI_ViewPort.h"
5 #include "XGUI_ViewWindow.h"
6 #include "XGUI_Viewer.h"
7 #include "XGUI_SalomeConnector.h"
8
9
10 XGUI_ViewerProxy::XGUI_ViewerProxy(XGUI_Workshop* theParent)
11 : XGUI_SalomeViewer(theParent), myWorkshop(theParent)
12 {
13 }
14
15
16 Handle(AIS_InteractiveContext) XGUI_ViewerProxy::AISContext() const
17 {
18   if (myWorkshop->isSalomeMode()) {
19     return myWorkshop->salomeConnector()->viewer()->AISContext();
20   } else {
21     return myWorkshop->mainWindow()->viewer()->AISContext();
22   }
23 }
24
25 Handle(V3d_Viewer) XGUI_ViewerProxy::v3dViewer() const
26 {
27   if (myWorkshop->isSalomeMode()) {
28     return myWorkshop->salomeConnector()->viewer()->v3dViewer();
29   } else {
30     return myWorkshop->mainWindow()->viewer()->v3dViewer();
31   }
32 }
33
34 Handle(V3d_View) XGUI_ViewerProxy::activeView() const
35 {
36   if (myWorkshop->isSalomeMode()) {
37     return myWorkshop->salomeConnector()->viewer()->activeView();
38   } else {
39     XGUI_Viewer* aViewer = myWorkshop->mainWindow()->viewer();
40     return aViewer->activeViewWindow()->viewPort()->getView();
41   }
42 }
43  
44 void XGUI_ViewerProxy::setViewProjection(double theX, double theY, double theZ)
45 {
46   Handle(V3d_View) aView3d = activeView();
47   if ( !aView3d.IsNull() ) {
48     aView3d->SetProj(theX, theY, theZ);
49     aView3d->FitAll( 0.01, true, true );
50     aView3d->SetZSize(0.);
51   }
52 }
53
54 void XGUI_ViewerProxy::fitAll()
55 {
56   if (myWorkshop->isSalomeMode()) {
57     myWorkshop->salomeConnector()->viewer()->fitAll();
58   }
59   else {
60     XGUI_Viewer* aViewer = myWorkshop->mainWindow()->viewer();
61     aViewer->activeViewWindow()->viewPort()->fitAll();
62   }
63 }
64
65 void XGUI_ViewerProxy::connectToViewer()
66 {
67   if (myWorkshop->isSalomeMode()) {
68     XGUI_SalomeViewer* aViewer = myWorkshop->salomeConnector()->viewer();
69
70     connect(aViewer, SIGNAL(lastViewClosed()),
71             this, SIGNAL(lastViewClosed()));
72     connect(aViewer, SIGNAL(tryCloseView()),
73             this, SIGNAL(tryCloseView()));
74     connect(aViewer, SIGNAL(deleteView()),
75             this, SIGNAL(deleteView()));
76     connect(aViewer, SIGNAL(viewCreated()),
77             this, SIGNAL(viewCreated()));
78     connect(aViewer, SIGNAL(activated()),
79             this, SIGNAL(activated()));
80
81     connect(aViewer, SIGNAL(mousePress(QMouseEvent*)),
82             this, SIGNAL(mousePress(QMouseEvent*)));
83
84     connect(aViewer, SIGNAL(mouseRelease(QMouseEvent*)),
85             this, SIGNAL(mouseRelease(QMouseEvent*)));
86     
87     connect(aViewer, SIGNAL(mouseDoubleClick(QMouseEvent*)),
88             this, SIGNAL(mouseDoubleClick(QMouseEvent*)));
89     
90     connect(aViewer, SIGNAL(mouseMove(QMouseEvent*)),
91             this, SIGNAL(mouseMove(QMouseEvent*)));
92     
93     connect(aViewer, SIGNAL(keyPress(QKeyEvent*)),
94             this, SIGNAL(keyPress(QKeyEvent*)));
95     
96     connect(aViewer, SIGNAL(keyRelease(QKeyEvent*)),
97             this, SIGNAL(keyRelease(QKeyEvent*)));
98
99     connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged()));
100   } else {
101     XGUI_Viewer* aViewer = myWorkshop->mainWindow()->viewer();
102
103     connect(aViewer, SIGNAL(lastViewClosed()),
104             this, SIGNAL(lastViewClosed()));
105     connect(aViewer, SIGNAL(tryCloseView(XGUI_ViewWindow*)),
106             this, SIGNAL(tryCloseView()));
107     connect(aViewer, SIGNAL(deleteView(XGUI_ViewWindow*)),
108             this, SIGNAL(deleteView()));
109     connect(aViewer, SIGNAL(viewCreated(XGUI_ViewWindow*)),
110             this, SIGNAL(viewCreated()));
111     connect(aViewer, SIGNAL(activated(XGUI_ViewWindow*)),
112             this, SIGNAL(activated()));
113
114     connect(aViewer, SIGNAL(mousePress(XGUI_ViewWindow*, QMouseEvent*)),
115             this, SLOT(onMousePress(XGUI_ViewWindow*, QMouseEvent*)));
116     connect(aViewer, SIGNAL(mouseRelease(XGUI_ViewWindow*, QMouseEvent*)),
117             this, SLOT(onMouseRelease(XGUI_ViewWindow*, QMouseEvent*)));
118     connect(aViewer, SIGNAL(mouseDoubleClick(XGUI_ViewWindow*, QMouseEvent*)),
119             this, SLOT(onMouseDoubleClick(XGUI_ViewWindow*, QMouseEvent*)));
120     connect(aViewer, SIGNAL(mouseMove(XGUI_ViewWindow*, QMouseEvent*)),
121             this, SLOT(onMouseMove(XGUI_ViewWindow*, QMouseEvent*)));
122     connect(aViewer, SIGNAL(keyPress(XGUI_ViewWindow*, QKeyEvent*)),
123             this, SLOT(onKeyPress(XGUI_ViewWindow*, QKeyEvent*)));
124     connect(aViewer, SIGNAL(keyRelease(XGUI_ViewWindow*, QKeyEvent*)),
125             this, SLOT(onKeyRelease(XGUI_ViewWindow*, QKeyEvent*)));
126
127     connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged()));
128   }
129 }
130
131 void XGUI_ViewerProxy::onMousePress(XGUI_ViewWindow*, QMouseEvent* theEvent)
132 {
133   emit mousePress(theEvent);
134 }
135
136 void XGUI_ViewerProxy::onMouseRelease(XGUI_ViewWindow*, QMouseEvent* theEvent)
137 {
138   emit mouseRelease(theEvent);
139 }
140
141 void XGUI_ViewerProxy::onMouseDoubleClick(XGUI_ViewWindow*, QMouseEvent* theEvent)
142 {
143   emit mouseDoubleClick(theEvent);
144 }
145
146 void XGUI_ViewerProxy::onMouseMove(XGUI_ViewWindow*, QMouseEvent* theEvent)
147 {
148   emit mouseMove(theEvent);
149 }
150
151 void XGUI_ViewerProxy::onKeyPress(XGUI_ViewWindow*, QKeyEvent* theEvent)
152 {
153   emit keyPress(theEvent);
154 }
155
156 void XGUI_ViewerProxy::onKeyRelease(XGUI_ViewWindow*, QKeyEvent* theEvent)
157 {
158   emit keyRelease(theEvent);
159 }
160
161 //***************************************
162 void XGUI_ViewerProxy::enableSelection(bool isEnabled)
163 {
164   if (myWorkshop->isSalomeMode()) {
165     myWorkshop->salomeConnector()->viewer()->enableSelection(isEnabled);
166   } else {
167     myWorkshop->mainWindow()->viewer()->setSelectionEnabled(isEnabled);
168   }
169 }
170
171 //***************************************
172 bool XGUI_ViewerProxy::isSelectionEnabled() const
173 {
174   if (myWorkshop->isSalomeMode()) {
175     return myWorkshop->salomeConnector()->viewer()->isSelectionEnabled();
176   } else {
177     return myWorkshop->mainWindow()->viewer()->isSelectionEnabled();
178   }
179 }
180
181 //***************************************
182 void XGUI_ViewerProxy::enableMultiselection(bool isEnable)
183 {
184   if (myWorkshop->isSalomeMode()) {
185     myWorkshop->salomeConnector()->viewer()->enableMultiselection(isEnable);
186   } else {
187     myWorkshop->mainWindow()->viewer()->setMultiSelectionEnabled(isEnable);
188   }
189 }
190
191 //***************************************
192 bool XGUI_ViewerProxy::isMultiSelectionEnabled() const
193 {
194   if (myWorkshop->isSalomeMode()) {
195     return myWorkshop->salomeConnector()->viewer()->isMultiSelectionEnabled();
196   } else {
197     return myWorkshop->mainWindow()->viewer()->isMultiSelectionEnabled();
198   }
199 }