Locus No Pilotus
Project of four first grade MIPT DAFE/RSE students (for engineering practical work in the second semester) in Qt C++
Loading...
Searching...
No Matches
data_tools::TablesConnection Class Reference

Класс, упрощающий отображение классов gui в QTableWidget's. More...

#include <tables_connection.h>

Inheritance diagram for data_tools::TablesConnection:
Collaboration diagram for data_tools::TablesConnection:

Public Member Functions

 TablesConnection ()=default
 
void SetRemoveButtons (QPushButton *targets_remove_button, QPushButton *hills_remove_button, QPushButton *tr_circles_remove_button, QPushButton *tr_lines_remove_button)
 Устанавливает значение всех кнопок для удаления объектов
 
void SetSettingsTables (QTableWidget *targets_info, QTableWidget *hills_info, QTableWidget *tr_circles_info, QTableWidget *tr_lines_info)
 Устанавливает значения всех таблиц с информацией
 
void Setup (DataManager *manager, PlotArea *area)
 
void UpdateTable (gui::ObjectType obj_type)
 Обновляет значения таблицы с определенным типом объекта
 
void UpdateTables ()
 Обновляет данные в таблицах всех объектов
 

Private Slots

void DisableRemoveHillButton ()
 
void DisableRemoveTargetButton ()
 
void DisableRemoveTrappyCircleButton ()
 
void DisableRemoveTrappyLineButton ()
 
void EnableRemoveHillButton (int row, int column)
 
void EnableRemoveTargetButton (int row, int column)
 
void EnableRemoveTrappyCircleButton (int row, int column)
 
void EnableRemoveTrappyLineButton (int row, int column)
 
void HillsItemChanged (int row, int column)
 
void RemoveHillItem ()
 
void RemoveTargetItem ()
 
void RemoveTrappyCircleItem ()
 
void RemoveTrappyLineItem ()
 
void TargetsItemChanged (int row, int column)
 
void TrappyCirclesItemChanged (int row, int column)
 
void TrappyLinesItemChanged (int row, int column)
 

Private Member Functions

void DisableTablesConnections ()
 
void UpdateRemoveButtonConnections ()
 
void UpdateTable (const std::vector< gui::Hill > &hills)
 Обновляет значения таблицы с Hills.
 
void UpdateTable (const std::vector< gui::Target > &targets)
 Обновляет значения таблицы с Targets.
 
void UpdateTable (const std::vector< gui::TrappyCircle > &trappy_circles)
 Обновляет значения таблицы с TrappyCircles.
 
void UpdateTable (const std::vector< gui::TrappyLine > &trappy_lines)
 Обновляет значения таблицы с TrappyLines.
 
void UpdateTablesConnections ()
 

Private Attributes

std::unique_ptr< PlotAreaarea_
 
std::unique_ptr< QPushButton > hills_remove_button_ {nullptr}
 
std::unique_ptr< QTableWidget > hills_table_ {nullptr}
 
std::unique_ptr< DataManagermanager_
 
int selected_column_ {INT_MAX}
 
std::unique_ptr< QPushButton > targets_remove_button_ {nullptr}
 
std::unique_ptr< QTableWidget > targets_table_ {nullptr}
 
std::unique_ptr< QPushButton > tr_circles_remove_button_ {nullptr}
 
std::unique_ptr< QTableWidget > tr_circles_table_ {nullptr}
 
std::unique_ptr< QPushButton > tr_lines_remove_button_ {nullptr}
 
std::unique_ptr< QTableWidget > tr_lines_table_ {nullptr}
 

Detailed Description

Класс, упрощающий отображение классов gui в QTableWidget's.

Constructor & Destructor Documentation

◆ TablesConnection()

data_tools::TablesConnection::TablesConnection ( )
default

Member Function Documentation

◆ DisableRemoveHillButton

void data_tools::TablesConnection::DisableRemoveHillButton ( )
inlineprivateslot
101{ hills_remove_button_->setEnabled(false); }
std::unique_ptr< QPushButton > hills_remove_button_
Definition tables_connection.h:147
Here is the caller graph for this function:

◆ DisableRemoveTargetButton

void data_tools::TablesConnection::DisableRemoveTargetButton ( )
inlineprivateslot
97 {
98 targets_remove_button_->setEnabled(false);
99 }
std::unique_ptr< QPushButton > targets_remove_button_
Definition tables_connection.h:146
Here is the caller graph for this function:

◆ DisableRemoveTrappyCircleButton

void data_tools::TablesConnection::DisableRemoveTrappyCircleButton ( )
inlineprivateslot
103 {
104 tr_circles_remove_button_->setEnabled(false);
105 }
std::unique_ptr< QPushButton > tr_circles_remove_button_
Definition tables_connection.h:148
Here is the caller graph for this function:

◆ DisableRemoveTrappyLineButton

void data_tools::TablesConnection::DisableRemoveTrappyLineButton ( )
inlineprivateslot
107 {
108 tr_lines_remove_button_->setEnabled(false);
109 }
std::unique_ptr< QPushButton > tr_lines_remove_button_
Definition tables_connection.h:149
Here is the caller graph for this function:

◆ DisableTablesConnections()

void data_tools::TablesConnection::DisableTablesConnections ( )
private
460 {
461 QObject::disconnect(targets_table_.get(), &QTableWidget::cellChanged, this,
463
464 QObject::disconnect(hills_table_.get(), &QTableWidget::cellChanged, this,
466
467 QObject::disconnect(tr_circles_table_.get(), &QTableWidget::cellChanged, this,
469
470 QObject::disconnect(tr_lines_table_.get(), &QTableWidget::cellChanged, this,
472}
std::unique_ptr< QTableWidget > tr_circles_table_
Definition tables_connection.h:143
void TrappyLinesItemChanged(int row, int column)
Definition tables_connection.cpp:367
std::unique_ptr< QTableWidget > tr_lines_table_
Definition tables_connection.h:144
std::unique_ptr< QTableWidget > hills_table_
Definition tables_connection.h:142
std::unique_ptr< QTableWidget > targets_table_
Definition tables_connection.h:141
void HillsItemChanged(int row, int column)
Definition tables_connection.cpp:294
void TrappyCirclesItemChanged(int row, int column)
Definition tables_connection.cpp:337
void TargetsItemChanged(int row, int column)
Definition tables_connection.cpp:265
Here is the call graph for this function:
Here is the caller graph for this function:

◆ EnableRemoveHillButton

void data_tools::TablesConnection::EnableRemoveHillButton ( int row,
int column )
inlineprivateslot
79 {
80 Q_UNUSED(row);
81 selected_column_ = column;
82 hills_remove_button_->setEnabled(true);
83 }
int selected_column_
Definition tables_connection.h:136
Here is the caller graph for this function:

◆ EnableRemoveTargetButton

void data_tools::TablesConnection::EnableRemoveTargetButton ( int row,
int column )
inlineprivateslot
73 {
74 Q_UNUSED(row);
75 selected_column_ = column;
76 targets_remove_button_->setEnabled(true);
77 }
Here is the caller graph for this function:

◆ EnableRemoveTrappyCircleButton

void data_tools::TablesConnection::EnableRemoveTrappyCircleButton ( int row,
int column )
inlineprivateslot
85 {
86 Q_UNUSED(row);
87 selected_column_ = column;
88 tr_circles_remove_button_->setEnabled(true);
89 }
Here is the caller graph for this function:

◆ EnableRemoveTrappyLineButton

void data_tools::TablesConnection::EnableRemoveTrappyLineButton ( int row,
int column )
inlineprivateslot
91 {
92 Q_UNUSED(row);
93 selected_column_ = column;
94 tr_lines_remove_button_->setEnabled(true);
95 }
Here is the caller graph for this function:

◆ HillsItemChanged

void data_tools::TablesConnection::HillsItemChanged ( int row,
int column )
privateslot
294 {
295 auto x_item = hills_table_->item(row, column);
296 auto y_item = hills_table_->item(row, column);
297
298 size_t p_index{ULLONG_MAX};
299
300 // здесь важно понимать, что из-за айдишника нумерация сдвинута
301 // поэтому X на нечетных, а Y на четных
302 bool is_y_item_changed = row % 2 == 0;
303
304 if (is_y_item_changed) {
305 // если попали в Y, то предыдущий X (той же точки)
306 x_item = hills_table_->item(row - 1, column);
307 p_index = row / 2 - 1;
308 } else {
309 // если попали в X, то следующий Y (той же точки)
310 y_item = hills_table_->item(row + 1, column);
311 p_index = (row - 1) / 2;
312 }
313
314 try {
315 if (x_item != nullptr && y_item != nullptr &&
316 static_cast<size_t>(column) < manager_->GetHills().size() &&
317 p_index < manager_->GetHills()[column].GetVertices().size()) {
318 manager_->GetHillsPtrs()[column]->GetVertices()[p_index].x =
319 x_item->text().toDouble();
320 manager_->GetHillsPtrs()[column]->GetVertices()[p_index].y =
321 y_item->text().toDouble();
322
323 area_->ReDraw();
324 }
325
326 } catch (const std::exception& e) {
327 QMessageBox::critical(targets_table_.get(), "Error!", e.what());
328
329 manager_->Remove(gui::ObjectType::Hills, static_cast<size_t>(column));
331 area_->ReDraw();
332 }
333}
void UpdateTable(gui::ObjectType obj_type)
Обновляет значения таблицы с определенным типом объекта
Definition tables_connection.cpp:232
std::unique_ptr< DataManager > manager_
Definition tables_connection.h:151
std::unique_ptr< PlotArea > area_
Definition tables_connection.h:152
Here is the call graph for this function:
Here is the caller graph for this function:

◆ RemoveHillItem

void data_tools::TablesConnection::RemoveHillItem ( )
privateslot
414 {
416
418 area_->ReDraw();
420
422}
void DisableTablesConnections()
Definition tables_connection.cpp:460
void UpdateTablesConnections()
Definition tables_connection.cpp:446
Here is the call graph for this function:
Here is the caller graph for this function:

◆ RemoveTargetItem

void data_tools::TablesConnection::RemoveTargetItem ( )
privateslot
Here is the call graph for this function:
Here is the caller graph for this function:

◆ RemoveTrappyCircleItem

void data_tools::TablesConnection::RemoveTrappyCircleItem ( )
privateslot
Here is the call graph for this function:
Here is the caller graph for this function:

◆ RemoveTrappyLineItem

void data_tools::TablesConnection::RemoveTrappyLineItem ( )
privateslot
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetRemoveButtons()

void data_tools::TablesConnection::SetRemoveButtons ( QPushButton * targets_remove_button,
QPushButton * hills_remove_button,
QPushButton * tr_circles_remove_button,
QPushButton * tr_lines_remove_button )
inline

Устанавливает значение всех кнопок для удаления объектов

Parameters
targets_remove_button
hills_remove_button
tr_circles_remove_button
tr_lines_remove_button
45 {
46 targets_remove_button_.reset(targets_remove_button);
47 hills_remove_button_.reset(hills_remove_button);
48 tr_circles_remove_button_.reset(tr_circles_remove_button);
49 tr_lines_remove_button_.reset(tr_lines_remove_button);
51 }
void UpdateRemoveButtonConnections()
Definition tables_connection.cpp:474
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetSettingsTables()

void data_tools::TablesConnection::SetSettingsTables ( QTableWidget * targets_info,
QTableWidget * hills_info,
QTableWidget * tr_circles_info,
QTableWidget * tr_lines_info )
inline

Устанавливает значения всех таблиц с информацией

Parameters
hills_infoQTableWidget с информацией о hills
targets_infoQTableWidget с информацией о hills
tr_circles_infoQTableWidget с информацией о hills
tr_lines_infoQTableWidget с информацией о hills
27 {
28 targets_table_.reset(targets_info);
29 hills_table_.reset(hills_info);
30 tr_circles_table_.reset(tr_circles_info);
31 tr_lines_table_.reset(tr_lines_info);
33 }
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Setup()

void data_tools::TablesConnection::Setup ( DataManager * manager,
PlotArea * area )
6 {
7 manager_.reset(manager);
8 area_.reset(area);
9}
Here is the caller graph for this function:

◆ TargetsItemChanged

void data_tools::TablesConnection::TargetsItemChanged ( int row,
int column )
privateslot
265 {
266 Q_UNUSED(row);
267
268 auto x_item = targets_table_->item(1, column);
269 auto y_item = targets_table_->item(2, column);
270
271 try {
272 if (x_item != nullptr && y_item != nullptr &&
273 static_cast<size_t>(column) < manager_->GetTargets().size()) {
274 manager_->GetTargetsPtrs()[column]->SetPoint(x_item->text().toDouble(),
275 y_item->text().toDouble());
276
277 area_->ReDraw();
278 }
279
280 } catch (const std::exception& e) {
281 QMessageBox::critical(targets_table_.get(), "Error!", e.what());
282
283 manager_->Remove(gui::ObjectType::Targets, static_cast<size_t>(column));
285
286 // (в случае удаления к.т., которая была привязана, надо обновить)
288 area_->ReDraw();
289 }
290}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ TrappyCirclesItemChanged

void data_tools::TablesConnection::TrappyCirclesItemChanged ( int row,
int column )
privateslot
337 {
338 Q_UNUSED(row);
339
340 auto x_item = tr_circles_table_->item(1, column);
341 auto y_item = tr_circles_table_->item(2, column);
342 auto r_item = tr_circles_table_->item(3, column);
343
344 try {
345 if (x_item != nullptr && y_item != nullptr && r_item != nullptr &&
346 static_cast<size_t>(column) < manager_->GetTrappyCircles().size()) {
347 manager_->GetTrappyCirclesPtrs()[column]->SetCenter(
348 {x_item->text().toDouble(), y_item->text().toDouble()});
349 manager_->GetTrappyCirclesPtrs()[column]->SetRadius(
350 r_item->text().toDouble());
351
352 area_->ReDraw();
353 }
354
355 } catch (const std::exception& e) {
356 QMessageBox::critical(targets_table_.get(), "Error!", e.what());
357
359 static_cast<size_t>(column));
361 area_->ReDraw();
362 }
363}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ TrappyLinesItemChanged

void data_tools::TablesConnection::TrappyLinesItemChanged ( int row,
int column )
privateslot
367 {
368 Q_UNUSED(row);
369
370 auto t_1_item = tr_lines_table_->item(1, column);
371 auto t_2_item = tr_lines_table_->item(2, column);
372
373 try {
374 if (t_1_item != nullptr && t_2_item != nullptr &&
375 static_cast<size_t>(column) < manager_->GetTrappyLines().size()) {
376 // мы в клетках таблицы храним номера, так что для индекса нужно вычесть 1
377 auto t_1_index = t_1_item->text().toULong() - 1;
378 auto t_2_index = t_2_item->text().toULong() - 1;
379
380 if (t_1_index < manager_->GetTargets().size() &&
381 t_2_index < manager_->GetTargets().size()) {
382 manager_->GetTrappyLinesPtrs()[column]->SetTargets(
383 manager_->GetTargetsPtrs()[t_1_index],
384 manager_->GetTargetsPtrs()[t_2_index]);
385
386 area_->ReDraw();
387
388 } else
389 throw std::invalid_argument("Wrong targets numbers in TrappyLines!");
390 }
391
392 } catch (const std::exception& e) {
393 QMessageBox::warning(tr_lines_table_.get(), "Error!", e.what());
394
395 manager_->Remove(gui::ObjectType::TrappyLines, static_cast<size_t>(column));
397 area_->ReDraw();
398 }
399}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateRemoveButtonConnections()

void data_tools::TablesConnection::UpdateRemoveButtonConnections ( )
private
474 {
475 // активируем кнопки при выборе любой клетки
476 QObject::connect(targets_table_.get(), &QTableWidget::cellClicked, this,
478
479 QObject::connect(hills_table_.get(), &QTableWidget::cellClicked, this,
481
482 QObject::connect(tr_lines_table_.get(), &QTableWidget::cellClicked, this,
484
485 QObject::connect(tr_circles_table_.get(), &QTableWidget::cellClicked, this,
487
488 // деактивируем кнопки, если выбор изменился
489 QObject::connect(targets_table_.get(), &QTableWidget::itemSelectionChanged,
491
492 QObject::connect(hills_table_.get(), &QTableWidget::itemSelectionChanged,
494
495 QObject::connect(tr_lines_table_.get(), &QTableWidget::itemSelectionChanged,
497
498 QObject::connect(tr_circles_table_.get(), &QTableWidget::itemSelectionChanged,
500
501 // привязываем сами функции к сигналам
502 QObject::connect(targets_remove_button_.get(), &QPushButton::clicked, this,
504
505 QObject::connect(hills_remove_button_.get(), &QPushButton::clicked, this,
507
508 QObject::connect(tr_circles_remove_button_.get(), &QPushButton::clicked, this,
510
511 QObject::connect(tr_lines_remove_button_.get(), &QPushButton::clicked, this,
513}
void RemoveTrappyCircleItem()
Definition tables_connection.cpp:424
void RemoveTrappyLineItem()
Definition tables_connection.cpp:434
void EnableRemoveHillButton(int row, int column)
Definition tables_connection.h:79
void DisableRemoveTargetButton()
Definition tables_connection.h:97
void EnableRemoveTargetButton(int row, int column)
Definition tables_connection.h:73
void DisableRemoveHillButton()
Definition tables_connection.h:101
void RemoveTargetItem()
Definition tables_connection.cpp:403
void DisableRemoveTrappyCircleButton()
Definition tables_connection.h:103
void EnableRemoveTrappyCircleButton(int row, int column)
Definition tables_connection.h:85
void EnableRemoveTrappyLineButton(int row, int column)
Definition tables_connection.h:91
void DisableRemoveTrappyLineButton()
Definition tables_connection.h:107
void RemoveHillItem()
Definition tables_connection.cpp:414
Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateTable() [1/5]

void data_tools::TablesConnection::UpdateTable ( const std::vector< gui::Hill > & hills)
private

Обновляет значения таблицы с Hills.

Parameters
hillsвектор новых значений
54 {
56
57 if (hills.empty()) {
58 hills_table_->setColumnCount(0);
59 return;
60 }
61
62 // находим максимально возможное кол-во точек среди всех холмов
63 size_t hills_max_points = hills[0].GetVertices().size();
64 for (size_t i = 0; i < hills.size() - 1; i++) {
65 hills_max_points = std::max(hills[i].GetVertices().size(),
66 hills[i + 1].GetVertices().size());
67 }
68
69 // кол-во столбцов = кол-во рельефов
70 hills_table_->setColumnCount(static_cast<int>(hills.size()));
71
72 // кол-во строк = максимальное число точек * 2 (т.к. x и y) и индекс
73 hills_table_->setRowCount(static_cast<int>(hills_max_points * 2 + 1));
74
75 for (size_t i = 0; i < hills.size(); i++) {
76 // устанавливаем столбик с номером объекта
77 auto item = new QTableWidgetItem("№ " + QString::number(i + 1));
78 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
79 item->setTextAlignment(Qt::AlignCenter);
80 hills_table_->setHorizontalHeaderItem(static_cast<int>(i),
81 item); // номер рельефа = индекс + 1
82
83 // в строки добавляем индекс на полотне и координаты всех точек
84 item = new QTableWidgetItem(QString::number(hills[i].GetData().GetId()));
85 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
86 hills_table_->setItem(0, static_cast<int>(i), item);
87
88 for (size_t j = 1; j < hills[i].GetVertices().size() * 2; j += 2) {
89 // названия строк с координатами
90 hills_table_->setVerticalHeaderItem(
91 static_cast<int>(j),
92 new QTableWidgetItem("X_" + QString::number(j / 2 + 1)));
93 hills_table_->setVerticalHeaderItem(
94 static_cast<int>(j + 1),
95 new QTableWidgetItem("Y_" + QString::number(j / 2 + 1)));
96
97 // сами координаты
98 item = new QTableWidgetItem(
99 QString::number(hills[i].GetVertices()[(j - 1) / 2].x));
100 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable |
101 Qt::ItemIsEnabled);
102 hills_table_->setItem(static_cast<int>(j), static_cast<int>(i), item);
103
104 item = new QTableWidgetItem(
105 QString::number(hills[i].GetVertices()[(j - 1) / 2].y));
106 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable |
107 Qt::ItemIsEnabled);
108 hills_table_->setItem(static_cast<int>(j + 1), static_cast<int>(i), item);
109 }
110 }
111
112 hills_table_->update();
114}
Here is the call graph for this function:

◆ UpdateTable() [2/5]

void data_tools::TablesConnection::UpdateTable ( const std::vector< gui::Target > & targets)
private

Обновляет значения таблицы с Targets.

Parameters
targetsвектор новых значений
13 {
15
16 if (targets.empty()) {
17 targets_table_->setColumnCount(0);
18 return;
19 }
20
21 // кол-во столбцов = кол-во к.т.
22 targets_table_->setColumnCount(static_cast<int>(targets.size()));
23
24 for (size_t i = 0; i < targets.size(); i++) {
25 // устанавливаем столбик с номером объекта
26 auto item = new QTableWidgetItem("№ " + QString::number(i + 1));
27 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
28 item->setTextAlignment(Qt::AlignCenter);
29 targets_table_->setHorizontalHeaderItem(static_cast<int>(i),
30 item); // номер к.т. = индекс + 1
31
32 // в строки добавляем индекс на полотне и координаты
33 item = new QTableWidgetItem(QString::number(targets[i].GetData().GetId()));
34 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
35 targets_table_->setItem(0, static_cast<int>(i), item);
36
37 item = new QTableWidgetItem(QString::number(targets[i].GetPoint().x));
38 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable |
39 Qt::ItemIsEnabled);
40 targets_table_->setItem(1, static_cast<int>(i), item);
41
42 item = new QTableWidgetItem(QString::number(targets[i].GetPoint().y));
43 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable |
44 Qt::ItemIsEnabled);
45 targets_table_->setItem(2, static_cast<int>(i), item);
46 }
47
48 targets_table_->update();
50}
Here is the call graph for this function:

◆ UpdateTable() [3/5]

void data_tools::TablesConnection::UpdateTable ( const std::vector< gui::TrappyCircle > & trappy_circles)
private

Обновляет значения таблицы с TrappyCircles.

Parameters
trappy_circlesвектор новых значений
185 {
187
188 if (trappy_circles.empty()) {
189 tr_circles_table_->setColumnCount(0);
190 return;
191 }
192
193 // кол-во столбцов = кол-во опасных зон
194 tr_circles_table_->setColumnCount(static_cast<int>(trappy_circles.size()));
195
196 for (size_t i = 0; i < trappy_circles.size(); i++) {
197 // устанавливаем столбик с номером объекта
198 auto item = new QTableWidgetItem("№ " + QString::number(i + 1));
199 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
200 item->setTextAlignment(Qt::AlignCenter);
201 tr_circles_table_->setHorizontalHeaderItem(
202 static_cast<int>(i), item); // номер зоны = индекс + 1
203
204 // в строки добавляем индекс на полотне, координаты точки и радиус
205 item = new QTableWidgetItem(
206 QString::number(trappy_circles[i].GetData().GetId()));
207 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
208 tr_circles_table_->setItem(0, static_cast<int>(i), item);
209
210 item =
211 new QTableWidgetItem(QString::number(trappy_circles[i].GetCenter().x));
212 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable |
213 Qt::ItemIsEnabled);
214 tr_circles_table_->setItem(1, static_cast<int>(i), item);
215
216 item =
217 new QTableWidgetItem(QString::number(trappy_circles[i].GetCenter().y));
218 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable |
219 Qt::ItemIsEnabled);
220 tr_circles_table_->setItem(2, static_cast<int>(i), item);
221
222 item = new QTableWidgetItem(QString::number(trappy_circles[i].GetRadius()));
223 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable |
224 Qt::ItemIsEnabled);
225 tr_circles_table_->setItem(3, static_cast<int>(i), item);
226 }
227
228 tr_circles_table_->update();
230}
Here is the call graph for this function:

◆ UpdateTable() [4/5]

void data_tools::TablesConnection::UpdateTable ( const std::vector< gui::TrappyLine > & trappy_lines)
private

Обновляет значения таблицы с TrappyLines.

Parameters
trappy_linesвектор новых значений
119 {
121
122 if (trappy_lines.empty()) {
123 tr_lines_table_->setColumnCount(0);
124 return;
125 }
126
127 // кол-во столбцов = кол-во опасных линий
128 tr_lines_table_->setColumnCount(static_cast<int>(trappy_lines.size()));
129
130 for (size_t i = 0; i < trappy_lines.size(); i++) {
131 // устанавливаем столбик с номером объекта
132 auto item = new QTableWidgetItem("№ " + QString::number(i + 1));
133 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
134 item->setTextAlignment(Qt::AlignCenter);
135 tr_lines_table_->setHorizontalHeaderItem(static_cast<int>(i),
136 item); // номер линии = индекс + 1
137
138 // в строки добавляем индекс на полотне
139 item = new QTableWidgetItem(
140 QString::number(trappy_lines[i].GetData().GetId()));
141 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEnabled);
142 tr_lines_table_->setItem(0, static_cast<int>(i), item);
143
144 // нахождение номеров двух привязанных к.т. в векторе менеджера
145 size_t t_1_n{ULLONG_MAX};
146 size_t t_2_n{ULLONG_MAX};
147
148 for (size_t j = 0; j < manager_->GetTargets().size(); j++) {
149 auto target_ptr = manager_->GetTargetsPtrs()[j];
150
151 if (target_ptr == trappy_lines[i].GetTargetsPtrs().first)
152 t_1_n = j + 1; // номер = индекс + 1
153 if (target_ptr == trappy_lines[i].GetTargetsPtrs().second)
154 t_2_n = j + 1; // номер = индекс + 1
155 }
156
157 item = new QTableWidgetItem(QString::number(t_1_n));
158 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable |
159 Qt::ItemIsEnabled);
160 tr_lines_table_->setItem(1, static_cast<int>(i), item);
161
162 item = new QTableWidgetItem(QString::number(t_2_n));
163 item->setFlags(Qt::ItemIsSelectable | Qt::ItemIsEditable |
164 Qt::ItemIsEnabled);
165 tr_lines_table_->setItem(2, static_cast<int>(i), item);
166
167 // если эти номера остались огромными, то валидные к.т. не нашлись
168 if (t_1_n == ULLONG_MAX || t_2_n == ULLONG_MAX) {
169 QMessageBox::warning(tr_lines_table_.get(), "Error!",
170 "Wrong targets numbers in TrappyLines!");
171
173 tr_lines_table_->removeColumn(i);
174 area_->ReDraw();
175 }
176 }
177
178 tr_lines_table_->update();
180}
Here is the call graph for this function:

◆ UpdateTable() [5/5]

void data_tools::TablesConnection::UpdateTable ( gui::ObjectType obj_type)

Обновляет значения таблицы с определенным типом объекта

Parameters
obj_typeтип объекта
232 {
233 switch (obj_type) {
235 UpdateTable(manager_->GetTargets());
236 break;
237
239 UpdateTable(manager_->GetHills());
240 break;
241
243 UpdateTable(manager_->GetTrappyCircles());
244 break;
245
247 UpdateTable(manager_->GetTrappyLines());
248 break;
249 }
250}
Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateTables()

void data_tools::TablesConnection::UpdateTables ( )

Обновляет данные в таблицах всех объектов

Here is the call graph for this function:
Here is the caller graph for this function:

◆ UpdateTablesConnections()

void data_tools::TablesConnection::UpdateTablesConnections ( )
private
446 {
447 QObject::connect(targets_table_.get(), &QTableWidget::cellChanged, this,
449
450 QObject::connect(hills_table_.get(), &QTableWidget::cellChanged, this,
452
453 QObject::connect(tr_circles_table_.get(), &QTableWidget::cellChanged, this,
455
456 QObject::connect(tr_lines_table_.get(), &QTableWidget::cellChanged, this,
458}
Here is the call graph for this function:
Here is the caller graph for this function:

Member Data Documentation

◆ area_

std::unique_ptr<PlotArea> data_tools::TablesConnection::area_
private

◆ hills_remove_button_

std::unique_ptr<QPushButton> data_tools::TablesConnection::hills_remove_button_ {nullptr}
private
147{nullptr};

◆ hills_table_

std::unique_ptr<QTableWidget> data_tools::TablesConnection::hills_table_ {nullptr}
private
142{nullptr};

◆ manager_

std::unique_ptr<DataManager> data_tools::TablesConnection::manager_
private

◆ selected_column_

int data_tools::TablesConnection::selected_column_ {INT_MAX}
private
136{INT_MAX};

◆ targets_remove_button_

std::unique_ptr<QPushButton> data_tools::TablesConnection::targets_remove_button_ {nullptr}
private
146{nullptr};

◆ targets_table_

std::unique_ptr<QTableWidget> data_tools::TablesConnection::targets_table_ {nullptr}
private
141{nullptr};

◆ tr_circles_remove_button_

std::unique_ptr<QPushButton> data_tools::TablesConnection::tr_circles_remove_button_ {nullptr}
private
148{nullptr};

◆ tr_circles_table_

std::unique_ptr<QTableWidget> data_tools::TablesConnection::tr_circles_table_ {nullptr}
private
143{nullptr};

◆ tr_lines_remove_button_

std::unique_ptr<QPushButton> data_tools::TablesConnection::tr_lines_remove_button_ {nullptr}
private
149{nullptr};

◆ tr_lines_table_

std::unique_ptr<QTableWidget> data_tools::TablesConnection::tr_lines_table_ {nullptr}
private
144{nullptr};

The documentation for this class was generated from the following files: