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_TOOL_H
00031 #define RVIZ_TOOL_H
00032
00033 #include <string>
00034 #include "properties/forwards.h"
00035
00036 class QMouseEvent;
00037 class QKeyEvent;
00038
00039 namespace Ogre
00040 {
00041 class SceneManager;
00042 }
00043
00044 namespace rviz
00045 {
00046
00047 class VisualizationManager;
00048 class PropertyManager;
00049 class ViewportMouseEvent;
00050
00051 class Tool
00052 {
00053 public:
00054 Tool( const std::string& name, char shortcut_key, VisualizationManager* manager );
00055 virtual ~Tool() {}
00056
00057 const std::string& getName() { return name_; }
00058 char getShortcutKey() { return shortcut_key_; }
00059
00060 virtual void activate() = 0;
00061 virtual void deactivate() = 0;
00062
00063 virtual void update(float wall_dt, float ros_dt) {}
00064
00065 enum Flags
00066 {
00067 Render = 1 << 0,
00068 Finished = 1 << 1
00069 };
00070 virtual int processMouseEvent( ViewportMouseEvent& event ) = 0;
00071 virtual int processKeyEvent( QKeyEvent* event ) { return 0; }
00072
00073 virtual bool hasProperties() { return false; }
00074 virtual void enumerateProperties(PropertyManager* property_manager, const CategoryPropertyWPtr& parent) {}
00075
00076 protected:
00077 Ogre::SceneManager* scene_manager_;
00078 VisualizationManager* manager_;
00079
00080 std::string name_;
00081 char shortcut_key_;
00082 };
00083
00084 }
00085
00086 #endif