diff --git a/tools/cabana/detailwidget.cc b/tools/cabana/detailwidget.cc index 233bc493df..ef8a8f6290 100644 --- a/tools/cabana/detailwidget.cc +++ b/tools/cabana/detailwidget.cc @@ -288,7 +288,7 @@ EditMessageDialog::EditMessageDialog(const QString &msg_id, const QString &title form_layout->addRow("ID", new QLabel(msg_id)); name_edit = new QLineEdit(title, this); - name_edit->setValidator(new QRegExpValidator(QRegExp("^(\\w+)"), name_edit)); + name_edit->setValidator(new NameValidator(name_edit)); form_layout->addRow(tr("Name"), name_edit); size_spin = new QSpinBox(this); diff --git a/tools/cabana/signaledit.cc b/tools/cabana/signaledit.cc index 112c2807f9..52ce74ae08 100644 --- a/tools/cabana/signaledit.cc +++ b/tools/cabana/signaledit.cc @@ -19,7 +19,7 @@ SignalForm::SignalForm(QWidget *parent) : QWidget(parent) { main_layout->addLayout(form_layout); name = new QLineEdit(); - name->setValidator(new QRegExpValidator(QRegExp("^(\\w+)"), name)); + name->setValidator(new NameValidator(name)); form_layout->addRow(tr("Name"), name); QHBoxLayout *hl = new QHBoxLayout(this); diff --git a/tools/cabana/util.cc b/tools/cabana/util.cc index 7796800103..726cbbe2a1 100644 --- a/tools/cabana/util.cc +++ b/tools/cabana/util.cc @@ -97,3 +97,10 @@ void MessageBytesDelegate::paint(QPainter *painter, const QStyleOptionViewItem & i++; } } + +NameValidator::NameValidator(QObject *parent) : QRegExpValidator(QRegExp("^(\\w+)"), parent) { } + +QValidator::State NameValidator::validate(QString &input, int &pos) const { + input.replace(' ', '_'); + return QRegExpValidator::validate(input, pos); +} diff --git a/tools/cabana/util.h b/tools/cabana/util.h index 146410d7c6..20c85af39e 100644 --- a/tools/cabana/util.h +++ b/tools/cabana/util.h @@ -3,6 +3,7 @@ #include #include #include +#include #include #include @@ -36,3 +37,11 @@ inline const QString &getColor(int i) { static const QString SIGNAL_COLORS[] = {"#9FE2BF", "#40E0D0", "#6495ED", "#CCCCFF", "#FF7F50", "#FFBF00"}; return SIGNAL_COLORS[i % std::size(SIGNAL_COLORS)]; } + +class NameValidator : public QRegExpValidator { + Q_OBJECT + +public: + NameValidator(QObject *parent=nullptr); + QValidator::State validate(QString &input, int &pos) const override; +};