2 #include <tf/tfMessage.h> 3 #include <tf2_msgs/TFMessage.h> 5 #include <QProgressDialog> 6 #include <QTableWidget> 7 #include <QTableWidgetItem> 8 #include "ui_filter_frames.h" 13 : QDialog(parent), ui(new
Ui::
FilterFrames), _bag(bag), _frames_to_filter(filtered_frames)
17 std::vector<std::string> topics = {
"/tf"};
20 QProgressDialog progress_dialog;
21 progress_dialog.setLabelText(
"Loading... please wait");
22 progress_dialog.setWindowModality(Qt::ApplicationModal);
23 progress_dialog.show();
26 progress_dialog.setRange(0, bag_view.
size() - 1);
32 if (msg_count++ % 100 == 0)
34 progress_dialog.setValue(msg_count);
35 QApplication::processEvents();
39 tf::tfMessage::ConstPtr
tf = msg.instantiate<tf::tfMessage>();
42 for (
const auto& transform : tf->transforms)
44 frames.insert(std::make_pair(transform.header.frame_id,
45 transform.child_frame_id));
49 tf2_msgs::TFMessage::ConstPtr
tf2 = msg.instantiate<tf2_msgs::TFMessage>();
52 for (
const auto& transform : tf2->transforms)
54 frames.insert(std::make_pair(transform.header.frame_id,
55 transform.child_frame_id));
60 for (
const auto& frame : frames)
62 int row =
ui->tableWidget->rowCount();
63 ui->tableWidget->setRowCount(row + 1);
64 ui->tableWidget->setItem(
65 row, 1,
new QTableWidgetItem(QString::fromStdString(frame.first)));
66 ui->tableWidget->setItem(
67 row, 2,
new QTableWidgetItem(QString::fromStdString(frame.second)));
68 QCheckBox*
check =
new QCheckBox(
ui->tableWidget);
70 ui->tableWidget->setCellWidget(row, 0, check);
73 ui->tableWidget->resizeColumnsToContents();
83 for (
int row = 0; row <
ui->tableWidget->rowCount(); row++) {
85 qobject_cast<QCheckBox*>(
ui->tableWidget->cellWidget(row, 0));
87 if (check->isChecked() ==
false) {
88 std::string parent =
ui->tableWidget->item(row, 1)->text().toStdString();
89 std::string child =
ui->tableWidget->item(row, 2)->text().toStdString();
FilterFrames(const rosbag::Bag &bag, FramesSet &filtered_frames, QWidget *parent=nullptr)
FramesSet & _frames_to_filter
std::set< std::pair< std::string, std::string >> FramesSet
void on_buttonBox_accepted()