#pragma once #include #include #include #include "tools/cabana/binaryview.h" #include "tools/cabana/chartswidget.h" #include "tools/cabana/historylog.h" #include "tools/cabana/signaledit.h" class TitleFrame : public QFrame { Q_OBJECT public: TitleFrame(QWidget *parent) : QFrame(parent) {} void mouseDoubleClickEvent(QMouseEvent *e) { emit doubleClicked(); } signals: void doubleClicked(); }; class EditMessageDialog : public QDialog { Q_OBJECT public: EditMessageDialog(const QString &msg_id, const QString &title, int size, QWidget *parent); QLineEdit *name_edit; QSpinBox *size_spin; }; class ScrollArea : public QScrollArea { Q_OBJECT public: ScrollArea(QWidget *parent) : QScrollArea(parent) {} bool eventFilter(QObject *obj, QEvent *ev) override; void setWidget(QWidget *w); }; class DetailWidget : public QWidget { Q_OBJECT public: DetailWidget(ChartsWidget *charts, QWidget *parent); void setMessage(const QString &message_id); void dbcMsgChanged(int show_form_idx = -1); signals: void binaryViewMoved(bool in); private: void updateChartState(const QString &id, const Signal *sig, bool opened); void showTabBarContextMenu(const QPoint &pt); void addSignal(int start_bit, int to); void resizeSignal(const Signal *sig, int from, int to); void saveSignal(const Signal *sig, const Signal &new_sig); void removeSignal(const Signal *sig); void editMsg(); void showForm(); void updateState(); void moveBinaryView(); QString msg_id; QLabel *name_label, *time_label, *warning_label; QWidget *warning_widget; QPushButton *edit_btn; QWidget *signals_container; QTabBar *tabbar; QHBoxLayout *main_layout; QVBoxLayout *right_column; bool binview_in_left_col = false; QWidget *binary_view_container; QPushButton *split_btn; HistoryLog *history_log; BinaryView *binary_view; ScrollArea *scroll; ChartsWidget *charts; };