dialog_mcap.cpp
Go to the documentation of this file.
1 #include "dialog_mcap.h"
2 #include "ui_dialog_mcap.h"
3 
4 #include <QSettings>
5 #include <QDialogButtonBox>
6 #include <QPushButton>
7 
8 const QString DialogMCAP::prefix = "DialogLoadMCAP::";
9 
10 
11 DialogMCAP::DialogMCAP(const std::unordered_map<int, mcap::ChannelPtr> &channels,
12  const std::unordered_map<int, mcap::SchemaPtr> &schemas,
13  QWidget *parent) :
14  QDialog(parent),
15  ui(new Ui::dialog_mcap)
16 {
17  ui->setupUi(this);
18 
19  ui->tableWidget->horizontalHeader()->setSectionResizeMode(0, QHeaderView::Stretch);
20  ui->tableWidget->horizontalHeader()->setSectionResizeMode(1, QHeaderView::ResizeToContents);
21  ui->tableWidget->horizontalHeader()->setSectionResizeMode(2, QHeaderView::ResizeToContents);
22 
23  ui->tableWidget->setRowCount(channels.size());
24 
25  QSettings settings;
26 
27  restoreGeometry(settings.value(prefix + "geometry").toByteArray());
28  auto selected = settings.value(prefix + "selected").toStringList();
29  bool clamp_checked = settings.value(prefix + "clamp", true).toBool();
30  int max_array = settings.value(prefix + "max_array", 500).toInt();
31 
32  if( clamp_checked )
33  {
34  ui->radioClamp->setChecked(true);
35  }
36  else{
37  ui->radioSkip->setChecked(true);
38  }
39  ui->spinBox->setValue( max_array );
40 
41  int row = 0;
42  for(const auto& [id, channel]: channels )
43  {
44  auto topic = QString::fromStdString(channel->topic);
45  auto encoding = channel->messageEncoding;
46  auto schema = schemas.at( channel->schemaId )->name;
47 
48  ui->tableWidget->setItem(row, 0, new QTableWidgetItem(topic) );
49  ui->tableWidget->setItem(row, 1, new QTableWidgetItem(QString::fromStdString(schema)) );
50  ui->tableWidget->setItem(row, 2, new QTableWidgetItem(QString::fromStdString(encoding)) );
51 
52  if( selected.contains(topic) )
53  {
54  ui->tableWidget->selectRow(row);
55  }
56  row++;
57  }
58  ui->tableWidget->sortByColumn(0);
59 
60 
61 }
62 
64 {
65  delete ui;
66 }
67 
69 {
70  Params params;
71  params.max_array_size = ui->spinBox->value();
72  params.clamp_large_arrays = ui->radioClamp->isChecked();
73 
74  QItemSelectionModel *select = ui->tableWidget->selectionModel();
75  QStringList selected_topics;
76  for(QModelIndex index: select->selectedRows())
77  {
78  params.selected_topics.push_back( ui->tableWidget->item(index.row(), 0)->text() );
79  }
80  return params;
81 }
82 
84 {
85  bool enabled = !ui->tableWidget->selectionModel()->selectedRows().empty();
86  ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(enabled);
87 }
88 
90 {
91  QSettings settings;
92  settings.setValue(prefix + "geometry", saveGeometry());
93 
94  bool clamp_checked = ui->radioClamp->isChecked();
95  int max_array = ui->spinBox->value();
96 
97  settings.setValue(prefix + "clamp", clamp_checked);
98  settings.setValue(prefix + "max_array", max_array);
99 
100  QItemSelectionModel *select = ui->tableWidget->selectionModel();
101  QStringList selected_topics;
102  for(QModelIndex index: select->selectedRows())
103  {
104  selected_topics.push_back( ui->tableWidget->item(index.row(), 0)->text() );
105  }
106  settings.setValue(prefix + "selected", selected_topics);
107 
108  QDialog::accept();
109 }
DialogMCAP(const std::unordered_map< int, mcap::ChannelPtr > &channels, const std::unordered_map< int, mcap::SchemaPtr > &schemas, QWidget *parent=nullptr)
Definition: dialog_mcap.cpp:11
unsigned max_array_size
Definition: dialog_mcap.h:21
static const QString prefix
Definition: dialog_mcap.h:39
void select(lua_State *L, Fx &&fx, Args &&... args)
Definition: sol.hpp:19973
void accept() override
Definition: dialog_mcap.cpp:89
QStringList selected_topics
Definition: dialog_mcap.h:20
Ui::dialog_mcap * ui
Definition: dialog_mcap.h:37
void on_tableWidget_itemSelectionChanged()
Definition: dialog_mcap.cpp:83
Params getParams() const
Definition: dialog_mcap.cpp:68


plotjuggler
Author(s): Davide Faconti
autogenerated on Mon Jun 19 2023 03:01:02