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()->viewPort()->getView();
44 void XGUI_ViewerProxy::setViewProjection(double theX, double theY, double theZ)
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.);
54 void XGUI_ViewerProxy::fitAll()
56 if (myWorkshop->isSalomeMode()) {
57 myWorkshop->salomeConnector()->viewer()->fitAll();
60 XGUI_Viewer* aViewer = myWorkshop->mainWindow()->viewer();
61 aViewer->activeViewWindow()->viewPort()->fitAll();
65 void XGUI_ViewerProxy::connectToViewer()
67 if (myWorkshop->isSalomeMode()) {
68 XGUI_SalomeViewer* aViewer = myWorkshop->salomeConnector()->viewer();
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()));
81 connect(aViewer, SIGNAL(mousePress(QMouseEvent*)),
82 this, SIGNAL(mousePress(QMouseEvent*)));
84 connect(aViewer, SIGNAL(mouseRelease(QMouseEvent*)),
85 this, SIGNAL(mouseRelease(QMouseEvent*)));
87 connect(aViewer, SIGNAL(mouseDoubleClick(QMouseEvent*)),
88 this, SIGNAL(mouseDoubleClick(QMouseEvent*)));
90 connect(aViewer, SIGNAL(mouseMove(QMouseEvent*)),
91 this, SIGNAL(mouseMove(QMouseEvent*)));
93 connect(aViewer, SIGNAL(keyPress(QKeyEvent*)),
94 this, SIGNAL(keyPress(QKeyEvent*)));
96 connect(aViewer, SIGNAL(keyRelease(QKeyEvent*)),
97 this, SIGNAL(keyRelease(QKeyEvent*)));
99 connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged()));
100 connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)),
101 this, SIGNAL(contextMenuRequested(QContextMenuEvent*)));
104 XGUI_Viewer* aViewer = myWorkshop->mainWindow()->viewer();
106 connect(aViewer, SIGNAL(lastViewClosed()),
107 this, SIGNAL(lastViewClosed()));
108 connect(aViewer, SIGNAL(tryCloseView(XGUI_ViewWindow*)),
109 this, SIGNAL(tryCloseView()));
110 connect(aViewer, SIGNAL(deleteView(XGUI_ViewWindow*)),
111 this, SIGNAL(deleteView()));
112 connect(aViewer, SIGNAL(viewCreated(XGUI_ViewWindow*)),
113 this, SIGNAL(viewCreated()));
114 connect(aViewer, SIGNAL(activated(XGUI_ViewWindow*)),
115 this, SIGNAL(activated()));
117 connect(aViewer, SIGNAL(mousePress(XGUI_ViewWindow*, QMouseEvent*)),
118 this, SLOT(onMousePress(XGUI_ViewWindow*, QMouseEvent*)));
119 connect(aViewer, SIGNAL(mouseRelease(XGUI_ViewWindow*, QMouseEvent*)),
120 this, SLOT(onMouseRelease(XGUI_ViewWindow*, QMouseEvent*)));
121 connect(aViewer, SIGNAL(mouseDoubleClick(XGUI_ViewWindow*, QMouseEvent*)),
122 this, SLOT(onMouseDoubleClick(XGUI_ViewWindow*, QMouseEvent*)));
123 connect(aViewer, SIGNAL(mouseMove(XGUI_ViewWindow*, QMouseEvent*)),
124 this, SLOT(onMouseMove(XGUI_ViewWindow*, QMouseEvent*)));
125 connect(aViewer, SIGNAL(keyPress(XGUI_ViewWindow*, QKeyEvent*)),
126 this, SLOT(onKeyPress(XGUI_ViewWindow*, QKeyEvent*)));
127 connect(aViewer, SIGNAL(keyRelease(XGUI_ViewWindow*, QKeyEvent*)),
128 this, SLOT(onKeyRelease(XGUI_ViewWindow*, QKeyEvent*)));
130 connect(aViewer, SIGNAL(selectionChanged()), this, SIGNAL(selectionChanged()));
131 connect(aViewer, SIGNAL(contextMenuRequested(QContextMenuEvent*)),
132 this, SIGNAL(contextMenuRequested(QContextMenuEvent*)));
136 void XGUI_ViewerProxy::onMousePress(XGUI_ViewWindow*, QMouseEvent* theEvent)
138 emit mousePress(theEvent);
141 void XGUI_ViewerProxy::onMouseRelease(XGUI_ViewWindow*, QMouseEvent* theEvent)
143 emit mouseRelease(theEvent);
146 void XGUI_ViewerProxy::onMouseDoubleClick(XGUI_ViewWindow*, QMouseEvent* theEvent)
148 emit mouseDoubleClick(theEvent);
151 void XGUI_ViewerProxy::onMouseMove(XGUI_ViewWindow*, QMouseEvent* theEvent)
153 emit mouseMove(theEvent);
156 void XGUI_ViewerProxy::onKeyPress(XGUI_ViewWindow*, QKeyEvent* theEvent)
158 emit keyPress(theEvent);
161 void XGUI_ViewerProxy::onKeyRelease(XGUI_ViewWindow*, QKeyEvent* theEvent)
163 emit keyRelease(theEvent);
166 //***************************************
167 void XGUI_ViewerProxy::enableSelection(bool isEnabled)
169 if (myWorkshop->isSalomeMode()) {
170 myWorkshop->salomeConnector()->viewer()->enableSelection(isEnabled);
172 myWorkshop->mainWindow()->viewer()->setSelectionEnabled(isEnabled);
176 //***************************************
177 bool XGUI_ViewerProxy::isSelectionEnabled() const
179 if (myWorkshop->isSalomeMode()) {
180 return myWorkshop->salomeConnector()->viewer()->isSelectionEnabled();
182 return myWorkshop->mainWindow()->viewer()->isSelectionEnabled();
186 //***************************************
187 void XGUI_ViewerProxy::enableMultiselection(bool isEnable)
189 if (myWorkshop->isSalomeMode()) {
190 myWorkshop->salomeConnector()->viewer()->enableMultiselection(isEnable);
192 myWorkshop->mainWindow()->viewer()->setMultiSelectionEnabled(isEnable);
196 //***************************************
197 bool XGUI_ViewerProxy::isMultiSelectionEnabled() const
199 if (myWorkshop->isSalomeMode()) {
200 return myWorkshop->salomeConnector()->viewer()->isMultiSelectionEnabled();
202 return myWorkshop->mainWindow()->viewer()->isMultiSelectionEnabled();