cabana: autocomplete signal names (#27553)

old-commit-hash: c32a45b5b5
beeps
Willem Melching 2 years ago committed by GitHub
parent f0d648d8c6
commit d79a43d62b
  1. 13
      tools/cabana/dbcmanager.cc
  2. 1
      tools/cabana/dbcmanager.h
  3. 9
      tools/cabana/signaledit.cc

@ -178,6 +178,19 @@ void DBCManager::removeSignal(const MessageId &id, const QString &sig_name) {
}
}
QStringList DBCManager::signalNames() {
// Used for autocompletion
QStringList ret;
for (auto const& [_, msg] : msgs) {
for (auto sig: msg.getSignals()) {
ret << sig->name;
}
}
ret.sort();
ret.removeDuplicates();
return ret;
}
DBCManager *dbc() {
static DBCManager dbc_manager(nullptr);
return &dbc_manager;

@ -30,6 +30,7 @@ public:
auto it = msgs.find(address);
return it != msgs.end() ? &it->second : nullptr;
}
QStringList signalNames();
signals:
void signalAdded(uint32_t address, const cabana::Signal *sig);

@ -1,6 +1,7 @@
#include "tools/cabana/signaledit.h"
#include <QApplication>
#include <QCompleter>
#include <QDialogButtonBox>
#include <QHBoxLayout>
#include <QHeaderView>
@ -368,6 +369,14 @@ QWidget *SignalItemDelegate::createEditor(QWidget *parent, const QStyleOptionVie
QLineEdit *e = new QLineEdit(parent);
e->setFrame(false);
e->setValidator(index.row() == 0 ? name_validator : double_validator);
if (item->type == SignalModel::Item::Name) {
QCompleter *completer = new QCompleter(dbc()->signalNames());
completer->setCaseSensitivity(Qt::CaseInsensitive);
completer->setFilterMode(Qt::MatchContains);
e->setCompleter(completer);
}
return e;
} else if (item->type == SignalModel::Item::Size) {
QSpinBox *spin = new QSpinBox(parent);

Loading…
Cancel
Save