diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index b0d0c178be..608c78e0e0 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -211,6 +211,11 @@ bool MainFrame::can_delete() const { return (m_plater != nullptr) ? !m_plater->is_selection_empty() : false; } + +bool MainFrame::can_delete_all() const +{ + return (m_plater != nullptr) ? !m_plater->model().objects.empty() : false; +} #endif // ENABLE_NEW_MENU_LAYOUT void MainFrame::init_menubar() @@ -319,11 +324,15 @@ void MainFrame::init_menubar() editMenu = new wxMenu(); wxMenuItem* item_select_all = append_menu_item(editMenu, wxID_ANY, L("Select all\tCtrl+A"), L("Selects all objects"), [this](wxCommandEvent&) { m_plater->select_all(); }, ""); + editMenu->AppendSeparator(); wxMenuItem* item_delete_sel = append_menu_item(editMenu, wxID_ANY, L("Delete selected\tDel"), L("Deletes the current selection"), [this](wxCommandEvent&) { m_plater->remove_selected(); }, ""); + wxMenuItem* item_delete_all = append_menu_item(editMenu, wxID_ANY, L("Delete all\tCtrl+Del"), L("Deletes all objects"), + [this](wxCommandEvent&) { m_plater->reset(); }, ""); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_select()); }, item_select_all->GetId()); Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_delete()); }, item_delete_sel->GetId()); + Bind(wxEVT_UPDATE_UI, [this](wxUpdateUIEvent& evt) { evt.Enable(can_delete_all()); }, item_delete_all->GetId()); } #endif // ENABLE_NEW_MENU_LAYOUT diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp index 488d0bd040..2ee46cbb12 100644 --- a/src/slic3r/GUI/MainFrame.hpp +++ b/src/slic3r/GUI/MainFrame.hpp @@ -73,6 +73,7 @@ class MainFrame : public wxFrame bool can_change_view() const; bool can_select() const; bool can_delete() const; + bool can_delete_all() const; #endif // ENABLE_NEW_MENU_LAYOUT public: diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index f3b3318db2..cb5254f6ae 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2281,6 +2281,8 @@ void Plater::select_view(const std::string& direction) { p->select_view(directio void Plater::select_all() { p->select_all(); } void Plater::remove(size_t obj_idx) { p->remove(obj_idx); } +void Plater::reset() { p->reset(); } + void Plater::delete_object_from_model(size_t obj_idx) { p->delete_object_from_model(obj_idx); } void Plater::remove_selected() diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index b9cc9d5280..5a55859355 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -130,6 +130,7 @@ public: void select_all(); void remove(size_t obj_idx); + void reset(); void delete_object_from_model(size_t obj_idx); void remove_selected(); void increase_instances(size_t num = 1);