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"
10 XGUI_ViewerProxy::XGUI_ViewerProxy(XGUI_Workshop* theParent)
11 : XGUI_SalomeViewer(theParent), myWorkshop(theParent)
16 Handle(AIS_InteractiveContext) XGUI_ViewerProxy::AISContext() const
18 if (myWorkshop->isSalomeMode()) {
19 return myWorkshop->salomeConnector()->viewer()->AISContext();
21 return myWorkshop->mainWindow()->viewer()->AISContext();
25 Handle(V3d_Viewer) XGUI_ViewerProxy::v3dViewer() const
27 if (myWorkshop->isSalomeMode()) {
28 return myWorkshop->salomeConnector()->viewer()->v3dViewer();
30 return myWorkshop->mainWindow()->viewer()->v3dViewer();
34 Handle(V3d_View) XGUI_ViewerProxy::activeView() const
36 if (myWorkshop->isSalomeMode()) {
37 return myWorkshop->salomeConnector()->viewer()->activeView();
39 XGUI_Viewer* aViewer = myWorkshop->mainWindow()->viewer();
40 return (aViewer->activeViewWindow())?
41 aViewer->activeViewWindow()->viewPort()->getView():
46 void XGUI_ViewerProxy::setViewProjection(double theX, double theY, double theZ)
48 Handle(V3d_View) aView3d = activeView();
49 if ( !aView3d.IsNull() ) {
50 aView3d->SetProj(theX, theY, theZ);
51 aView3d->FitAll( 0.01, true, true );
52 aView3d->SetZSize(0.);
56 void XGUI_ViewerProxy::fitAll()
58 if (myWorkshop->isSalomeMode()) {
59 myWorkshop->salomeConnector()->viewer()->fitAll();
62 XGUI_Viewer* aViewer = myWorkshop->mainWindow()->viewer();
63 if (aViewer->activeViewWindow())
64 aViewer->activeViewWindow()->viewPort()->fitAll();
68 void XGUI_ViewerProxy::connectToViewer()
70 if (myWorkshop->isSalomeMode()) {
71 XGUI_SalomeViewer* aViewer = myWorkshop->salomeConnector()->viewer();
73 connect(aViewer, SIGNAL(lastViewClosed()),
74 this, SIGNAL(lastViewClosed()));
75 connect(aViewer, SIGNAL(tryCloseView()),
76 this, SIGNAL(tryCloseView()));
77 connect(aViewer, SIGNAL(deleteView()),
78 this, SIGNAL(deleteView()));
79 connect(aViewer, SIGNAL(viewCreated()),
80 this, SIGNAL(viewCreated()));
81 connect(aViewer, SIGNAL(activated()),
82 this, SIGNAL(activated()));
84 connect(aViewer, SIGNAL(mousePress(QMouseEvent*)),
85 this, SIGNAL(mousePress(QMouseEvent*)));
87 connect(aViewer, SIGNAL(mouseRelease(QMouseEvent*)),
88 this, SIGNAL(mouseRelease(QMouseEvent*)));
90 connect(aViewer, SIGNAL(mouseDoubleClick(QMouseEvent*)),
91 this, SIGNAL(mouseDoubleClick(QMouseEvent*)));
93 connect(aViewer, SIGNAL(mouseMove(QMouseEvent*)),
94 this, SIGNAL(mouseMove(QMouseEvent*)));
96 connect(aViewer, SIGNAL(keyPress(QKeyEvent*)),
97 this, SIGNAL(keyPress(QKeyEvent*)));
99 connect(aViewer, SIGNAL(keyRelease(QKeyEvent*)),
100 this, SIGNAL(keyRelease(QKeyEvent*)));
102 connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged()));
103 connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)),
104 this, SIGNAL(contextMenuRequested(QContextMenuEvent*)));
107 XGUI_Viewer* aViewer = myWorkshop->mainWindow()->viewer();
109 connect(aViewer, SIGNAL(lastViewClosed()),
110 this, SIGNAL(lastViewClosed()));
111 connect(aViewer, SIGNAL(tryCloseView(XGUI_ViewWindow*)),
112 this, SIGNAL(tryCloseView()));
113 connect(aViewer, SIGNAL(deleteView(XGUI_ViewWindow*)),
114 this, SIGNAL(deleteView()));
115 connect(aViewer, SIGNAL(viewCreated(XGUI_ViewWindow*)),
116 this, SIGNAL(viewCreated()));
117 connect(aViewer, SIGNAL(activated(XGUI_ViewWindow*)),
118 this, SIGNAL(activated()));
120 connect(aViewer, SIGNAL(mousePress(XGUI_ViewWindow*, QMouseEvent*)),
121 this, SLOT(onMousePress(XGUI_ViewWindow*, QMouseEvent*)));
122 connect(aViewer, SIGNAL(mouseRelease(XGUI_ViewWindow*, QMouseEvent*)),
123 this, SLOT(onMouseRelease(XGUI_ViewWindow*, QMouseEvent*)));
124 connect(aViewer, SIGNAL(mouseDoubleClick(XGUI_ViewWindow*, QMouseEvent*)),
125 this, SLOT(onMouseDoubleClick(XGUI_ViewWindow*, QMouseEvent*)));
126 connect(aViewer, SIGNAL(mouseMove(XGUI_ViewWindow*, QMouseEvent*)),
127 this, SLOT(onMouseMove(XGUI_ViewWindow*, QMouseEvent*)));
128 connect(aViewer, SIGNAL(keyPress(XGUI_ViewWindow*, QKeyEvent*)),
129 this, SLOT(onKeyPress(XGUI_ViewWindow*, QKeyEvent*)));
130 connect(aViewer, SIGNAL(keyRelease(XGUI_ViewWindow*, QKeyEvent*)),
131 this, SLOT(onKeyRelease(XGUI_ViewWindow*, QKeyEvent*)));
133 connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged()));
134 connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)),
135 this, SIGNAL(contextMenuRequested(QContextMenuEvent*)));
139 void XGUI_ViewerProxy::onMousePress(XGUI_ViewWindow*, QMouseEvent* theEvent)
141 emit mousePress(theEvent);
144 void XGUI_ViewerProxy::onMouseRelease(XGUI_ViewWindow*, QMouseEvent* theEvent)
146 emit mouseRelease(theEvent);
149 void XGUI_ViewerProxy::onMouseDoubleClick(XGUI_ViewWindow*, QMouseEvent* theEvent)
151 emit mouseDoubleClick(theEvent);
154 void XGUI_ViewerProxy::onMouseMove(XGUI_ViewWindow*, QMouseEvent* theEvent)
156 emit mouseMove(theEvent);
159 void XGUI_ViewerProxy::onKeyPress(XGUI_ViewWindow*, QKeyEvent* theEvent)
161 emit keyPress(theEvent);
164 void XGUI_ViewerProxy::onKeyRelease(XGUI_ViewWindow*, QKeyEvent* theEvent)
166 emit keyRelease(theEvent);
169 //***************************************
170 void XGUI_ViewerProxy::enableSelection(bool isEnabled)
172 if (myWorkshop->isSalomeMode()) {
173 myWorkshop->salomeConnector()->viewer()->enableSelection(isEnabled);
175 myWorkshop->mainWindow()->viewer()->setSelectionEnabled(isEnabled);
179 //***************************************
180 bool XGUI_ViewerProxy::isSelectionEnabled() const
182 if (myWorkshop->isSalomeMode()) {
183 return myWorkshop->salomeConnector()->viewer()->isSelectionEnabled();
185 return myWorkshop->mainWindow()->viewer()->isSelectionEnabled();
189 //***************************************
190 void XGUI_ViewerProxy::enableMultiselection(bool isEnable)
192 if (myWorkshop->isSalomeMode()) {
193 myWorkshop->salomeConnector()->viewer()->enableMultiselection(isEnable);
195 myWorkshop->mainWindow()->viewer()->setMultiSelectionEnabled(isEnable);
199 //***************************************
200 bool XGUI_ViewerProxy::isMultiSelectionEnabled() const
202 if (myWorkshop->isSalomeMode()) {
203 return myWorkshop->salomeConnector()->viewer()->isMultiSelectionEnabled();
205 return myWorkshop->mainWindow()->viewer()->isMultiSelectionEnabled();