00001 #ifndef CANCEL_ACTION_H 00002 #define CANCEL_ACTION_H 00003 00004 #include <ros/ros.h> 00005 00006 #include <rviz/panel.h> 00007 #include <QtGui> 00008 00009 class QLineEdit; 00010 class QLabel; 00011 class QPushButton; 00012 //class QSignalMapper; 00013 00014 namespace jsk_rviz_plugins 00015 { 00016 class CancelAction: public rviz::Panel 00017 { 00018 // This class uses Qt slots and is a subclass of QObject, so it needs 00019 // the Q_OBJECT macro. 00020 Q_OBJECT 00021 public: 00022 CancelAction( QWidget* parent = 0 ); 00023 00024 00025 virtual void load( const rviz::Config& config ); 00026 virtual void save( rviz::Config config ) const; 00027 00028 public Q_SLOTS: 00029 00030 void setTopic( const QString& topic ); 00031 00032 protected Q_SLOTS: 00033 00034 void updateTopic(); 00035 00036 void sendTopic(); 00037 void addTopic(); 00038 void initComboBox(); 00039 00040 void addTopicList(std::string topic_name); 00041 00042 void OnClickDeleteButton(int id); 00043 00044 protected: 00045 QString output_topic_; 00046 00047 QPushButton* add_topic_button_; 00048 00049 QComboBox* add_topic_box_; 00050 00051 QPushButton* send_topic_button_; 00052 00053 QSignalMapper *m_sigmap; 00054 00055 QVBoxLayout* layout; 00056 00057 struct topicListLayout{ 00058 int id; 00059 QHBoxLayout* layout_; 00060 QPushButton* remove_button_; 00061 QLabel* topic_name_; 00062 ros::Publisher publisher_; 00063 }; 00064 00065 std::vector<topicListLayout> topic_list_layouts_; 00066 00067 // The ROS publisher for the command velocity. 00068 ros::Publisher velocity_publisher_; 00069 00070 // The ROS node handle. 00071 ros::NodeHandle nh_; 00072 00073 }; 00074 00075 } 00076 00077 #endif // TELEOP_PANEL_H