00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033 #ifdef G4VIS_BUILD_OPENGLWT_DRIVER
00034
00035 #include "G4OpenGLImmediateWtViewer.hh"
00036 #include "G4OpenGLImmediateSceneHandler.hh"
00037
00038
00039 #include <qevent.h>
00040
00041 #include "G4ios.hh"
00042
00043 G4OpenGLImmediateWtViewer::G4OpenGLImmediateWtViewer
00044 (
00045 const G4String& name)
00046
00047
00048
00049
00050
00051 {
00052
00053 #ifdef G4DEBUG_VIS_OGL
00054 printf("G4OpenGLImmediateWtViewer INIT\n");
00055 #endif
00056
00066
00067 }
00068
00069 G4OpenGLImmediateWtViewer::~G4OpenGLImmediateWtViewer() {
00070 }
00071
00072
00073
00074 void G4OpenGLImmediateWtViewer::DrawView() {
00075 #ifdef G4DEBUG_VIS_OGL
00076 printf("G4OpenGLImmediateWtViewer DrawView\n");
00077 #endif
00078 fQtViewer->updateQWidget();
00079
00080 }
00081
00082
00083 void G4OpenGLImmediateWtViewer::WtMousePressEvent(Wt::WMouseEvent event)
00084 {
00085 #ifdef G4DEBUG_VIS_OGL
00086 printf("G4OpenGLImmediateWtViewer mousePress\n");
00087 #endif
00088
00089 fQtViewer->G4MousePressEvent(ConvertWtMouseEventToQt(event));
00090 }
00091
00092 void G4OpenGLImmediateWtViewer::WtKeyPressEvent (Wt::WKeyEvent event)
00093 {
00094 #ifdef G4DEBUG_VIS_OGL
00095 printf("G4OpenGLImmediateWtViewer keyPressEvent\n");
00096 #endif
00097 fQtViewer->G4keyPressEvent(ConvertWtKeyEventToQt(event));
00098 }
00099
00100 void G4OpenGLImmediateWtViewer::WtWheelEvent (Wt::WMouseEvent event)
00101 {
00102 #ifdef G4DEBUG_VIS_OGL
00103 printf("G4OpenGLImmediateWtViewer wheelEvent\n");
00104 #endif
00105 fQtViewer->G4wheelEvent(ConvertWtWheelEventToQt(event));
00106 }
00107
00119 void G4OpenGLImmediateWtViewer::WtMouseDoubleClickEvent(Wt::WMouseEvent )
00120 {
00121 #ifdef G4DEBUG_VIS_OGL
00122 printf("G4OpenGLImmediateWtViewer mouseDoubleClickEvent\n");
00123 #endif
00124 fQtViewer->G4MouseDoubleClickEvent();
00125 }
00126
00134 void G4OpenGLImmediateWtViewer::WtMouseMoveEvent(Wt::WMouseEvent event)
00135 {
00136 #ifdef G4DEBUG_VIS_OGL
00137 printf("G4OpenGLImmediateWtViewer mouseMoveEvent\n");
00138 #endif
00139 fQtViewer->G4MouseMoveEvent(ConvertWtMouseEventToQt(event));
00140 }
00141
00142
00151 void G4OpenGLImmediateWtViewer::paintEvent(Wt::WPaintDevice * painter) {
00152 #ifdef G4DEBUG_VIS_OGL
00153 printf("G4OpenGLImmediateWtViewer paintEvent\n");
00154 #endif
00155 fQtViewer->updateQWidget();
00156 }
00157
00158
00159
00160
00161
00162 void G4OpenGLImmediateWtViewer::ShowView (
00163 )
00164
00165
00166 {
00167 #ifdef G4DEBUG_VIS_OGL
00168 printf("G4OpenGLImmediateWtViewer ShowView\n");
00169 #endif
00170 fQtViewer->activateWindow();
00171 }
00172
00173
00174 QMouseEvent * G4OpenGLImmediateWtViewer::ConvertWtMouseEventToQt(Wt::WMouseEvent event) {
00175 Qt::MouseButton bt;
00176 if (event.button() == (Wt::WMouseEvent::NoButton)) {
00177 bt = Qt::NoButton;
00178 } else if (event.button() == (Wt::WMouseEvent::LeftButton)) {
00179 bt = Qt::LeftButton;
00180 } else if (event.button() == (Wt::WMouseEvent::RightButton)) {
00181 bt = Qt::RightButton;
00182 } else if (event.button() == (Wt::WMouseEvent::MiddleButton)) {
00183 bt = Qt::MidButton;
00184 }
00185
00186 Qt::KeyboardModifiers km;
00187 if (event.modifiers() == Wt::NoModifier) {
00188 km = Qt::NoModifier;
00189 } else if (event.modifiers() == Wt::ControlModifier) {
00190 km = Qt::ControlModifier;
00191 } else if (event.modifiers() == Wt::ShiftModifier) {
00192 km = Qt::ShiftModifier;
00193 } else if (event.modifiers() == Wt::AltModifier) {
00194 km = Qt::AltModifier;
00195 } else if (event.modifiers() == Wt::MetaModifier) {
00196 km = Qt::MetaModifier;
00197 }
00198 QPoint pt = QPoint(event.widget().x,event.widget().y);
00199 QMouseEvent *e = new QMouseEvent(QEvent::None, pt, bt, bt, km);
00200 return e;
00201 }
00202
00203
00204 QWheelEvent * G4OpenGLImmediateWtViewer::ConvertWtWheelEventToQt(Wt::WMouseEvent event) {
00205 Qt::MouseButton bt;
00206 if (event.button() == (Wt::WMouseEvent::NoButton)) {
00207 bt = Qt::NoButton;
00208 } else if (event.button() == (Wt::WMouseEvent::LeftButton)) {
00209 bt = Qt::LeftButton;
00210 } else if (event.button() == (Wt::WMouseEvent::RightButton)) {
00211 bt = Qt::RightButton;
00212 } else if (event.button() == (Wt::WMouseEvent::MiddleButton)) {
00213 bt = Qt::MidButton;
00214 }
00215
00216 Qt::KeyboardModifiers km;
00217 if (event.modifiers() == Wt::NoModifier) {
00218 km = Qt::NoModifier;
00219 } else if (event.modifiers() == Wt::ControlModifier) {
00220 km = Qt::ControlModifier;
00221 } else if (event.modifiers() == Wt::ShiftModifier) {
00222 km = Qt::ShiftModifier;
00223 } else if (event.modifiers() == Wt::AltModifier) {
00224 km = Qt::AltModifier;
00225 } else if (event.modifiers() == Wt::MetaModifier) {
00226 km = Qt::MetaModifier;
00227 }
00228 QPoint pt = QPoint(event.widget().x,event.widget().y);
00229 QWheelEvent *e = new QWheelEvent( pt, event.wheelDelta (), bt, km);
00230 return e;
00231 }
00232
00233
00234 QKeyEvent * G4OpenGLImmediateWtViewer::ConvertWtKeyEventToQt(Wt::WKeyEvent event) {
00235
00236 Qt::KeyboardModifiers km;
00237 if (event.modifiers() == Wt::NoModifier) {
00238 km = Qt::NoModifier;
00239 } else if (event.modifiers() == Wt::ControlModifier) {
00240 km = Qt::ControlModifier;
00241 } else if (event.modifiers() == Wt::ShiftModifier) {
00242 km = Qt::ShiftModifier;
00243 } else if (event.modifiers() == Wt::AltModifier) {
00244 km = Qt::AltModifier;
00245 } else if (event.modifiers() == Wt::MetaModifier) {
00246 km = Qt::MetaModifier;
00247 }
00248 QKeyEvent *e = new QKeyEvent( QEvent::None, event.charCode(), km );
00249 return e;
00250 }
00251 #endif