00001 #ifndef DIALOG_SELECT_ROS_TOPICS_H 00002 #define DIALOG_SELECT_ROS_TOPICS_H 00003 00004 #include <QDialog> 00005 #include <QString> 00006 #include <QFile> 00007 #include <QStringList> 00008 #include <QCheckBox> 00009 #include <QShortcut> 00010 #include "PlotJuggler/optional.hpp" 00011 #include <ros_type_introspection/ros_introspection.hpp> 00012 00013 namespace Ui { 00014 class dialogSelectRosTopics; 00015 } 00016 00017 class DialogSelectRosTopics : public QDialog 00018 { 00019 Q_OBJECT 00020 00021 public: 00022 00023 struct Configuration 00024 { 00025 QStringList selected_topics; 00026 size_t max_array_size; 00027 bool use_header_stamp; 00028 bool use_renaming_rules; 00029 bool discard_large_arrays; 00030 }; 00031 00032 explicit DialogSelectRosTopics(const std::vector<std::pair<QString,QString>>& topic_list, 00033 const Configuration& default_info, 00034 QWidget *parent = nullptr); 00035 00036 ~DialogSelectRosTopics() override; 00037 00038 Configuration getResult() const; 00039 00040 public slots: 00041 00042 void updateTopicList(std::vector<std::pair<QString,QString>> topic_list); 00043 00044 private slots: 00045 00046 void on_buttonBox_accepted(); 00047 00048 void on_listRosTopics_itemSelectionChanged(); 00049 00050 void on_checkBoxEnableRules_toggled(bool checked); 00051 00052 void on_pushButtonEditRules_pressed(); 00053 00054 void on_maximumSizeHelp_pressed(); 00055 00056 void on_lineEditFilter_textChanged(const QString &search_string); 00057 00058 void on_spinBoxArraySize_valueChanged(int value); 00059 00060 private: 00061 00062 void closeEvent(QCloseEvent *event) override; 00063 00064 QStringList _topic_list; 00065 QStringList _default_selected_topics; 00066 00067 QShortcut _select_all; 00068 QShortcut _deselect_all; 00069 00070 Ui::dialogSelectRosTopics *ui; 00071 00072 }; 00073 00074 nonstd::optional<double>FlatContainerContainHeaderStamp(const RosIntrospection::FlatMessage& flat_msg); 00075 00076 00077 00078 #endif // DIALOG_SELECT_ROS_TOPICS_H