From d162a20090abb1a9dcb718241e14de3a747055a0 Mon Sep 17 00:00:00 2001 From: Erwin Lejeune Date: Fri, 14 Nov 2025 00:21:43 +0400 Subject: [PATCH 01/13] sort topics in republisher topic list --- src/TopicPublisherROS2/publisher_ros2.cpp | 43 +++++++++++++---------- 1 file changed, 24 insertions(+), 19 deletions(-) diff --git a/src/TopicPublisherROS2/publisher_ros2.cpp b/src/TopicPublisherROS2/publisher_ros2.cpp index 7126d2d..f90d20e 100644 --- a/src/TopicPublisherROS2/publisher_ros2.cpp +++ b/src/TopicPublisherROS2/publisher_ros2.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -51,7 +52,7 @@ void TopicPublisherROS2::updatePublishers() { return; } - for (const auto& info : _topics_info) + for (const auto &info : _topics_info) { auto to_publish = _topics_to_publish.find(info.topic_name); if (to_publish == _topics_to_publish.end() || to_publish->second == false) @@ -62,7 +63,7 @@ void TopicPublisherROS2::updatePublishers() auto publisher_it = _publishers.find(info.topic_name); if (publisher_it == _publishers.end()) { - _publishers.insert({ info.topic_name, GenericPublisher::create(*_node, info.topic_name, info.type) }); + _publishers.insert({info.topic_name, GenericPublisher::create(*_node, info.topic_name, info.type)}); } } @@ -153,7 +154,9 @@ void TopicPublisherROS2::filterDialog() std::map checkbox; - for (const TopicInfo& info : _topics_info) + std::map checkbox; + + for (const TopicInfo &info : sorted_topics) { const std::string topic_name = info.topic_name; auto cb = new QCheckBox(dialog); @@ -169,8 +172,10 @@ void TopicPublisherROS2::filterDialog() cb->setFocusPolicy(Qt::NoFocus); dialog->ui()->formLayout->addRow(new QLabel(QString::fromStdString(topic_name)), cb); checkbox.insert(std::make_pair(topic_name, cb)); - connect(dialog->ui()->pushButtonSelect, &QPushButton::pressed, [cb]() { cb->setChecked(true); }); - connect(dialog->ui()->pushButtonDeselect, &QPushButton::pressed, [cb]() { cb->setChecked(false); }); + connect(dialog->ui()->pushButtonSelect, &QPushButton::pressed, [cb]() + { cb->setChecked(true); }); + connect(dialog->ui()->pushButtonDeselect, &QPushButton::pressed, [cb]() + { cb->setChecked(false); }); } dialog->exec(); @@ -178,9 +183,9 @@ void TopicPublisherROS2::filterDialog() if (dialog->result() == QDialog::Accepted) { _topics_to_publish.clear(); - for (const auto& it : checkbox) + for (const auto &it : checkbox) { - _topics_to_publish.insert({ it.first, it.second->isChecked() }); + _topics_to_publish.insert({it.first, it.second->isChecked()}); } updatePublishers(); @@ -189,12 +194,12 @@ void TopicPublisherROS2::filterDialog() constexpr long NSEC_PER_SEC = 1000000000; -rcutils_time_point_value_t Convert(const builtin_interfaces::msg::Time& stamp) +rcutils_time_point_value_t Convert(const builtin_interfaces::msg::Time &stamp) { return stamp.nanosec + NSEC_PER_SEC * stamp.sec; } -builtin_interfaces::msg::Time Convert(const rcutils_time_point_value_t& time_stamp) +builtin_interfaces::msg::Time Convert(const rcutils_time_point_value_t &time_stamp) { builtin_interfaces::msg::Time stamp; stamp.sec = static_cast(time_stamp / NSEC_PER_SEC); @@ -316,14 +321,14 @@ void TopicPublisherROS2::updateState(double current_time) auto data_it = _datamap->user_defined.find("plotjuggler::rosbag2_cpp::consecutive_messages"); if (data_it != _datamap->user_defined.end()) { - const PJ::PlotDataAny& continuous_msgs = data_it->second; + const PJ::PlotDataAny &continuous_msgs = data_it->second; _previous_play_index = continuous_msgs.getIndexFromX(current_time); } - for (const auto& data_it : _datamap->user_defined) + for (const auto &data_it : _datamap->user_defined) { - const std::string& topic_name = data_it.first; - const PJ::PlotDataAny& plot_any = data_it.second; + const std::string &topic_name = data_it.first; + const PJ::PlotDataAny &plot_any = data_it.second; if (topic_name == "/tf" || topic_name == "tf_static") { @@ -342,11 +347,11 @@ void TopicPublisherROS2::updateState(double current_time) continue; } - const auto& any_value = plot_any.at(last_index).y; + const auto &any_value = plot_any.at(last_index).y; if (any_value.type() == typeid(MessageRefPtr)) { - const auto& msg_instance = std::any_cast(any_value); + const auto &msg_instance = std::any_cast(any_value); publisher_it->second->publish(msg_instance->serialized_data); } } @@ -364,7 +369,7 @@ void TopicPublisherROS2::play(double current_time) { return; } - const PJ::PlotDataAny& continuous_msgs = data_it->second; + const PJ::PlotDataAny &continuous_msgs = data_it->second; int current_index = continuous_msgs.getIndexFromX(current_time); if (_previous_play_index > current_index) @@ -375,13 +380,13 @@ void TopicPublisherROS2::play(double current_time) } else { - const PJ::PlotDataAny& consecutive_msg = data_it->second; + const PJ::PlotDataAny &consecutive_msg = data_it->second; for (int index = _previous_play_index + 1; index <= current_index; index++) { - const auto& any_value = consecutive_msg.at(index).y; + const auto &any_value = consecutive_msg.at(index).y; if (any_value.type() == typeid(MessageRefPtr)) { - const auto& msg_instance = std::any_cast(any_value); + const auto &msg_instance = std::any_cast(any_value); auto publisher_it = _publishers.find(msg_instance->topic_name); if (publisher_it == _publishers.end()) From 513834efa37f97fe6ee9364b7239269a7f449bf5 Mon Sep 17 00:00:00 2001 From: Erwin Lejeune Date: Fri, 14 Nov 2025 00:52:55 +0400 Subject: [PATCH 02/13] Add filter input box to republisher dialog UI --- src/publisher_select_dialog.ui | 355 +++++++++++++++++++-------------- 1 file changed, 200 insertions(+), 155 deletions(-) diff --git a/src/publisher_select_dialog.ui b/src/publisher_select_dialog.ui index c93ec04..dff1c10 100644 --- a/src/publisher_select_dialog.ui +++ b/src/publisher_select_dialog.ui @@ -1,160 +1,205 @@ - PublisherSelect - - - - 0 - 0 - 400 - 300 - - - - - 400 - 300 - - - - Select topics to be published - - - - - - true - - - - + PublisherSelect + + + 0 0 - 380 - 158 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - - - - - Qt::NoFocus - - - <html><head/><body><p><span style=" color:#2e3436;">Publish the topic [/clock].</span><span style=" font-family:'monospace'; color:#2e3436;"/></p><p><span style=" font-family:'monospace'; color:#2e3436;">You should set rosparam use_sim_time = true</span></p></body></html> - - - Keep original timestamp and publish [/clock] - - - true - - - - - - - Qt::NoFocus - - - <html><head/><body><p><span style=" color:#2e3436;">Pretend it is a new message.</span></p><p><span style=" font-family:'monospace'; color:#2e3436;">The timestamp of the original message will be overwritten with ros::Time::Now()</span></p></body></html> - - - Overwrite timestamp [std_msgs/Header/stamp] - - - - - - - - - Qt::NoFocus - - - SelectAll - - - - - - - Qt::NoFocus - - - Deselect All - - - + 400 + 300 + + + + + 400 + 300 + + + + Select topics to be published + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Filter: + + + + + + + + 300 + 16777215 + + + + true + + + + + + + + + true + + + + + 0 + 0 + 380 + 158 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + + + + + Qt::NoFocus + + + <html><head/><body><p><span style=" + color:#2e3436;">Publish the topic [/clock].</span><span style=" + font-family:'monospace'; color:#2e3436;"/></p><p><span + style=" font-family:'monospace'; color:#2e3436;">You should set rosparam + use_sim_time = true</span></p></body></html> + + + Keep original timestamp and publish [/clock] + + + true + + + + + + + Qt::NoFocus + + + <html><head/><body><p><span style=" + color:#2e3436;">Pretend it is a new + message.</span></p><p><span style=" font-family:'monospace'; + color:#2e3436;">The timestamp of the original message will be overwritten with + ros::Time::Now()</span></p></body></html> + + + Overwrite timestamp [std_msgs/Header/stamp] + + + + + + + + + Qt::NoFocus + + + SelectAll + + + + + + + Qt::NoFocus + + + Deselect All + + + + + + + + + Qt::Horizontal + + + QDialogButtonBox::Ok + + + - - - - - Qt::Horizontal - - - QDialogButtonBox::Ok - - - - - - - - - buttonBox - accepted() - PublisherSelect - accept() - - - 248 - 254 - - - 157 - 274 - - - - - buttonBox - rejected() - PublisherSelect - reject() - - - 316 - 260 - - - 286 - 274 - - - - - + + + + + buttonBox + accepted() + PublisherSelect + accept() + + + 248 + 254 + + + 157 + 274 + + + + + buttonBox + rejected() + PublisherSelect + reject() + + + 316 + 260 + + + 286 + 274 + + + + + \ No newline at end of file From d521d3cd4f430a51e2b9bc3e465d032ec74b03c3 Mon Sep 17 00:00:00 2001 From: Erwin Lejeune Date: Fri, 14 Nov 2025 00:52:56 +0400 Subject: [PATCH 03/13] Add filter slot and widget storage to dialog --- src/publisher_select_dialog.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/publisher_select_dialog.h b/src/publisher_select_dialog.h index 417f57b..7e330e1 100644 --- a/src/publisher_select_dialog.h +++ b/src/publisher_select_dialog.h @@ -4,19 +4,22 @@ #include #include #include +#include +#include #include "ui_publisher_select_dialog.h" namespace Ui { -class Ui_PublisherSelect; + class Ui_PublisherSelect; } class PublisherSelectDialog : public QDialog { Q_OBJECT private: - Ui::PublisherSelect* _ui; + Ui::PublisherSelect *_ui; + std::map> _topic_widgets; public: explicit PublisherSelectDialog(QWidget* parent = nullptr) : QDialog(parent), _ui(new Ui::PublisherSelect) From 37a8496ce4bd37175d53f9e15fda46b4baa6674d Mon Sep 17 00:00:00 2001 From: Erwin Lejeune Date: Fri, 14 Nov 2025 00:52:57 +0400 Subject: [PATCH 04/13] Implement filter logic for topic filtering --- src/publisher_select_dialog.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/publisher_select_dialog.cpp diff --git a/src/publisher_select_dialog.cpp b/src/publisher_select_dialog.cpp new file mode 100644 index 0000000..bb5ad14 --- /dev/null +++ b/src/publisher_select_dialog.cpp @@ -0,0 +1,29 @@ +#include "publisher_select_dialog.h" +#include + +void PublisherSelectDialog::on_lineEditFilter_textChanged(const QString &search_string) +{ + QStringList spaced_items = search_string.split(' '); + + for (const auto &pair : _topic_widgets) + { + const std::string &topic_name = pair.first; + QLabel *label = pair.second.first; + QCheckBox *checkbox = pair.second.second; + + QString name = QString::fromStdString(topic_name); + bool toHide = false; + + for (const auto &item : spaced_items) + { + if (!name.contains(item, Qt::CaseInsensitive)) + { + toHide = true; + break; + } + } + + label->setVisible(!toHide); + checkbox->setVisible(!toHide); + } +} From 8332ad01a134875247f1a91efa5b7326c7134889 Mon Sep 17 00:00:00 2001 From: Erwin Lejeune Date: Fri, 14 Nov 2025 00:52:57 +0400 Subject: [PATCH 05/13] Add clickable labels and filter support --- src/TopicPublisherROS2/publisher_ros2.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/TopicPublisherROS2/publisher_ros2.cpp b/src/TopicPublisherROS2/publisher_ros2.cpp index f90d20e..bcc88fb 100644 --- a/src/TopicPublisherROS2/publisher_ros2.cpp +++ b/src/TopicPublisherROS2/publisher_ros2.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -155,6 +156,7 @@ void TopicPublisherROS2::filterDialog() std::map checkbox; std::map checkbox; + std::map> topic_widgets; for (const TopicInfo &info : sorted_topics) { @@ -170,14 +172,23 @@ void TopicPublisherROS2::filterDialog() cb->setChecked(filter_it->second); } cb->setFocusPolicy(Qt::NoFocus); - dialog->ui()->formLayout->addRow(new QLabel(QString::fromStdString(topic_name)), cb); + auto label = new QLabel(); + label->setTextFormat(Qt::RichText); + label->setText(QString("%1").arg(QString::fromStdString(topic_name))); + label->setOpenExternalLinks(false); + dialog->ui()->formLayout->addRow(label, cb); checkbox.insert(std::make_pair(topic_name, cb)); + topic_widgets.insert(std::make_pair(topic_name, std::make_pair(label, cb))); + connect(label, &QLabel::linkActivated, [cb]() + { cb->toggle(); }); connect(dialog->ui()->pushButtonSelect, &QPushButton::pressed, [cb]() { cb->setChecked(true); }); connect(dialog->ui()->pushButtonDeselect, &QPushButton::pressed, [cb]() { cb->setChecked(false); }); } + dialog->setTopicWidgets(topic_widgets); + dialog->exec(); if (dialog->result() == QDialog::Accepted) From 3bc526a35735105e7e9943c4010ce333376a1d95 Mon Sep 17 00:00:00 2001 From: Erwin Lejeune Date: Fri, 14 Nov 2025 00:52:58 +0400 Subject: [PATCH 06/13] Add publisher_select_dialog.cpp to build --- src/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 2db79a0..97ae7fe 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -14,6 +14,7 @@ add_library( commonROS STATIC dialog_select_ros_topics.cpp dialog_with_itemlist.h publisher_select_dialog.h + publisher_select_dialog.cpp parser_configuration.cpp parser_configuration.h ros_parsers/ros2_parser.cpp From 15bfe3220cb784dd235a6c5a6d26ebcb557d146f Mon Sep 17 00:00:00 2001 From: Erwin Lejeune Date: Fri, 14 Nov 2025 00:56:47 +0400 Subject: [PATCH 07/13] Replace form layout with table widget in UI --- src/publisher_select_dialog.ui | 80 ++++++++++++++++++++-------------- 1 file changed, 48 insertions(+), 32 deletions(-) diff --git a/src/publisher_select_dialog.ui b/src/publisher_select_dialog.ui index dff1c10..a5fe661 100644 --- a/src/publisher_select_dialog.ui +++ b/src/publisher_select_dialog.ui @@ -58,40 +58,56 @@ - - + + + + 0 + 0 + + + + QAbstractScrollArea::AdjustIgnored + + + QAbstractItemView::NoEditTriggers + + + false + + + false + + + QAbstractItemView::MultiSelection + + + QAbstractItemView::SelectRows + + + Qt::ElideRight + + true - - - - 0 - 0 - 380 - 158 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - + + 1 + + + 300 + + + true + + + true + + + 18 + + + 21 + + From b40db76f060adc91ad014a6f20fd032a127af9a7 Mon Sep 17 00:00:00 2001 From: Erwin Lejeune Date: Fri, 14 Nov 2025 00:56:48 +0400 Subject: [PATCH 08/13] Update dialog header for table selection --- src/publisher_select_dialog.h | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/publisher_select_dialog.h b/src/publisher_select_dialog.h index 7e330e1..7ef4f3b 100644 --- a/src/publisher_select_dialog.h +++ b/src/publisher_select_dialog.h @@ -1,11 +1,6 @@ #pragma once #include -#include -#include -#include -#include -#include -#include +#include #include "ui_publisher_select_dialog.h" @@ -19,12 +14,15 @@ class PublisherSelectDialog : public QDialog Q_OBJECT private: Ui::PublisherSelect *_ui; - std::map> _topic_widgets; public: explicit PublisherSelectDialog(QWidget* parent = nullptr) : QDialog(parent), _ui(new Ui::PublisherSelect) { _ui->setupUi(this); + _ui->listTopics->verticalHeader()->setVisible(false); + QStringList labels; + labels.push_back("Topic name"); + _ui->listTopics->setHorizontalHeaderLabels(labels); } Ui::PublisherSelect* ui() From 2fe2af515b1889183c7e5d86198911a37e7f5e4c Mon Sep 17 00:00:00 2001 From: Erwin Lejeune Date: Fri, 14 Nov 2025 00:56:50 +0400 Subject: [PATCH 09/13] Update filter to work with table rows --- src/publisher_select_dialog.cpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/publisher_select_dialog.cpp b/src/publisher_select_dialog.cpp index bb5ad14..6634043 100644 --- a/src/publisher_select_dialog.cpp +++ b/src/publisher_select_dialog.cpp @@ -1,17 +1,16 @@ #include "publisher_select_dialog.h" #include +#include +#include void PublisherSelectDialog::on_lineEditFilter_textChanged(const QString &search_string) { QStringList spaced_items = search_string.split(' '); - for (const auto &pair : _topic_widgets) + for (int row = 0; row < _ui->listTopics->rowCount(); row++) { - const std::string &topic_name = pair.first; - QLabel *label = pair.second.first; - QCheckBox *checkbox = pair.second.second; - - QString name = QString::fromStdString(topic_name); + auto item = _ui->listTopics->item(row, 0); + QString name = item->text(); bool toHide = false; for (const auto &item : spaced_items) @@ -22,8 +21,12 @@ void PublisherSelectDialog::on_lineEditFilter_textChanged(const QString &search_ break; } } - - label->setVisible(!toHide); - checkbox->setVisible(!toHide); + _ui->listTopics->setRowHidden(row, toHide); } } + +void PublisherSelectDialog::on_listTopics_itemSelectionChanged() +{ + QModelIndexList indexes = _ui->listTopics->selectionModel()->selectedIndexes(); + _ui->buttonBox->setEnabled(indexes.size() > 0); +} From 7b44b5a469d1202a65b5ed97276eec5fdae86615 Mon Sep 17 00:00:00 2001 From: Erwin Lejeune Date: Fri, 14 Nov 2025 00:56:51 +0400 Subject: [PATCH 10/13] Use table selection instead of checkboxes --- src/TopicPublisherROS2/publisher_ros2.cpp | 79 +++++++++++------------ 1 file changed, 39 insertions(+), 40 deletions(-) diff --git a/src/TopicPublisherROS2/publisher_ros2.cpp b/src/TopicPublisherROS2/publisher_ros2.cpp index bcc88fb..955d072 100644 --- a/src/TopicPublisherROS2/publisher_ros2.cpp +++ b/src/TopicPublisherROS2/publisher_ros2.cpp @@ -2,20 +2,11 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include +#include #include -#include -#include -#include #include -#include #include #include #include @@ -155,48 +146,56 @@ void TopicPublisherROS2::filterDialog() std::map checkbox; - std::map checkbox; - std::map> topic_widgets; + dialog->ui()->listTopics->setRowCount(sorted_topics.size()); - for (const TopicInfo &info : sorted_topics) + for (size_t i = 0; i < sorted_topics.size(); i++) { - const std::string topic_name = info.topic_name; - auto cb = new QCheckBox(dialog); + const std::string topic_name = sorted_topics[i].topic_name; + auto item = new QTableWidgetItem(QString::fromStdString(topic_name)); + item->setFlags(item->flags() & ~Qt::ItemIsEditable); + dialog->ui()->listTopics->setItem(i, 0, item); + auto filter_it = _topics_to_publish.find(topic_name); - if (filter_it == _topics_to_publish.end()) + if (filter_it == _topics_to_publish.end() || filter_it->second) { - cb->setChecked(true); + dialog->ui()->listTopics->selectRow(i); } - else - { - cb->setChecked(filter_it->second); - } - cb->setFocusPolicy(Qt::NoFocus); - auto label = new QLabel(); - label->setTextFormat(Qt::RichText); - label->setText(QString("%1").arg(QString::fromStdString(topic_name))); - label->setOpenExternalLinks(false); - dialog->ui()->formLayout->addRow(label, cb); - checkbox.insert(std::make_pair(topic_name, cb)); - topic_widgets.insert(std::make_pair(topic_name, std::make_pair(label, cb))); - connect(label, &QLabel::linkActivated, [cb]() - { cb->toggle(); }); - connect(dialog->ui()->pushButtonSelect, &QPushButton::pressed, [cb]() - { cb->setChecked(true); }); - connect(dialog->ui()->pushButtonDeselect, &QPushButton::pressed, [cb]() - { cb->setChecked(false); }); } - dialog->setTopicWidgets(topic_widgets); + dialog->ui()->listTopics->sortByColumn(0, Qt::AscendingOrder); + + connect(dialog->ui()->pushButtonSelect, &QPushButton::pressed, [dialog]() + { + for (int row = 0; row < dialog->ui()->listTopics->rowCount(); row++) + { + if (!dialog->ui()->listTopics->isRowHidden(row)) + { + dialog->ui()->listTopics->selectRow(row); + } + } + }); + connect(dialog->ui()->pushButtonDeselect, &QPushButton::pressed, dialog->ui()->listTopics, + &QAbstractItemView::clearSelection); dialog->exec(); if (dialog->result() == QDialog::Accepted) { _topics_to_publish.clear(); - for (const auto &it : checkbox) + QModelIndexList selected_indexes = dialog->ui()->listTopics->selectionModel()->selectedIndexes(); + + for (const auto &info : sorted_topics) { - _topics_to_publish.insert({it.first, it.second->isChecked()}); + _topics_to_publish.insert({info.topic_name, false}); + } + + foreach (QModelIndex index, selected_indexes) + { + if (index.column() == 0) + { + std::string topic_name = index.data(Qt::DisplayRole).toString().toStdString(); + _topics_to_publish[topic_name] = true; + } } updatePublishers(); From 883ec291d45387de39f1b9efeab945041e2615e6 Mon Sep 17 00:00:00 2001 From: Erwin Lejeune Date: Fri, 14 Nov 2025 00:59:05 +0400 Subject: [PATCH 11/13] Replace foreach with range-based for loop --- src/TopicPublisherROS2/publisher_ros2.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/TopicPublisherROS2/publisher_ros2.cpp b/src/TopicPublisherROS2/publisher_ros2.cpp index 955d072..19945be 100644 --- a/src/TopicPublisherROS2/publisher_ros2.cpp +++ b/src/TopicPublisherROS2/publisher_ros2.cpp @@ -172,8 +172,7 @@ void TopicPublisherROS2::filterDialog() { dialog->ui()->listTopics->selectRow(row); } - } - }); + } }); connect(dialog->ui()->pushButtonDeselect, &QPushButton::pressed, dialog->ui()->listTopics, &QAbstractItemView::clearSelection); @@ -189,7 +188,7 @@ void TopicPublisherROS2::filterDialog() _topics_to_publish.insert({info.topic_name, false}); } - foreach (QModelIndex index, selected_indexes) + for (const QModelIndex &index : selected_indexes) { if (index.column() == 0) { From d0e0db1447389bd5c003236af4b8963934e9f96c Mon Sep 17 00:00:00 2001 From: Erwin Lejeune Date: Fri, 14 Nov 2025 00:59:06 +0400 Subject: [PATCH 12/13] Fix formatting in UI file --- src/publisher_select_dialog.ui | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/publisher_select_dialog.ui b/src/publisher_select_dialog.ui index a5fe661..03e239e 100644 --- a/src/publisher_select_dialog.ui +++ b/src/publisher_select_dialog.ui @@ -107,7 +107,7 @@ 21 - + From 6b3fbd0885240cd9b33e12375582023b51de942e Mon Sep 17 00:00:00 2001 From: Erwin Lejeune Date: Thu, 25 Dec 2025 18:06:00 +0400 Subject: [PATCH 13/13] pre-commit reformat --- src/TopicPublisherROS2/publisher_ros2.cpp | 52 +++++++++++------------ src/publisher_select_dialog.cpp | 4 +- src/publisher_select_dialog.h | 4 +- src/publisher_select_dialog.ui | 2 +- 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/TopicPublisherROS2/publisher_ros2.cpp b/src/TopicPublisherROS2/publisher_ros2.cpp index 19945be..f51c46b 100644 --- a/src/TopicPublisherROS2/publisher_ros2.cpp +++ b/src/TopicPublisherROS2/publisher_ros2.cpp @@ -44,7 +44,7 @@ void TopicPublisherROS2::updatePublishers() { return; } - for (const auto &info : _topics_info) + for (const auto& info : _topics_info) { auto to_publish = _topics_to_publish.find(info.topic_name); if (to_publish == _topics_to_publish.end() || to_publish->second == false) @@ -55,7 +55,7 @@ void TopicPublisherROS2::updatePublishers() auto publisher_it = _publishers.find(info.topic_name); if (publisher_it == _publishers.end()) { - _publishers.insert({info.topic_name, GenericPublisher::create(*_node, info.topic_name, info.type)}); + _publishers.insert({ info.topic_name, GenericPublisher::create(*_node, info.topic_name, info.type) }); } } @@ -164,15 +164,15 @@ void TopicPublisherROS2::filterDialog() dialog->ui()->listTopics->sortByColumn(0, Qt::AscendingOrder); - connect(dialog->ui()->pushButtonSelect, &QPushButton::pressed, [dialog]() - { - for (int row = 0; row < dialog->ui()->listTopics->rowCount(); row++) - { - if (!dialog->ui()->listTopics->isRowHidden(row)) - { - dialog->ui()->listTopics->selectRow(row); - } - } }); + connect(dialog->ui()->pushButtonSelect, &QPushButton::pressed, [dialog]() { + for (int row = 0; row < dialog->ui()->listTopics->rowCount(); row++) + { + if (!dialog->ui()->listTopics->isRowHidden(row)) + { + dialog->ui()->listTopics->selectRow(row); + } + } + }); connect(dialog->ui()->pushButtonDeselect, &QPushButton::pressed, dialog->ui()->listTopics, &QAbstractItemView::clearSelection); @@ -183,12 +183,12 @@ void TopicPublisherROS2::filterDialog() _topics_to_publish.clear(); QModelIndexList selected_indexes = dialog->ui()->listTopics->selectionModel()->selectedIndexes(); - for (const auto &info : sorted_topics) + for (const auto& info : sorted_topics) { - _topics_to_publish.insert({info.topic_name, false}); + _topics_to_publish.insert({ info.topic_name, false }); } - for (const QModelIndex &index : selected_indexes) + for (const QModelIndex& index : selected_indexes) { if (index.column() == 0) { @@ -203,12 +203,12 @@ void TopicPublisherROS2::filterDialog() constexpr long NSEC_PER_SEC = 1000000000; -rcutils_time_point_value_t Convert(const builtin_interfaces::msg::Time &stamp) +rcutils_time_point_value_t Convert(const builtin_interfaces::msg::Time& stamp) { return stamp.nanosec + NSEC_PER_SEC * stamp.sec; } -builtin_interfaces::msg::Time Convert(const rcutils_time_point_value_t &time_stamp) +builtin_interfaces::msg::Time Convert(const rcutils_time_point_value_t& time_stamp) { builtin_interfaces::msg::Time stamp; stamp.sec = static_cast(time_stamp / NSEC_PER_SEC); @@ -330,14 +330,14 @@ void TopicPublisherROS2::updateState(double current_time) auto data_it = _datamap->user_defined.find("plotjuggler::rosbag2_cpp::consecutive_messages"); if (data_it != _datamap->user_defined.end()) { - const PJ::PlotDataAny &continuous_msgs = data_it->second; + const PJ::PlotDataAny& continuous_msgs = data_it->second; _previous_play_index = continuous_msgs.getIndexFromX(current_time); } - for (const auto &data_it : _datamap->user_defined) + for (const auto& data_it : _datamap->user_defined) { - const std::string &topic_name = data_it.first; - const PJ::PlotDataAny &plot_any = data_it.second; + const std::string& topic_name = data_it.first; + const PJ::PlotDataAny& plot_any = data_it.second; if (topic_name == "/tf" || topic_name == "tf_static") { @@ -356,11 +356,11 @@ void TopicPublisherROS2::updateState(double current_time) continue; } - const auto &any_value = plot_any.at(last_index).y; + const auto& any_value = plot_any.at(last_index).y; if (any_value.type() == typeid(MessageRefPtr)) { - const auto &msg_instance = std::any_cast(any_value); + const auto& msg_instance = std::any_cast(any_value); publisher_it->second->publish(msg_instance->serialized_data); } } @@ -378,7 +378,7 @@ void TopicPublisherROS2::play(double current_time) { return; } - const PJ::PlotDataAny &continuous_msgs = data_it->second; + const PJ::PlotDataAny& continuous_msgs = data_it->second; int current_index = continuous_msgs.getIndexFromX(current_time); if (_previous_play_index > current_index) @@ -389,13 +389,13 @@ void TopicPublisherROS2::play(double current_time) } else { - const PJ::PlotDataAny &consecutive_msg = data_it->second; + const PJ::PlotDataAny& consecutive_msg = data_it->second; for (int index = _previous_play_index + 1; index <= current_index; index++) { - const auto &any_value = consecutive_msg.at(index).y; + const auto& any_value = consecutive_msg.at(index).y; if (any_value.type() == typeid(MessageRefPtr)) { - const auto &msg_instance = std::any_cast(any_value); + const auto& msg_instance = std::any_cast(any_value); auto publisher_it = _publishers.find(msg_instance->topic_name); if (publisher_it == _publishers.end()) diff --git a/src/publisher_select_dialog.cpp b/src/publisher_select_dialog.cpp index 6634043..89627cc 100644 --- a/src/publisher_select_dialog.cpp +++ b/src/publisher_select_dialog.cpp @@ -3,7 +3,7 @@ #include #include -void PublisherSelectDialog::on_lineEditFilter_textChanged(const QString &search_string) +void PublisherSelectDialog::on_lineEditFilter_textChanged(const QString& search_string) { QStringList spaced_items = search_string.split(' '); @@ -13,7 +13,7 @@ void PublisherSelectDialog::on_lineEditFilter_textChanged(const QString &search_ QString name = item->text(); bool toHide = false; - for (const auto &item : spaced_items) + for (const auto& item : spaced_items) { if (!name.contains(item, Qt::CaseInsensitive)) { diff --git a/src/publisher_select_dialog.h b/src/publisher_select_dialog.h index 7ef4f3b..5e0520c 100644 --- a/src/publisher_select_dialog.h +++ b/src/publisher_select_dialog.h @@ -6,14 +6,14 @@ namespace Ui { - class Ui_PublisherSelect; +class Ui_PublisherSelect; } class PublisherSelectDialog : public QDialog { Q_OBJECT private: - Ui::PublisherSelect *_ui; + Ui::PublisherSelect* _ui; public: explicit PublisherSelectDialog(QWidget* parent = nullptr) : QDialog(parent), _ui(new Ui::PublisherSelect) diff --git a/src/publisher_select_dialog.ui b/src/publisher_select_dialog.ui index 03e239e..ba2b111 100644 --- a/src/publisher_select_dialog.ui +++ b/src/publisher_select_dialog.ui @@ -218,4 +218,4 @@ - \ No newline at end of file +