mirror of
https://github.com/dragonpilot/dragonpilot.git
synced 2026-06-20 21:42:05 +08:00
cabana: more compact form (#26985)
This commit is contained in:
+31
-23
@@ -9,50 +9,56 @@
|
||||
// SignalForm
|
||||
|
||||
SignalForm::SignalForm(QWidget *parent) : QWidget(parent) {
|
||||
QFormLayout *form_layout = new QFormLayout(this);
|
||||
auto double_validator = new QDoubleValidator(this);
|
||||
QVBoxLayout *main_layout = new QVBoxLayout(this);
|
||||
QFormLayout *form_layout = new QFormLayout();
|
||||
main_layout->addLayout(form_layout);
|
||||
|
||||
name = new QLineEdit();
|
||||
name->setValidator(new QRegExpValidator(QRegExp("^(\\w+)"), name));
|
||||
form_layout->addRow(tr("Name"), name);
|
||||
|
||||
QHBoxLayout *hl = new QHBoxLayout(this);
|
||||
size = new QSpinBox();
|
||||
size->setMinimum(1);
|
||||
form_layout->addRow(tr("Size"), size);
|
||||
|
||||
hl->addWidget(size);
|
||||
endianness = new QComboBox();
|
||||
endianness->addItems({"Little", "Big"});
|
||||
form_layout->addRow(tr("Endianness"), endianness);
|
||||
|
||||
form_layout->addRow(tr("lsb"), lsb = new QLabel());
|
||||
form_layout->addRow(tr("msb"), msb = new QLabel());
|
||||
|
||||
endianness->addItems({"Little Endianness", "Big Endianness"});
|
||||
hl->addWidget(endianness);
|
||||
sign = new QComboBox();
|
||||
sign->addItems({"Signed", "Unsigned"});
|
||||
form_layout->addRow(tr("sign"), sign);
|
||||
|
||||
auto double_validator = new QDoubleValidator(this);
|
||||
|
||||
factor = new QLineEdit();
|
||||
factor->setValidator(double_validator);
|
||||
form_layout->addRow(tr("Factor"), factor);
|
||||
hl->addWidget(sign);
|
||||
form_layout->addRow(tr("Size"), hl);
|
||||
|
||||
offset = new QLineEdit();
|
||||
offset->setValidator(double_validator);
|
||||
form_layout->addRow(tr("Offset"), offset);
|
||||
factor = new QLineEdit();
|
||||
factor->setValidator(double_validator);
|
||||
form_layout->addRow(tr("Factor"), factor);
|
||||
|
||||
expand_btn = new QToolButton(this);
|
||||
expand_btn->setText(tr("more..."));
|
||||
main_layout->addWidget(expand_btn, 0, Qt::AlignRight);
|
||||
|
||||
// TODO: parse the following parameters in opendbc
|
||||
QWidget *extra_container = new QWidget(this);
|
||||
QFormLayout *extra_layout = new QFormLayout(extra_container);
|
||||
unit = new QLineEdit();
|
||||
form_layout->addRow(tr("Unit"), unit);
|
||||
extra_layout->addRow(tr("Unit"), unit);
|
||||
comment = new QLineEdit();
|
||||
form_layout->addRow(tr("Comment"), comment);
|
||||
extra_layout->addRow(tr("Comment"), comment);
|
||||
min_val = new QLineEdit();
|
||||
min_val->setValidator(double_validator);
|
||||
form_layout->addRow(tr("Minimum value"), min_val);
|
||||
extra_layout->addRow(tr("Minimum value"), min_val);
|
||||
max_val = new QLineEdit();
|
||||
max_val->setValidator(double_validator);
|
||||
form_layout->addRow(tr("Maximum value"), max_val);
|
||||
extra_layout->addRow(tr("Maximum value"), max_val);
|
||||
val_desc = new QLineEdit();
|
||||
form_layout->addRow(tr("Value descriptions"), val_desc);
|
||||
extra_layout->addRow(tr("Value descriptions"), val_desc);
|
||||
|
||||
main_layout->addWidget(extra_container);
|
||||
extra_container->setVisible(false);
|
||||
|
||||
QObject::connect(name, &QLineEdit::editingFinished, this, &SignalForm::textBoxEditingFinished);
|
||||
QObject::connect(factor, &QLineEdit::editingFinished, this, &SignalForm::textBoxEditingFinished);
|
||||
@@ -60,6 +66,10 @@ SignalForm::SignalForm(QWidget *parent) : QWidget(parent) {
|
||||
QObject::connect(size, &QSpinBox::editingFinished, this, &SignalForm::changed);
|
||||
QObject::connect(sign, SIGNAL(activated(int)), SIGNAL(changed()));
|
||||
QObject::connect(endianness, SIGNAL(activated(int)), SIGNAL(changed()));
|
||||
QObject::connect(expand_btn, &QToolButton::clicked, [=]() {
|
||||
extra_container->setVisible(!extra_container->isVisible());
|
||||
expand_btn->setText(extra_container->isVisible() ? tr("less...") : tr("more..."));
|
||||
});
|
||||
}
|
||||
|
||||
void SignalForm::textBoxEditingFinished() {
|
||||
@@ -180,8 +190,6 @@ void SignalEdit::updateForm(bool visible) {
|
||||
form->sign->setCurrentIndex(sig->is_signed ? 0 : 1);
|
||||
form->factor->setText(QString::number(sig->factor));
|
||||
form->offset->setText(QString::number(sig->offset));
|
||||
form->msb->setText(QString::number(sig->msb));
|
||||
form->lsb->setText(QString::number(sig->lsb));
|
||||
form->size->setValue(sig->size);
|
||||
}
|
||||
form->setVisible(visible);
|
||||
|
||||
@@ -17,9 +17,9 @@ public:
|
||||
void textBoxEditingFinished();
|
||||
|
||||
QLineEdit *name, *unit, *comment, *val_desc, *offset, *factor, *min_val, *max_val;
|
||||
QLabel *lsb, *msb;
|
||||
QSpinBox *size;
|
||||
QComboBox *sign, *endianness;
|
||||
QToolButton *expand_btn;
|
||||
|
||||
signals:
|
||||
void changed();
|
||||
|
||||
Reference in New Issue
Block a user