#pragma once #include #include #include #include #include "selfdrive/ui/qt/widgets/controls.h" #include "tools/cabana/binaryview.h" #include "tools/cabana/chart/chartswidget.h" #include "tools/cabana/historylog.h" #include "tools/cabana/signalview.h" class MainWindow; class EditMessageDialog : public QDialog { public: EditMessageDialog(const MessageId &msg_id, const QString &title, int size, QWidget *parent); void validateName(const QString &text); MessageId msg_id; QString original_name; QDialogButtonBox *btn_box; QLineEdit *name_edit; QTextEdit *comment_edit; QLabel *error_label; QSpinBox *size_spin; }; class DetailWidget : public QWidget { Q_OBJECT public: DetailWidget(ChartsWidget *charts, QWidget *parent); void setMessage(const MessageId &message_id); void refresh(); private: void showTabBarContextMenu(const QPoint &pt); void editMsg(); void removeMsg(); void updateState(const QHash * msgs = nullptr); MessageId msg_id; QLabel *time_label, *warning_icon, *warning_label; ElidedLabel *name_label; QWidget *warning_widget; TabBar *tabbar; QTabWidget *tab_widget; QToolButton *remove_btn; LogsWidget *history_log; BinaryView *binary_view; SignalView *signal_view; ChartsWidget *charts; QSplitter *splitter; }; class CenterWidget : public QWidget { Q_OBJECT public: CenterWidget(QWidget *parent); void setMessage(const MessageId &msg_id); void clear(); private: QWidget *createWelcomeWidget(); DetailWidget *detail_widget = nullptr; QWidget *welcome_widget = nullptr; };