29 #include <QApplication>
30 #include <QColorDialog>
31 #include <QFileDialog>
35 #include "WMainWindow.h"
36 #include "WQtGLScreenCapture.h"
37 #include "WQtGLWidget.h"
39 #include "WSettingAction.h"
40 #include "core/common/WColor.h"
41 #include "core/common/WConditionOneShot.h"
42 #include "core/common/WFlag.h"
43 #include "core/common/WLogger.h"
44 #include "core/graphicsEngine/WGE2DManipulator.h"
45 #include "core/graphicsEngine/WGEAdvancedManipulator.h"
46 #include "core/graphicsEngine/WGENoOpManipulator.h"
47 #include "core/graphicsEngine/WGEViewer.h"
48 #include "core/graphicsEngine/WGEZoomTrackballManipulator.h"
49 #include "core/graphicsEngine/WGraphicsEngine.h"
50 #include "core/kernel/WKernel.h"
51 #include "events/WEventTypes.h"
52 #include "events/WRenderedFrameEvent.h"
55 QGLWidget( getDefaultFormat(), parent, dynamic_cast< const QGLWidget* >( shareWidget ) ),
56 m_nameOfViewer( nameOfViewer ),
61 setSizePolicy( QSizePolicy( QSizePolicy::QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding ) );
64 setAttribute( Qt::WA_PaintOnScreen );
65 setAttribute( Qt::WA_NoSystemBackground );
66 setFocusPolicy( Qt::ClickFocus );
67 setMouseTracking(
true );
70 osg::ref_ptr<osg::Referenced> wdata;
76 connect( &
m_Timer, SIGNAL( timeout() ),
this, SLOT( updateGL() ) );
96 QKeySequence( Qt::CTRL + Qt::SHIFT + Qt::Key_L ) );
97 tmpAction->setIconVisibleInMenu(
true );
101 QKeySequence( Qt::CTRL + Qt::SHIFT + Qt::Key_R ) );
102 tmpAction->setIconVisibleInMenu(
true );
106 QKeySequence( Qt::CTRL + Qt::SHIFT + Qt::Key_S ) );
107 tmpAction->setIconVisibleInMenu(
true );
111 QKeySequence( Qt::CTRL + Qt::SHIFT + Qt::Key_I ) );
112 tmpAction->setIconVisibleInMenu(
true );
116 QKeySequence( Qt::CTRL + Qt::SHIFT + Qt::Key_A ) );
117 tmpAction->setIconVisibleInMenu(
true );
121 QKeySequence( Qt::CTRL + Qt::SHIFT + Qt::Key_P ) );
122 tmpAction->setIconVisibleInMenu(
true );
127 QKeySequence( Qt::CTRL + Qt::SHIFT + Qt::Key_F ) );
128 tmpAction->setIconVisibleInMenu(
true );
145 m_Viewer = std::shared_ptr<WGEViewer>();
152 WQtGLWidgetParent::closeEvent(
event );
163 switch( manipulator )
167 "WQtGLWidget(" +
m_Viewer->getName() +
")",
174 "WQtGLWidget(" +
m_Viewer->getName() +
")",
181 "WQtGLWidget(" +
m_Viewer->getName() +
")",
189 "WQtGLWidget(" +
m_Viewer->getName() +
")",
216 WQtGLWidgetParent::paintEvent(
event );
236 WQtGLWidgetParent::resizeGL( width, height );
241 switch(
event->button() )
243 case( Qt::LeftButton ):
245 case( Qt::MiddleButton ):
247 case( Qt::RightButton ):
262 if(
event->isAutoRepeat() )
266 if(
event->text() !=
"" )
272 switch(
event->modifiers() )
274 case Qt::ShiftModifier :
275 m_Viewer->keyEvent( WGEViewer::KEYPRESS, osgGA::GUIEventAdapter::KEY_Shift_L );
277 case Qt::ControlModifier :
278 m_Viewer->keyEvent( WGEViewer::KEYPRESS, osgGA::GUIEventAdapter::KEY_Control_L );
294 if(
event->isAutoRepeat() )
298 switch(
event->key() )
314 switch(
event->modifiers() )
316 case Qt::ShiftModifier :
317 m_Viewer->keyEvent( WGEViewer::KEYRELEASE, osgGA::GUIEventAdapter::KEY_Shift_L );
319 case Qt::ControlModifier :
320 m_Viewer->keyEvent( WGEViewer::KEYRELEASE, osgGA::GUIEventAdapter::KEY_Control_L );
365 x =
event->angleDelta().x();
366 y =
event->angleDelta().y();
368 m_Viewer->mouseEvent( WGEViewer::MOUSESCROLL, x, y, 0 );
374 if(
event->type() == WQT_RENDERED_FRAME_EVENT )
380 return WQtGLWidgetParent::event(
event );
394 format.setSwapInterval( 1 );
407 osg::ref_ptr<osgGA::TrackballManipulator> cm = osg::dynamic_pointer_cast<osgGA::TrackballManipulator>(
m_Viewer->getCameraManipulator() );
408 osg::Quat q( 0.5, -0.5, -0.5, 0.5 );
412 cm->setRotation( q );
416 wlog::warn(
"WQtGLWidget(" +
m_Viewer->getName() +
")" ) <<
"GL Widget does not use a TrackballManipulator. Preset cannot be used.";
425 osg::ref_ptr<osgGA::TrackballManipulator> cm = osg::dynamic_pointer_cast<osgGA::TrackballManipulator>(
m_Viewer->getCameraManipulator() );
426 osg::Quat q( -0.5, -0.5, -0.5, -0.5 );
430 cm->setRotation( q );
434 wlog::warn(
"WQtGLWidget(" +
m_Viewer->getName() +
")" ) <<
"GL Widget does not use a TrackballManipulator. Preset cannot be used.";
443 osg::ref_ptr<osgGA::TrackballManipulator> cm = osg::dynamic_pointer_cast<osgGA::TrackballManipulator>(
m_Viewer->getCameraManipulator() );
444 osg::Quat q( 0., 0., 0., 1 );
448 cm->setRotation( q );
452 wlog::warn(
"WQtGLWidget(" +
m_Viewer->getName() +
")" ) <<
"GL Widget does not use a TrackballManipulator. Preset cannot be used.";
461 osg::ref_ptr<osgGA::TrackballManipulator> cm = osg::dynamic_pointer_cast<osgGA::TrackballManipulator>(
m_Viewer->getCameraManipulator() );
462 osg::Quat q( 0., -1., 0., 0. );
466 cm->setRotation( q );
470 wlog::warn(
"WQtGLWidget(" +
m_Viewer->getName() +
")" ) <<
"GL Widget does not use a TrackballManipulator. Preset cannot be used.";
479 osg::ref_ptr<osgGA::TrackballManipulator> cm = osg::dynamic_pointer_cast<osgGA::TrackballManipulator>(
m_Viewer->getCameraManipulator() );
480 osg::Quat q( 0., -0.707107, -0.707107, 0. );
484 cm->setRotation( q );
488 wlog::warn(
"WQtGLWidget(" +
m_Viewer->getName() +
")" ) <<
"GL Widget does not use a TrackballManipulator. Preset cannot be used.";
497 osg::ref_ptr<osgGA::TrackballManipulator> cm = osg::dynamic_pointer_cast<osgGA::TrackballManipulator>(
m_Viewer->getCameraManipulator() );
498 osg::Quat q( 0.707107, 0., 0., 0.707107 );
502 cm->setRotation( q );
506 wlog::warn(
"WQtGLWidget(" +
m_Viewer->getName() +
")" ) <<
"GL Widget does not use a TrackballManipulator. Preset cannot be used.";
515 osg::ref_ptr<WGEZoomTrackballManipulator> cm = osg::dynamic_pointer_cast<WGEZoomTrackballManipulator>(
m_Viewer->getCameraManipulator() );
518 osg::Vec3d eye, center, up;
519 cm->getHomePosition( eye, center, up );
521 cm->setCenter( center );
526 wlog::warn(
"WQtGLWidget(" +
m_Viewer->getName() +
")" ) <<
"GL Widget does not use a TrackballManipulator. Preset cannot be used.";
A manipulator which changes the view of a 2D scene.
TrackballManipulator with added mouse wheel zoom.
ProjectionMode
List of possible camera modes.
This is an OSG Manipulator implementation which does nothing.
New OSG manipulator: TrackballManipulator with added mouse wheel zoom.
static std::shared_ptr< WGraphicsEngine > getGraphicsEngine()
Returns instance of the graphics engine.
static WKernel * getRunningKernel()
Returns pointer to the currently running kernel.
std::shared_ptr< WGraphicsEngine > getGraphicsEngine() const
Returns pointer to currently running instance of graphics engine.
void addLogMessage(std::string message, std::string source="", LogLevel level=LL_DEBUG)
Appends a log message to the logging queue.
static WLogger * getLogger()
Returns pointer to the currently running logger instance.
static WIconManager * getIconManager()
Get the icon manager of this gui instance.
Event signalling a frame was rendered.
WStreamedLogger debug(const std::string &source)
Logging a debug message.
WStreamedLogger warn(const std::string &source)
Logging a warning message.