diff --git a/agui2/src/MainWindow.cpp b/agui2/src/MainWindow.cpp index 94a0f4a78c967ad859c6097f002c1f5ff45dc178..5c28d6aea47d90a2b68c88799963e6aacfd01c1e 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 7b7b10181cdd0379acff262549e39bf68d487b23..75366212950cd5d1971a9a1de3ae1d8c6f453f5f 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 8db01826da9bb2e01278eaf8a040f7aa0cdd1b04..9077944da52619867eb03e71b61e2581ab64073a 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>