26 #include "settingseditor/settingseditor.h" |
26 #include "settingseditor/settingseditor.h" |
27 #include "version.h" |
27 #include "version.h" |
28 #include "document.h" |
28 #include "document.h" |
29 #include "uiutilities.h" |
29 #include "uiutilities.h" |
30 #include "widgets/colorselectdialog.h" |
30 #include "widgets/colorselectdialog.h" |
|
31 #include "modeleditor.h" |
31 |
32 |
32 template<typename BaseType, typename MemberType, typename DataType> |
33 template<typename BaseType, typename MemberType, typename DataType> |
33 struct MemberData |
34 struct MemberData |
34 { |
35 { |
35 std::size_t member; |
36 std::size_t member; |
75 connect(this->ui->actionSave, &QAction::triggered, |
76 connect(this->ui->actionSave, &QAction::triggered, |
76 this, &MainWindow::actionSave); |
77 this, &MainWindow::actionSave); |
77 connect(this->ui->actionSaveAs, &QAction::triggered, |
78 connect(this->ui->actionSaveAs, &QAction::triggered, |
78 this, &MainWindow::actionSaveAs); |
79 this, &MainWindow::actionSaveAs); |
79 connect(this->ui->actionClose, &QAction::triggered, this, &MainWindow::actionClose); |
80 connect(this->ui->actionClose, &QAction::triggered, this, &MainWindow::actionClose); |
|
81 connect(this->ui->actionDelete, &QAction::triggered, this, &MainWindow::actionDelete); |
80 connect(this->ui->tabs, &QTabWidget::tabCloseRequested, this, &MainWindow::handleTabCloseButton); |
82 connect(this->ui->tabs, &QTabWidget::tabCloseRequested, this, &MainWindow::handleTabCloseButton); |
81 for (auto data : ::renderStyleButtons) |
83 for (auto data : ::renderStyleButtons) |
82 { |
84 { |
83 QAction* action = data.memberInstance(this->ui.get()); |
85 QAction* action = data.memberInstance(this->ui.get()); |
84 connect(action, &QAction::triggered, [this, data]() |
86 connect(action, &QAction::triggered, [this, data]() |
326 void MainWindow::actionClose() |
328 void MainWindow::actionClose() |
327 { |
329 { |
328 if (this->currentDocument() != nullptr) |
330 if (this->currentDocument() != nullptr) |
329 { |
331 { |
330 this->closeDocument(this->currentDocument()); |
332 this->closeDocument(this->currentDocument()); |
|
333 } |
|
334 } |
|
335 |
|
336 /** |
|
337 * @brief Handles the "Delete" (Del) action |
|
338 */ |
|
339 void MainWindow::actionDelete() |
|
340 { |
|
341 Document* document = this->currentDocument(); |
|
342 if (document != nullptr) |
|
343 { |
|
344 std::unique_ptr<ModelEditor> modelEditor = document->editModel(); |
|
345 QSet<ldraw::id_t> ids = document->selectedObjects(); // copy |
|
346 for (const ldraw::id_t id : ids) |
|
347 { |
|
348 const QModelIndex index = modelEditor->model().find(id); |
|
349 if (index.isValid()) |
|
350 { |
|
351 modelEditor->remove(index.row()); |
|
352 } |
|
353 } |
331 } |
354 } |
332 } |
355 } |
333 |
356 |
334 /** |
357 /** |
335 * @brief Removes the document at the specified tab index |
358 * @brief Removes the document at the specified tab index |