Go to the documentation of this file.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 #ifndef RVIZ_VIEW_CONTROLLER_H
00031 #define RVIZ_VIEW_CONTROLLER_H
00032
00033 #include <string>
00034
00035 #include <QCursor>
00036
00037 #include "rviz/properties/property.h"
00038
00039 class QKeyEvent;
00040
00041 namespace Ogre
00042 {
00043 class Camera;
00044 class SceneNode;
00045 class Vector3;
00046 class Quaternion;
00047 }
00048
00049 namespace rviz
00050 {
00051 class DisplayContext;
00052 class EnumProperty;
00053 class RenderPanel;
00054 class ViewportMouseEvent;
00055 class FloatProperty;
00056
00057 class ViewController: public Property
00058 {
00059 Q_OBJECT
00060 public:
00061 ViewController();
00062 virtual ~ViewController();
00063
00069 void initialize( DisplayContext* context );
00070
00071 static QString formatClassId( const QString& class_id );
00072
00075 virtual QVariant getViewData( int column, int role ) const;
00076
00078 virtual Qt::ItemFlags getViewFlags( int column ) const;
00079
00084 void activate();
00085
00088 virtual void update(float dt, float ros_dt) {}
00089
00090 virtual void handleMouseEvent(ViewportMouseEvent& evt) {}
00091
00096 virtual void handleKeyEvent( QKeyEvent* event, RenderPanel* panel );
00097
00099 void lookAt( float x, float y, float z );
00100
00104 virtual void lookAt( const Ogre::Vector3& point ) {}
00105
00108 virtual void reset() = 0;
00109
00117 virtual void mimic( ViewController* source_view ) {}
00118
00127 virtual void transitionFrom( ViewController* previous_view ) {}
00128
00130 void emitConfigChanged();
00131
00132 Ogre::Camera* getCamera() const { return camera_; }
00133
00137 virtual QString getClassId() const { return class_id_; }
00138
00141 virtual void setClassId( const QString& class_id ) { class_id_ = class_id; }
00142
00143 virtual void load( const Config& config );
00144 virtual void save( Config config ) const;
00145
00146 bool isActive() const { return is_active_; }
00147
00149 virtual QCursor getCursor() { return cursor_; }
00150
00151 Q_SIGNALS:
00152 void configChanged();
00153
00154 private Q_SLOTS:
00155
00156 void updateNearClipDistance();
00157
00158 protected:
00162 virtual void onInitialize() {}
00163
00168 virtual void onActivate() {}
00169
00170
00171 enum CursorType{ Default, Rotate2D, Rotate3D, MoveXY, MoveZ, Zoom, Crosshair };
00172 void setCursor( CursorType cursor_type );
00173
00174
00175 void setCursor( QCursor cursor ) { cursor_=cursor; }
00176
00177 DisplayContext* context_;
00178 Ogre::Camera* camera_;
00179
00180 bool is_active_;
00181
00182
00183
00184
00185 QCursor cursor_;
00186
00187 FloatProperty* near_clip_property_;
00188
00189 void setStatus( const QString & message );
00190
00191 private:
00192
00193 EnumProperty* type_property_;
00194 QString class_id_;
00195
00196
00197 QMap<CursorType,QCursor> standard_cursors_;
00198 };
00199
00200 }
00201
00202 #endif // RVIZ_VIEW_CONTROLLER_H