You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
103 lines
2.1 KiB
103 lines
2.1 KiB
3 years ago
|
#pragma once
|
||
|
#include <QComboBox>
|
||
|
#include <QDialog>
|
||
|
#include <QDialogButtonBox>
|
||
|
#include <QLabel>
|
||
|
#include <QLineEdit>
|
||
|
#include <QPushButton>
|
||
|
#include <QSpinBox>
|
||
|
#include <QTableWidget>
|
||
|
#include <QVBoxLayout>
|
||
|
#include <QWidget>
|
||
|
#include <optional>
|
||
|
|
||
|
#include "opendbc/can/common.h"
|
||
|
#include "opendbc/can/common_dbc.h"
|
||
|
#include "selfdrive/ui/qt/widgets/controls.h"
|
||
|
#include "tools/cabana/parser.h"
|
||
|
|
||
|
class SignalForm : public QWidget {
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
SignalForm(const Signal &sig, QWidget *parent);
|
||
|
std::optional<Signal> getSignal();
|
||
|
QLineEdit *name, *unit, *comment, *val_desc;
|
||
|
QSpinBox *size, *msb, *lsb, *factor, *offset, *min_val, *max_val;
|
||
|
QComboBox *sign, *endianness;
|
||
|
};
|
||
|
|
||
|
class MessagesView : public QWidget {
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
MessagesView(QWidget *parent);
|
||
|
void setMessages(const std::list<CanData> &data);
|
||
|
std::vector<QLabel *> messages;
|
||
|
QVBoxLayout *message_layout;
|
||
|
};
|
||
|
|
||
|
class BinaryView : public QWidget {
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
BinaryView(QWidget *parent);
|
||
|
void setMsg(const QString &id);
|
||
|
void setData(const QByteArray &binary);
|
||
|
|
||
|
QTableWidget *table;
|
||
|
};
|
||
|
|
||
|
class SignalEdit : public QWidget {
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
SignalEdit(const QString &id, const Signal &sig, int idx, QWidget *parent);
|
||
|
void save();
|
||
|
|
||
|
signals:
|
||
|
void removed();
|
||
|
protected:
|
||
|
void remove();
|
||
|
QString id;
|
||
|
QString name_;
|
||
|
ElidedLabel *title;
|
||
|
SignalForm *form;
|
||
|
QWidget *edit_container;
|
||
|
QPushButton *remove_btn;
|
||
|
};
|
||
|
|
||
|
class DetailWidget : public QWidget {
|
||
|
Q_OBJECT
|
||
|
public:
|
||
|
DetailWidget(QWidget *parent);
|
||
|
void setMsg(const QString &id);
|
||
|
|
||
|
public slots:
|
||
|
void updateState();
|
||
|
|
||
|
protected:
|
||
|
QLabel *name_label = nullptr;
|
||
|
QPushButton *edit_btn, *add_sig_btn;
|
||
|
QVBoxLayout *signal_edit_layout;
|
||
|
Signal *sig = nullptr;
|
||
|
MessagesView *messages_view;
|
||
|
QString msg_id;
|
||
|
BinaryView *binary_view;
|
||
|
std::vector<SignalEdit *> signal_edit;
|
||
|
};
|
||
|
|
||
|
class EditMessageDialog : public QDialog {
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
EditMessageDialog(const QString &id, QWidget *parent);
|
||
|
};
|
||
|
|
||
|
class AddSignalDialog : public QDialog {
|
||
|
Q_OBJECT
|
||
|
|
||
|
public:
|
||
|
AddSignalDialog(const QString &id, QWidget *parent);
|
||
|
};
|