cabana: more compact form (#26985)

pull/26988/head
Dean Lee 2 years ago committed by GitHub
parent a43a243b6e
commit 2ef127ebc0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 52
      tools/cabana/signaledit.cc
  2. 2
      tools/cabana/signaledit.h

@ -9,50 +9,56 @@
// SignalForm // SignalForm
SignalForm::SignalForm(QWidget *parent) : QWidget(parent) { 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 = new QLineEdit();
name->setValidator(new QRegExpValidator(QRegExp("^(\\w+)"), name)); name->setValidator(new QRegExpValidator(QRegExp("^(\\w+)"), name));
form_layout->addRow(tr("Name"), name); form_layout->addRow(tr("Name"), name);
QHBoxLayout *hl = new QHBoxLayout(this);
size = new QSpinBox(); size = new QSpinBox();
size->setMinimum(1); size->setMinimum(1);
form_layout->addRow(tr("Size"), size); hl->addWidget(size);
endianness = new QComboBox(); endianness = new QComboBox();
endianness->addItems({"Little", "Big"}); endianness->addItems({"Little Endianness", "Big Endianness"});
form_layout->addRow(tr("Endianness"), endianness); hl->addWidget(endianness);
form_layout->addRow(tr("lsb"), lsb = new QLabel());
form_layout->addRow(tr("msb"), msb = new QLabel());
sign = new QComboBox(); sign = new QComboBox();
sign->addItems({"Signed", "Unsigned"}); sign->addItems({"Signed", "Unsigned"});
form_layout->addRow(tr("sign"), sign); hl->addWidget(sign);
form_layout->addRow(tr("Size"), hl);
auto double_validator = new QDoubleValidator(this);
offset = new QLineEdit();
offset->setValidator(double_validator);
form_layout->addRow(tr("Offset"), offset);
factor = new QLineEdit(); factor = new QLineEdit();
factor->setValidator(double_validator); factor->setValidator(double_validator);
form_layout->addRow(tr("Factor"), factor); form_layout->addRow(tr("Factor"), factor);
offset = new QLineEdit(); expand_btn = new QToolButton(this);
offset->setValidator(double_validator); expand_btn->setText(tr("more..."));
form_layout->addRow(tr("Offset"), offset); main_layout->addWidget(expand_btn, 0, Qt::AlignRight);
// TODO: parse the following parameters in opendbc // TODO: parse the following parameters in opendbc
QWidget *extra_container = new QWidget(this);
QFormLayout *extra_layout = new QFormLayout(extra_container);
unit = new QLineEdit(); unit = new QLineEdit();
form_layout->addRow(tr("Unit"), unit); extra_layout->addRow(tr("Unit"), unit);
comment = new QLineEdit(); comment = new QLineEdit();
form_layout->addRow(tr("Comment"), comment); extra_layout->addRow(tr("Comment"), comment);
min_val = new QLineEdit(); min_val = new QLineEdit();
min_val->setValidator(double_validator); 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 = new QLineEdit();
max_val->setValidator(double_validator); 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(); 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(name, &QLineEdit::editingFinished, this, &SignalForm::textBoxEditingFinished);
QObject::connect(factor, &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(size, &QSpinBox::editingFinished, this, &SignalForm::changed);
QObject::connect(sign, SIGNAL(activated(int)), SIGNAL(changed())); QObject::connect(sign, SIGNAL(activated(int)), SIGNAL(changed()));
QObject::connect(endianness, 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() { void SignalForm::textBoxEditingFinished() {
@ -180,8 +190,6 @@ void SignalEdit::updateForm(bool visible) {
form->sign->setCurrentIndex(sig->is_signed ? 0 : 1); form->sign->setCurrentIndex(sig->is_signed ? 0 : 1);
form->factor->setText(QString::number(sig->factor)); form->factor->setText(QString::number(sig->factor));
form->offset->setText(QString::number(sig->offset)); 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->size->setValue(sig->size);
} }
form->setVisible(visible); form->setVisible(visible);

@ -17,9 +17,9 @@ public:
void textBoxEditingFinished(); void textBoxEditingFinished();
QLineEdit *name, *unit, *comment, *val_desc, *offset, *factor, *min_val, *max_val; QLineEdit *name, *unit, *comment, *val_desc, *offset, *factor, *min_val, *max_val;
QLabel *lsb, *msb;
QSpinBox *size; QSpinBox *size;
QComboBox *sign, *endianness; QComboBox *sign, *endianness;
QToolButton *expand_btn;
signals: signals:
void changed(); void changed();

Loading…
Cancel
Save