00001 #ifndef TRANSFORMABLE_MARKER_OPERATOR_H 00002 #define TRANSFORMABLE_MARKER_OPERATOR_H 00003 00004 #ifndef Q_MOC_RUN 00005 #include <ros/ros.h> 00006 #include <rviz/panel.h> 00007 #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) 00008 # include <QtWidgets> 00009 #else 00010 # include <QtGui> 00011 #endif 00012 #include <jsk_interactive_marker/SetMarkerDimensions.h> 00013 #include <jsk_recognition_msgs/ObjectArray.h> 00014 #include <jsk_rviz_plugins/RequestMarkerOperate.h> 00015 #endif 00016 00017 class QLineEdit; 00018 class QPushButton; 00019 00020 namespace rviz { 00021 class VisualizationManager; 00022 } 00023 00024 namespace jsk_interactive_marker 00025 { 00026 class TransformableMarkerOperatorAction: public rviz::Panel 00027 { 00028 Q_OBJECT 00029 public: 00030 TransformableMarkerOperatorAction( QWidget* parent = 0 ); 00031 00032 virtual void onInitialize(); 00033 virtual void load( const rviz::Config& config ); 00034 virtual void save( rviz::Config config ) const; 00035 00036 protected Q_SLOTS: 00037 void update(); 00038 void updateServerName(); 00039 void updateObjectArrayTopic(); 00040 void updateFocusMarkerDimensions(); 00041 void updateDimensionsService(); 00042 void updateFrameId(); 00043 void updateName(); 00044 00045 void callRequestMarkerOperateService(jsk_rviz_plugins::RequestMarkerOperate srv); 00046 void insertBoxService(); 00047 void insertCylinderService(); 00048 void insertTorusService(); 00049 void insertMeshService(); 00050 void eraseWithIdService(); 00051 void eraseAllService(); 00052 void eraseFocusService(); 00053 void objectArrayCb(const jsk_recognition_msgs::ObjectArray::ConstPtr& obj_array_msg); 00054 00055 protected: 00056 QPushButton* insert_box_button_; 00057 QPushButton* insert_cylinder_button_; 00058 QPushButton* insert_torus_button_; 00059 QPushButton* insert_mesh_button_; 00060 00061 QPushButton* erase_with_id_button_; 00062 QPushButton* erase_all_button_; 00063 QPushButton* erase_focus_button_; 00064 00065 QVBoxLayout* layout; 00066 00067 QLineEdit* server_name_editor_; 00068 QLineEdit* topic_name_editor_; 00069 QLineEdit* transform_name_editor_; 00070 QLineEdit* dimension_x_editor_; 00071 QLineEdit* dimension_y_editor_; 00072 QLineEdit* dimension_z_editor_; 00073 QComboBox* object_editor_; 00074 QLineEdit* dimension_radius_editor_; 00075 QLineEdit* dimension_sm_radius_editor_; 00076 QLineEdit* name_editor_; 00077 QLineEdit* description_editor_; 00078 QLineEdit* frame_editor_; 00079 QLineEdit* id_editor_; 00080 00081 std::vector<jsk_recognition_msgs::Object> objects_; 00082 00083 ros::NodeHandle nh_; 00084 ros::Subscriber sub_obj_array_; 00085 }; 00086 } // namespace jsk_interactive_marker 00087 00088 #endif