Salome HOME
Merge branch 'master' of newgeom:newgeom
[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::connectToViewer()
45 {
46   if (myWorkshop->isSalomeMode()) {
47     XGUI_SalomeViewer* aViewer = myWorkshop->salomeConnector()->viewer();
48
49     connect(aViewer, SIGNAL(lastViewClosed()),
50             this, SIGNAL(lastViewClosed()));
51     connect(aViewer, SIGNAL(tryCloseView()),
52             this, SIGNAL(tryCloseView()));
53     connect(aViewer, SIGNAL(deleteView()),
54             this, SIGNAL(deleteView()));
55     connect(aViewer, SIGNAL(viewCreated()),
56             this, SIGNAL(viewCreated()));
57     connect(aViewer, SIGNAL(activated()),
58             this, SIGNAL(activated()));
59
60     connect(aViewer, SIGNAL(mousePress(QMouseEvent* theEvent)),
61             this, SIGNAL(mousePress(QMouseEvent* theEvent)));
62     connect(aViewer, SIGNAL(mouseRelease(QMouseEvent* theEvent)),
63             this, SIGNAL(mouseRelease(QMouseEvent* theEvent)));
64     connect(aViewer, SIGNAL(mouseDoubleClick(QMouseEvent* theEvent)),
65             this, SIGNAL(mouseDoubleClick(QMouseEvent* theEvent)));
66     connect(aViewer, SIGNAL(mouseMove(QMouseEvent* theEvent)),
67             this, SIGNAL(mouseMove(QMouseEvent* theEvent)));
68     connect(aViewer, SIGNAL(keyPress(QKeyEvent* theEvent)),
69             this, SIGNAL(keyPress(QKeyEvent* theEvent)));
70     connect(aViewer, SIGNAL(keyRelease(QKeyEvent* theEvent)),
71             this, SIGNAL(keyRelease(QKeyEvent* theEvent)));
72   } else {
73     XGUI_Viewer* aViewer = myWorkshop->mainWindow()->viewer();
74
75     connect(aViewer, SIGNAL(lastViewClosed()),
76             this, SIGNAL(lastViewClosed()));
77     connect(aViewer, SIGNAL(tryCloseView(XGUI_ViewWindow*)),
78             this, SIGNAL(tryCloseView()));
79     connect(aViewer, SIGNAL(deleteView(XGUI_ViewWindow*)),
80             this, SIGNAL(deleteView()));
81     connect(aViewer, SIGNAL(viewCreated(XGUI_ViewWindow*)),
82             this, SIGNAL(viewCreated()));
83     connect(aViewer, SIGNAL(activated(XGUI_ViewWindow*)),
84             this, SIGNAL(activated()));
85
86     connect(aViewer, SIGNAL(mousePress(XGUI_ViewWindow*, QMouseEvent*)),
87             this, SLOT(onMousePress(XGUI_ViewWindow*, QMouseEvent*)));
88     connect(aViewer, SIGNAL(mouseRelease(XGUI_ViewWindow*, QMouseEvent*)),
89             this, SLOT(onMouseRelease(XGUI_ViewWindow*, QMouseEvent*)));
90     connect(aViewer, SIGNAL(mouseDoubleClick(XGUI_ViewWindow*, QMouseEvent*)),
91             this, SLOT(onMouseDoubleClick(XGUI_ViewWindow*, QMouseEvent*)));
92     connect(aViewer, SIGNAL(mouseMove(XGUI_ViewWindow*, QMouseEvent*)),
93             this, SLOT(onMouseMove(XGUI_ViewWindow*, QMouseEvent*)));
94     connect(aViewer, SIGNAL(keyPress(XGUI_ViewWindow*, QKeyEvent*)),
95             this, SLOT(onKeyPress(XGUI_ViewWindow*, QKeyEvent*)));
96     connect(aViewer, SIGNAL(keyRelease(XGUI_ViewWindow*, QKeyEvent*)),
97             this, SLOT(onKeyRelease(XGUI_ViewWindow*, QKeyEvent*)));
98   }
99 }
100
101 void XGUI_ViewerProxy::onMousePress(XGUI_ViewWindow*, QMouseEvent* theEvent)
102 {
103   emit mousePress(theEvent);
104 }
105
106 void XGUI_ViewerProxy::onMouseRelease(XGUI_ViewWindow*, QMouseEvent* theEvent)
107 {
108   emit mouseRelease(theEvent);
109 }
110
111 void XGUI_ViewerProxy::onMouseDoubleClick(XGUI_ViewWindow*, QMouseEvent* theEvent)
112 {
113   emit mouseDoubleClick(theEvent);
114 }
115
116 void XGUI_ViewerProxy::onMouseMove(XGUI_ViewWindow*, QMouseEvent* theEvent)
117 {
118   emit mouseMove(theEvent);
119 }
120
121 void XGUI_ViewerProxy::onKeyPress(XGUI_ViewWindow*, QKeyEvent* theEvent)
122 {
123   emit keyPress(theEvent);
124 }
125
126 void XGUI_ViewerProxy::onKeyRelease(XGUI_ViewWindow*, QKeyEvent* theEvent)
127 {
128   emit keyRelease(theEvent);
129 }