settings.cpp
Go to the documentation of this file.
2 
3 namespace graph_rviz_plugin
4 {
5 
6 Settings::Settings(bool scale_auto, bool window_time_enable, bool
7 legend_enable, double y_min, double y_max, double w_time, double
8  refresh_freq, QDialog *) :
9  y_min_(y_min),
10  y_max_(y_max),
11  w_time_(w_time),
12  refresh_freq_(refresh_freq),
13  scale_auto_(scale_auto),
14  window_time_enable_(window_time_enable),
15  legend_enable_(legend_enable),
16  y_min_double_spin_box_(new QDoubleSpinBox),
17  y_max_double_spin_box_(new QDoubleSpinBox),
18  w_time_double_spin_box_(new QDoubleSpinBox),
19  refresh_frequency_spin_box_(new QComboBox),
20  legend_enable_button_(new QCheckBox("Enable legend"))
21 {
22  setWindowTitle("Settings");
23  QVBoxLayout *main_layout = new QVBoxLayout;
24  setLayout(main_layout);
25 
26  QGroupBox *general_groupbox = new QGroupBox("General");
27  QVBoxLayout *general_layout = new QVBoxLayout;
28  QLabel *title_combo_box = new QLabel("Refresh frequency");
29  general_layout->addWidget(title_combo_box);
30  QStringList frequency_list = {"1 Hz", "2 Hz", "5 Hz", "10 Hz", "20 Hz", "40 Hz", "60 Hz", "100 Hz"};
31  refresh_frequency_spin_box_->addItems(frequency_list);
32 
33  if (refresh_freq_ == 1)
34  refresh_frequency_spin_box_->setCurrentIndex(0);
35  else if (refresh_freq_ == 2)
36  refresh_frequency_spin_box_->setCurrentIndex(1);
37  else if (refresh_freq_ == 5)
38  refresh_frequency_spin_box_->setCurrentIndex(2);
39  else if (refresh_freq_ == 10)
40  refresh_frequency_spin_box_->setCurrentIndex(3);
41  else if (refresh_freq_ == 20)
42  refresh_frequency_spin_box_->setCurrentIndex(4);
43  else if (refresh_freq_ == 40)
44  refresh_frequency_spin_box_->setCurrentIndex(5);
45  else if (refresh_freq_ == 60)
46  refresh_frequency_spin_box_->setCurrentIndex(6);
47  else if (refresh_freq_ == 100)
48  refresh_frequency_spin_box_->setCurrentIndex(7);
49  else
50  refresh_frequency_spin_box_->setCurrentIndex(5); // 40 Hz by default
51 
52  general_layout->addWidget(refresh_frequency_spin_box_);
53  general_layout->addWidget(legend_enable_button_);
54 
55  if (legend_enable_ == true)
56  legend_enable_button_->setChecked(true);
57  else
58  legend_enable_button_->setChecked(false);
59 
60  general_groupbox->setLayout(general_layout);
61  main_layout->addWidget(general_groupbox);
62 
63  QGroupBox *y_axis_groupbox = new QGroupBox("Y axis");
64  QFormLayout *y_axis_layout = new QFormLayout;
65  QCheckBox *y_axis_autoscale = new QCheckBox("Y auto");
66  y_axis_layout->addWidget(y_axis_autoscale);
67  y_min_double_spin_box_->setRange(-1e9, 1e9);
68  y_max_double_spin_box_->setRange(-1e9, 1e9);
69 
70  if (scale_auto_ == true)
71  {
72  y_axis_autoscale->setChecked(true);
73  y_min_double_spin_box_->setEnabled(false);
74  y_max_double_spin_box_->setEnabled(false);
75  }
76  else
77  {
78  y_axis_autoscale->setChecked(false);
79  y_min_double_spin_box_->setEnabled(true);
80  y_max_double_spin_box_->setEnabled(true);
81  }
82  y_min_double_spin_box_->setValue(y_min_);
83  y_max_double_spin_box_->setValue(y_max_);
84 
85  y_axis_layout->addRow("Y max: ", y_max_double_spin_box_);
86  y_axis_layout->addRow("Y min: ", y_min_double_spin_box_);
87  y_axis_groupbox->setLayout(y_axis_layout);
88  main_layout->addWidget(y_axis_groupbox);
89 
90  QGroupBox *x_axis_groupbox = new QGroupBox("X axis");
91  QFormLayout *x_axis_layout = new QFormLayout;
92  QCheckBox *x_axis_window_time_button = new QCheckBox("Window time");
93  x_axis_layout->addWidget(x_axis_window_time_button);
94  w_time_double_spin_box_->setRange(1, 36000);
95  w_time_double_spin_box_->setSingleStep(10);
96 
97  if (window_time_enable_ == false)
98  {
99  x_axis_window_time_button->setChecked(false);
100  w_time_double_spin_box_->setEnabled(false);
101  }
102  else
103  {
104  x_axis_window_time_button->setChecked(true);
105  w_time_double_spin_box_->setEnabled(true);
106  w_time_double_spin_box_->setValue(w_time_);
107  }
108 
109  x_axis_layout->addRow("Time: ", w_time_double_spin_box_);
110  x_axis_groupbox->setLayout(x_axis_layout);
111  main_layout->addWidget(x_axis_groupbox);
112 
113  connect(y_axis_autoscale, &QCheckBox::toggled, this, &Settings::yAxisAutoscale);
114  connect(x_axis_window_time_button, &QCheckBox::toggled, this, &Settings::xAxisWindowTime);
115  QDialogButtonBox *button_box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
116  main_layout->addWidget(button_box);
117 
118  connect(button_box, &QDialogButtonBox::accepted, this, &Settings::okClicked);
119  connect(button_box, &QDialogButtonBox::rejected, this, &QDialog::reject);
120  connect(y_min_double_spin_box_, qOverload<double>(&QDoubleSpinBox::valueChanged), this, &Settings::yMinChanged);
121  connect(y_max_double_spin_box_, qOverload<double>(&QDoubleSpinBox::valueChanged), this, &Settings::yMaxChanged);
122 }
123 
125 {
126 }
127 
128 void Settings::yAxisAutoscale(bool checked)
129 {
130  if (checked == false)
131  {
132  y_min_double_spin_box_->setEnabled(true);
133  y_max_double_spin_box_->setEnabled(true);
134  scale_auto_ = false;
135  }
136  else
137  {
138  y_min_double_spin_box_->setEnabled(false);
139  y_max_double_spin_box_->setEnabled(false);
140  scale_auto_ = true;
141  }
142 }
143 
144 void Settings::xAxisWindowTime(bool checked)
145 {
146  if (checked == false)
147  {
148  w_time_double_spin_box_->setEnabled(false);
149  window_time_enable_ = false;
150  }
151  else
152  {
153  w_time_double_spin_box_->setEnabled(true);
154  window_time_enable_ = true;
155  }
156 }
157 
158 void Settings::yMinChanged(double y_min)
159 {
160  y_min_ = y_min;
161 
162  if (y_min_ > y_max_)
163  {
164  y_max_ = y_min_ + 0.1;
165  y_max_double_spin_box_->setValue(y_max_);
166  }
167 }
168 
169 void Settings::yMaxChanged(double y_max)
170 {
171  y_max_ = y_max;
172 
173  if (y_max_ < y_min_)
174  {
175  y_min_ = y_min_ - 0.1;
176  y_min_double_spin_box_->setValue(y_min_);
177  }
178 }
179 
181 {
182  if (scale_auto_ == false)
183  {
184  y_min_ = y_min_double_spin_box_->value();
185  y_max_ = y_max_double_spin_box_->value();
186  }
187 
188  if (window_time_enable_ == true)
189  w_time_ = w_time_double_spin_box_->value();
190 
191  legend_enable_ = legend_enable_button_->isChecked();
192 
193  if (refresh_frequency_spin_box_->currentIndex() == 0)
194  refresh_freq_ = 1;
195  else if (refresh_frequency_spin_box_->currentIndex() == 1)
196  refresh_freq_ = 2;
197  else if (refresh_frequency_spin_box_->currentIndex() == 2)
198  refresh_freq_ = 5;
199  else if (refresh_frequency_spin_box_->currentIndex() == 3)
200  refresh_freq_ = 10;
201  else if (refresh_frequency_spin_box_->currentIndex() == 4)
202  refresh_freq_ = 20;
203  else if (refresh_frequency_spin_box_->currentIndex() == 5)
204  refresh_freq_ = 40;
205  else if (refresh_frequency_spin_box_->currentIndex() == 6)
206  refresh_freq_ = 60;
207  else if (refresh_frequency_spin_box_->currentIndex() == 7)
208  refresh_freq_ = 100;
209  else
210  refresh_freq_ = 40;
211 
212  accept();
213 }
214 
215 }
void yAxisAutoscale(bool checked)
Definition: settings.cpp:128
QDoubleSpinBox * w_time_double_spin_box_
Definition: settings.hpp:43
Settings(bool scale_auto, bool window_time_enable, bool legend_enable, double y_min, double y_max, double w_time, double refresh_freq, QDialog *parent=0)
Definition: settings.cpp:6
QComboBox * refresh_frequency_spin_box_
Definition: settings.hpp:44
void xAxisWindowTime(bool checked)
Definition: settings.cpp:144
QCheckBox * legend_enable_button_
Definition: settings.hpp:45
void yMaxChanged(double y_max)
Definition: settings.cpp:169
void yMinChanged(double y_min)
Definition: settings.cpp:158
QDoubleSpinBox * y_min_double_spin_box_
Definition: settings.hpp:41
QDoubleSpinBox * y_max_double_spin_box_
Definition: settings.hpp:42


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