00001 00012 #ifndef RAIL_PICK_AND_PLACE_SEGMENT_PANEL_H_ 00013 #define RAIL_PICK_AND_PLACE_SEGMENT_PANEL_H_ 00014 00015 // ROS 00016 #include <ros/ros.h> 00017 #include <rviz/panel.h> 00018 00019 // Qt 00020 #include <QLabel> 00021 #include <QPushButton> 00022 00023 namespace rail 00024 { 00025 namespace pick_and_place 00026 { 00027 00034 class SegmentPanel : public rviz::Panel 00035 { 00036 00037 // this class uses Qt slots and is a subclass of QObject, so it needs the Q_OBJECT macro 00038 Q_OBJECT 00039 00040 public: 00048 SegmentPanel(QWidget *parent = NULL); 00049 00057 virtual void load(const rviz::Config &config); 00058 00066 virtual void save(rviz::Config config) const; 00067 00068 private: 00070 ros::NodeHandle node_; 00072 ros::ServiceClient segment_srv_; 00073 00075 QPushButton *segment_button_; 00077 QLabel *segment_status_; 00078 00079 // used as UI callbacks 00080 private Q_SLOTS: 00081 00087 void executeSegment(); 00088 }; 00089 00090 } 00091 } 00092 00093 #endif