From 0fab216629a69ad7b0a52f219006a38cab01fec1 Mon Sep 17 00:00:00 2001 From: Martin Hanzik <martin@hanzik.com> Date: Sun, 13 May 2018 12:00:37 +0200 Subject: [PATCH] Scene clearing --- agui2/src/MainWindow.cpp | 21 ++++++++++++++++----- agui2/src/MainWindow.hpp | 3 +++ agui2/src/MainWindow.ui | 6 ++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/agui2/src/MainWindow.cpp b/agui2/src/MainWindow.cpp index 94a0f4a78c..5c28d6aea4 100644 --- a/agui2/src/MainWindow.cpp +++ b/agui2/src/MainWindow.cpp @@ -44,9 +44,7 @@ MainWindow::MainWindow() this->setupMenu(); - this->scene->addItem(new InputGraphicsBox(std::make_unique<InputModelBox>(), {0, 200})); - this->outputBox = new GraphicsBox(std::make_unique<OutputModelBox>(), {400, 200});; - this->scene->addItem(outputBox); + this->clearScene(); } void MainWindow::displayError(const QString& text) const { @@ -212,8 +210,7 @@ void MainWindow::on_actionOpen_triggered() { } catch (const std::exception& e) { QMessageBox::critical(this, "Error", e.what()); - this->scene->clear(); - this->outputBox = nullptr; + this->clearScene(); } } @@ -282,3 +279,17 @@ void MainWindow::on_actionSave_triggered() { stream << QString::fromStdString(data.dump(4)); file.close(); } + +void MainWindow::on_actionClear_triggered() { + this->clearScene(); +} + +void MainWindow::clearScene() { + ui->graphicsView->setScene(nullptr); + this->scene.reset(); + this->scene = std::make_unique<GraphicsScene>(this); + ui->graphicsView->setScene(this->scene.get()); + this->scene->addItem(new InputGraphicsBox(std::make_unique<InputModelBox>(), {0, 200})); + this->outputBox = new GraphicsBox(std::make_unique<OutputModelBox>(), {400, 200});; + this->scene->addItem(outputBox); +} diff --git a/agui2/src/MainWindow.hpp b/agui2/src/MainWindow.hpp index 7b7b10181c..7536621295 100644 --- a/agui2/src/MainWindow.hpp +++ b/agui2/src/MainWindow.hpp @@ -24,6 +24,8 @@ public: static MainWindow* getInstance(); private: + void clearScene(); + void setupMenu(); void displayError(const QString& text) const; @@ -35,6 +37,7 @@ private slots: void on_RunBtn_clicked(); void on_actionOpen_triggered(); void on_actionSave_triggered(); + void on_actionClear_triggered(); public: static const std::string ADD_INPUT_CURSOR_DATA; diff --git a/agui2/src/MainWindow.ui b/agui2/src/MainWindow.ui index 8db01826da..9077944da5 100644 --- a/agui2/src/MainWindow.ui +++ b/agui2/src/MainWindow.ui @@ -77,6 +77,7 @@ </property> <addaction name="actionOpen"/> <addaction name="actionSave"/> + <addaction name="actionClear"/> </widget> <widget class="QMenu" name="menuInsert"> <property name="title"> @@ -115,6 +116,11 @@ <string>Ctrl+S</string> </property> </action> + <action name="actionClear"> + <property name="text"> + <string>Clear</string> + </property> + </action> </widget> <layoutdefault spacing="6" margin="11"/> <customwidgets> -- GitLab