GLWidget.hh
Go to the documentation of this file.
1/*
2 * Copyright (C) 2012 Open Source Robotics Foundation
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 *
16*/
17#ifndef GAZEBO_GUI_GLWIDGET_HH_
18#define GAZEBO_GUI_GLWIDGET_HH_
19
20#include <memory>
21#include <string>
22#include <vector>
23
24#include "gazebo/gui/qt.h"
25#include "gazebo/msgs/msgs.hh"
27#include "gazebo/util/system.hh"
28
29namespace gazebo
30{
31 namespace common
32 {
33 class MouseEvent;
34 }
35
36 namespace gui
37 {
38 class GLWidgetPrivate;
39
40 class GZ_GUI_VISIBLE GLWidget : public QWidget
41 {
42 Q_OBJECT
43
46 public: enum SelectionLevels {
50 LINK
51 };
52
53 public: explicit GLWidget(QWidget *_parent = 0);
54 public: virtual ~GLWidget();
55
61 public: void ViewScene(rendering::ScenePtr _scene);
62
66
69 public: rendering::ScenePtr Scene() const;
70
71 public: void Clear();
72
75 public: std::vector<rendering::VisualPtr> SelectedVisuals() const;
76
77 signals: void clicked();
78
81 signals: void selectionMsgReceived(const QString &_name);
82
83 protected: virtual void moveEvent(QMoveEvent *_e);
84 protected: virtual void paintEvent(QPaintEvent *_e);
85 protected: virtual void resizeEvent(QResizeEvent *_e);
86
91 protected: virtual void showEvent(QShowEvent *_e);
92
93 protected: virtual void enterEvent(QEvent *_event);
94
95
96 protected: void keyPressEvent(QKeyEvent *_event);
97 protected: void keyReleaseEvent(QKeyEvent *_event);
98 protected: void wheelEvent(QWheelEvent *_event);
99 protected: void mousePressEvent(QMouseEvent *_event);
100 protected: void mouseDoubleClickEvent(QMouseEvent *_event);
101 protected: void mouseMoveEvent(QMouseEvent *_event);
102 protected: void mouseReleaseEvent(QMouseEvent *_event);
103
107 protected: virtual QPaintEngine *paintEngine() const;
108
109 private: std::string OgreHandle() const;
110
114 private: bool OnMouseMove(const common::MouseEvent &_event);
115
117 private: void OnMouseMoveNormal();
118
120 private: void OnMouseMoveMakeEntity();
121
125 private: bool OnMouseRelease(const common::MouseEvent &_event);
126
128 private: void OnMouseReleaseNormal();
129
131 private: void OnMouseReleaseMakeEntity();
132
136 private: bool OnMousePress(const common::MouseEvent &_event);
137
139 private: void OnMousePressNormal();
140
142 private: void OnMousePressMakeEntity();
143
147 private: bool OnMouseDoubleClick(const common::MouseEvent &_event);
148
149 private: void OnRequest(ConstRequestPtr &_msg);
150 private: void OnCreateScene(const std::string &_name);
151 private: void OnRemoveScene(const std::string &_name);
152 private: void OnMoveMode(bool _mode);
153 private: void OnCreateEntity(const std::string &_type,
154 const std::string &_data);
155
156 private: void OnFPS();
157 private: void OnOrbit();
158 private: void OnManipMode(const std::string &_mode);
159
160 private: void OnSetSelectedEntity(const std::string &_name,
161 const std::string &_mode);
162
163 private: bool eventFilter(QObject *_obj, QEvent *_event);
164
165 private: void ClearSelection();
166
169 private: void SetSelectedVisual(rendering::VisualPtr _vis);
170
172 private: void DeselectAllVisuals();
173
181 private: void OnAlignMode(const std::string &_axis,
182 const std::string &_config, const std::string &_target,
183 const bool _preview, const bool _inverted = false);
184
187 private: void Copy(const std::string &_name);
188
191 private: void Paste(const std::string &_name);
192
194 private slots: void OnCopy();
195
197 private slots: void OnPaste();
198
201 private slots: void OnModelEditor(bool _checked);
202
204 private slots: void OnOrtho();
205
207 private slots: void OnPerspective();
208
214 private: void SetMouseEventButton(const Qt::MouseButton &_button);
215
221 private: void SetMouseEventButtons(const Qt::MouseButtons &_buttons);
222
225 private: std::unique_ptr<GLWidgetPrivate> dataPtr;
226 };
227 }
228}
229
230#endif
common
Definition FuelModelDatabase.hh:37
gui
Definition KeyEventHandler.hh:29
Generic description of a mouse event.
Definition MouseEvent.hh:36
Definition GLWidget.hh:41
GLWidget(QWidget *_parent=0)
virtual void paintEvent(QPaintEvent *_e)
void mouseReleaseEvent(QMouseEvent *_event)
virtual void moveEvent(QMoveEvent *_e)
void mousePressEvent(QMouseEvent *_event)
void keyPressEvent(QKeyEvent *_event)
rendering::UserCameraPtr Camera() const
Return the user camera.
SelectionLevels
Unique identifiers for all selection levels supported.
Definition GLWidget.hh:46
@ MODEL
Model level.
Definition GLWidget.hh:48
@ LINK
Link level.
Definition GLWidget.hh:50
void mouseMoveEvent(QMouseEvent *_event)
void selectionMsgReceived(const QString &_name)
QT signal to notify when we received a selection msg.
void wheelEvent(QWheelEvent *_event)
rendering::ScenePtr Scene() const
Return the scene.
virtual void enterEvent(QEvent *_event)
virtual QPaintEngine * paintEngine() const
Override paintEngine to stop Qt From trying to draw on top of OGRE.
void keyReleaseEvent(QKeyEvent *_event)
void mouseDoubleClickEvent(QMouseEvent *_event)
std::vector< rendering::VisualPtr > SelectedVisuals() const
Returns the list of selected visuals.
virtual void resizeEvent(QResizeEvent *_e)
void ViewScene(rendering::ScenePtr _scene)
View a scene in this widget.
virtual void showEvent(QShowEvent *_e)
Custom processing for the QT showEvent.
std::shared_ptr< Visual > VisualPtr
Definition RenderTypes.hh:114
boost::shared_ptr< UserCamera > UserCameraPtr
Definition RenderTypes.hh:94
boost::shared_ptr< Scene > ScenePtr
Definition RenderTypes.hh:82
Forward declarations for the common classes.
Definition Animation.hh:27