Files
StarPilot/tools/cabana/detailwidget.h
T
Dean Lee 1d1d7b0fb8 Cabana: complete edit functions (#26097)
complete forms
old-commit-hash: e25ea8529698053f4c1b915b7e014ebdc499e56a
2022-10-16 07:55:53 -07:00

80 lines
1.8 KiB
C++

#pragma once
#include <QScrollArea>
#include <QTableWidget>
#include "opendbc/can/common.h"
#include "opendbc/can/common_dbc.h"
#include "tools/cabana/canmessages.h"
#include "tools/cabana/dbcmanager.h"
#include "tools/cabana/historylog.h"
#include "tools/cabana/signaledit.h"
class BinarySelectionModel : public QItemSelectionModel {
public:
BinarySelectionModel(QAbstractItemModel *model = nullptr) : QItemSelectionModel(model) {}
void select(const QItemSelection &selection, QItemSelectionModel::SelectionFlags command) override;
};
class BinaryView : public QTableWidget {
Q_OBJECT
public:
BinaryView(QWidget *parent = nullptr);
void mouseReleaseEvent(QMouseEvent *event) override;
void setMessage(const QString &message_id);
void updateState();
signals:
void cellsSelected(int start_bit, int size);
private:
QString msg_id;
};
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(QWidget *parent);
void setMessage(const QString &message_id);
void dbcMsgChanged();
signals:
void showChart(const QString &msg_id, const Signal *sig);
void removeChart(const Signal *sig);
private:
void addSignal(int start_bit, int size);
void saveSignal();
void removeSignal();
void editMsg();
void showForm();
void updateState();
QString msg_id;
QLabel *name_label, *time_label;
QPushButton *edit_btn;
QWidget *signals_container;
HistoryLog *history_log;
BinaryView *binary_view;
ScrollArea *scroll;
};