diff --git a/mainwindow.ui b/mainwindow.ui index d70d07a..6068e0d 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -63,26 +63,6 @@ 6 - - - - Forme - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - @@ -127,6 +107,26 @@ + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Forme + + + @@ -140,6 +140,16 @@ + + + + false + + + Delete Cube + + + @@ -254,6 +264,9 @@ true + + true + Linear @@ -262,6 +275,9 @@ true + + false + Nearest @@ -270,6 +286,9 @@ true + + true + Linear MipMap Linear diff --git a/src/viewer/simpleViewer.cpp b/src/viewer/simpleViewer.cpp index cb9f765..b4adfaf 100644 --- a/src/viewer/simpleViewer.cpp +++ b/src/viewer/simpleViewer.cpp @@ -199,6 +199,7 @@ void Viewer::mousePressEvent(QMouseEvent* e) { } selectedObj.shape = selectedGeom.shape; selectedObj.shape->getParent()->addChild(selection); + cubeSelected(true); } if(!selectedGeom.position.isIdentity() && e->modifiers().testFlag(Qt::ShiftModifier)) @@ -779,6 +780,26 @@ void Viewer::setMinLinear(bool on) { this->update(); } +void Viewer::deleteSelected() { + // Remove Shape from its parent + + selectedObj.shape->getParent()->getChildren()->erase( + std::remove(selectedObj.shape->getParent()->getChildren()->begin(), + selectedObj.shape->getParent()->getChildren()->end(), + selection), + selectedObj.shape->getParent()->getChildren()->end()); + + selectedObj.shape->getParent()->getChildren()->erase( + std::remove(selectedObj.shape->getParent()->getChildren()->begin(), + selectedObj.shape->getParent()->getChildren()->end(), + selectedObj.shape), + selectedObj.shape->getParent()->getChildren()->end()); + + selectedObj.shape = new Cube(); // Rebind to "null" + + cubeSelected(false); +} + void Viewer::changeColor(QColor c){ if(activeCell->getChildren()->size()){ diff --git a/src/viewer/simpleViewer.h b/src/viewer/simpleViewer.h index c9326ee..15d9ca9 100644 --- a/src/viewer/simpleViewer.h +++ b/src/viewer/simpleViewer.h @@ -62,9 +62,11 @@ public slots: void setPhong(bool); void setMagLinear(bool); void setMinLinear(bool); + void deleteSelected(); signals: int shapeSelected(int); + bool cubeSelected(bool); protected : virtual void draw(); diff --git a/src/window/mainwindow.cpp b/src/window/mainwindow.cpp index e8ccf5f..57244ad 100644 --- a/src/window/mainwindow.cpp +++ b/src/window/mainwindow.cpp @@ -45,6 +45,9 @@ void MainWindow::addViewer(Viewer* viewer) connect(ui->actionPhong, SIGNAL(toggled(bool)), viewer, SLOT(setPhong(bool))); connect(ui->actionMagLinear, SIGNAL(toggled(bool)), viewer, SLOT(setMagLinear(bool))); connect(ui->actionMinLin, SIGNAL(toggled(bool)), viewer, SLOT(setMinLinear(bool))); + + connect(ui->action_delete, SIGNAL(clicked(bool)), viewer, SLOT(deleteSelected())); + connect(viewer, SIGNAL(cubeSelected(bool)), ui->action_delete, SLOT(setEnabled(bool))); } void MainWindow::onColorPickerActivate(){