From e814b0f9f742c35c1e35d3a5ed680557238fcc99 Mon Sep 17 00:00:00 2001 From: Willem Melching Date: Tue, 31 Jan 2023 02:42:38 +0100 Subject: [PATCH] cabana: add --dbc command line argument (#27132) old-commit-hash: f3a9dac93e0d1a9058e94d60b48ae5a189841d6c --- tools/cabana/cabana.cc | 7 +++++++ tools/cabana/mainwin.cc | 5 +++++ tools/cabana/mainwin.h | 2 +- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/tools/cabana/cabana.cc b/tools/cabana/cabana.cc index d9b6b5948b..e34e2d0205 100644 --- a/tools/cabana/cabana.cc +++ b/tools/cabana/cabana.cc @@ -24,6 +24,7 @@ int main(int argc, char *argv[]) { cmd_parser.addOption({"zmq", "the ip address on which to receive zmq messages", "zmq"}); cmd_parser.addOption({"data_dir", "local directory with routes", "data_dir"}); cmd_parser.addOption({"no-vipc", "do not output video"}); + cmd_parser.addOption({"dbc", "dbc file to open", "dbc"}); cmd_parser.process(app); const QStringList args = cmd_parser.positionalArguments(); if (args.empty() && !cmd_parser.isSet("demo") && !cmd_parser.isSet("stream")) { @@ -57,6 +58,12 @@ int main(int argc, char *argv[]) { } MainWindow w; + + // Load DBC + if (cmd_parser.isSet("dbc")) { + w.loadFile(cmd_parser.value("dbc")); + } + w.show(); return app.exec(); } diff --git a/tools/cabana/mainwin.cc b/tools/cabana/mainwin.cc index 3c2d46cbf2..94cf9840f7 100644 --- a/tools/cabana/mainwin.cc +++ b/tools/cabana/mainwin.cc @@ -243,6 +243,11 @@ void MainWindow::loadDBCFromClipboard() { } void MainWindow::loadDBCFromFingerprint() { + // Don't overwrite already loaded DBC + if (!dbc()->name().isEmpty()) { + return; + } + remindSaveChanges(); auto fingerprint = can->carFingerprint(); video_dock->setWindowTitle(tr("ROUTE: %1 FINGERPINT: %2").arg(can->routeName()).arg(fingerprint.isEmpty() ? tr("Unknown Car") : fingerprint)); diff --git a/tools/cabana/mainwin.h b/tools/cabana/mainwin.h index ba36d676e0..c26f6973c0 100644 --- a/tools/cabana/mainwin.h +++ b/tools/cabana/mainwin.h @@ -20,6 +20,7 @@ public: MainWindow(); void dockCharts(bool dock); void showStatusMessage(const QString &msg, int timeout = 0) { statusBar()->showMessage(msg, timeout); } + void loadFile(const QString &fn); public slots: void newFile(); @@ -40,7 +41,6 @@ signals: protected: void remindSaveChanges(); void saveFile(const QString &fn); - void loadFile(const QString &fn); void setCurrentFile(const QString &fn); void updateRecentFileActions(); void createActions();