graph_settings.cpp
Go to the documentation of this file.
2 
3 namespace graph_rviz_plugin
4 {
5 
6 GraphSettings::GraphSettings(std::deque<std::shared_ptr<TopicData>> displayed_topics, QDialog *) :
7  displayed_topics_(displayed_topics)
8 {
9  setWindowTitle("Graph settings");
10  resize(600, 240);
11  QVBoxLayout *configure_layout = new QVBoxLayout;
12  setLayout(configure_layout);
13  QStringList color_list = topic_color_.getColorsStringList();
14  QTableWidget *main_table = new QTableWidget;
15  main_table->setColumnCount(3);
16  QStringList horiz_header_names = {"Display", "Color", "Thickness"};
17  QStringList vertical_header_names;
18  main_table->setHorizontalHeaderLabels(horiz_header_names);
19  main_table->setRowCount(displayed_topics_.size());
20 
21  for (auto topic : displayed_topics_)
22  vertical_header_names.push_back(QString::fromStdString(topic->topic_name_));
23 
24  main_table->setVerticalHeaderLabels(vertical_header_names);
25 
26  for (unsigned i(0); i < displayed_topics_.size(); ++i)
27  {
28  // Display
29  QCheckBox *topic_checkbox = new QCheckBox;
30  topic_buttons_.push_back(topic_checkbox);
31  topic_checkbox->setObjectName(QString::fromStdString(displayed_topics_.at(i)->topic_name_));
32  topic_checkbox->setChecked(true);
33 
34  if (displayed_topics_.at(i)->displayed_ == false)
35  topic_checkbox->setChecked(false);
36 
37  main_table->setCellWidget(i, 0, topic_checkbox);
38 
39  // Color
40  QComboBox *color_selection_combobox = new QComboBox;
41  topic_combobox_.push_back(color_selection_combobox);
42  color_selection_combobox->setObjectName(QString::fromStdString(displayed_topics_.at(i)->topic_name_));
43  color_selection_combobox->addItems(color_list);
44  color_selection_combobox->setCurrentIndex(topic_color_.getIndexFromColor(displayed_topics_.at(i)->color_));
45  main_table->setCellWidget(i, 1, color_selection_combobox);
46 
47  // Thickness
48  QSpinBox *thickness_spin_box = new QSpinBox;
49  topic_spinbox_.push_back(thickness_spin_box);
50  thickness_spin_box->setObjectName(QString::fromStdString(displayed_topics_.at(i)->topic_name_));
51  thickness_spin_box->setRange(1, 10);
52  thickness_spin_box->setValue(displayed_topics_.at(i)->thickness_);
53  main_table->setCellWidget(i, 2, thickness_spin_box);
54  }
55 
56  main_table->resizeColumnsToContents();
57  main_table->resizeRowsToContents();
58 
59  configure_layout->addWidget(main_table);
60  QDialogButtonBox *button_box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
61  configure_layout->addWidget(button_box);
62 
63  connect(button_box, &QDialogButtonBox::accepted, this, &GraphSettings::okClicked);
64  connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject);
65 }
66 
68 {
69 }
70 
72 {
73  for (auto button : topic_buttons_)
74  {
75  for (unsigned i = 0; i < displayed_topics_.size(); i++)
76  {
77  if ((displayed_topics_.at(i)->topic_name_) == button->objectName().toStdString()
78  && button->isChecked())
79  displayed_topics_.at(i)->displayed_ = true;
80 
81  if ((displayed_topics_.at(i)->topic_name_) == button->objectName().toStdString()
82  && !button->isChecked())
83  displayed_topics_.at(i)->displayed_ = false;
84  }
85  }
86 
87  for (auto spinbox : topic_spinbox_)
88  {
89  for (unsigned i = 0; i < displayed_topics_.size(); i++)
90  {
91  if ((displayed_topics_.at(i)->topic_name_) == spinbox->objectName().toStdString())
92  displayed_topics_.at(i)->thickness_ = spinbox->value();
93  }
94  }
95 
96  for (auto combobox : topic_combobox_)
97  {
98  for (unsigned i = 0; i < displayed_topics_.size(); i++)
99  {
100  if ((displayed_topics_.at(i)->topic_name_) == combobox->objectName().toStdString())
101  {
102  const int index = combobox->currentIndex();
103  displayed_topics_.at(i)->color_ = topic_color_.getColorFromIndex(index);
104 
105  }
106  }
107  }
108 
109  accept();
110  return;
111 }
112 
113 }
QStringList getColorsStringList() const
Definition: topic_color.cpp:29
int getIndexFromColor(const QColor color) const
Definition: topic_color.cpp:18
std::deque< std::shared_ptr< TopicData > > displayed_topics_
std::vector< QCheckBox * > topic_buttons_
std::vector< QSpinBox * > topic_spinbox_
QColor getColorFromIndex(const int index) const
Definition: topic_color.cpp:10
std::vector< QComboBox * > topic_combobox_
GraphSettings(std::deque< std::shared_ptr< TopicData >> displayed_topics, QDialog *parent=0)


graph_rviz_plugin
Author(s): Édouard Pronier, Victor Lamoine - Institut Maupertuis
autogenerated on Mon Feb 28 2022 22:27:30