From b5aed4dede7805cc9d1fd22a7543c5a8d6faada5 Mon Sep 17 00:00:00 2001 From: "maosheng.wei" Date: Tue, 28 Nov 2023 17:42:17 +0800 Subject: [PATCH] FIX: delete preset prompt Jira: XXXX Change-Id: I6511c806c56393d4f6bd72d1c506da59675d49ff --- src/slic3r/GUI/CreatePresetsDialog.cpp | 14 ++++++++++++-- src/slic3r/GUI/Tab.cpp | 8 +++++++- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/CreatePresetsDialog.cpp b/src/slic3r/GUI/CreatePresetsDialog.cpp index 19fb9e72d..2e93db44d 100644 --- a/src/slic3r/GUI/CreatePresetsDialog.cpp +++ b/src/slic3r/GUI/CreatePresetsDialog.cpp @@ -162,6 +162,7 @@ static bool delete_filament_preset_by_name(std::string delete_preset_name, std:: BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("delete preset dirty and cancelled"); } m_presets.delete_preset(need_delete_preset->name); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " preset has been delete from filaments, and preset name is: " << delete_preset_name; } catch (const std::exception &ex) { // FIXME add some error reporting! BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << boost::format("found exception when delete: %1% and preset name: %%") % ex.what() % delete_preset_name; @@ -4348,7 +4349,9 @@ void EditFilamentPresetDialog::delete_preset() Preset *filament_preset = wxGetApp().preset_bundle->filaments.find_preset(need_delete_preset->name); // is root preset ? + bool is_base_preset = false; if (filament_preset && wxGetApp().preset_bundle->filaments.get_preset_base(*filament_preset) == filament_preset) { + is_base_preset = true; int count = 0; wxString presets; for (auto &preset2 : wxGetApp().preset_bundle->filaments) @@ -4368,7 +4371,13 @@ void EditFilamentPresetDialog::delete_preset() return; } } - if (wxID_YES != MessageDialog(this, _L("Are you sure to delete the selected preset?"), _L("Delete preset"), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION).ShowModal()) { + wxString msg; + if (is_base_preset) { + msg = _L("Are you sure to delete the selected preset? \nIf the preset corresponds to a filament currently in use on your printer, please reset the filament information for that slot."); + } else { + msg = _L("Are you sure to delete the selected preset?"); + } + if (wxID_YES != MessageDialog(this, msg, _L("Delete preset"), wxYES_NO | wxNO_DEFAULT | wxICON_QUESTION).ShowModal()) { m_selected_printer.clear(); m_need_delete_preset_index = -1; return; @@ -4586,7 +4595,7 @@ wxBoxSizer *EditFilamentPresetDialog::create_button_sizer() std::pair(*wxWHITE, StateColor::Normal)); m_del_filament_btn->Bind(wxEVT_BUTTON, ([this](wxCommandEvent &e) { - WarningDialog dlg(this, _L("Delete filament?\nDelete filament would deleted all the attatched filament presets"), _L("Delete filament"), wxYES | wxCANCEL | wxCANCEL_DEFAULT | wxCENTRE); + WarningDialog dlg(this, _L("All the filament presets belong to this filament would be deleted. \nIf you are using this filament on your printer, please reset the filament information for that slot."), _L("Delete filament"), wxYES | wxCANCEL | wxCANCEL_DEFAULT | wxCENTRE); int res = dlg.ShowModal(); if (wxID_YES == res) { PresetBundle *preset_bundle = wxGetApp().preset_bundle; @@ -4897,6 +4906,7 @@ wxPanel *PresetTree::get_child_item(wxPanel *parent, std::shared_ptr pre sizer->Add(line_right, 0, wxALL | wxALIGN_CENTER_VERTICAL, 0); sizer->Add(0, 0, 0, wxLEFT, 5); wxStaticText *preset_name = new wxStaticText(panel, wxID_ANY, from_u8(preset->name)); + BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << " create child item: " << preset->name; preset_name->SetFont(Label::Body_10); preset_name->SetForegroundColour(*wxBLACK); sizer->Add(preset_name, 0, wxEXPAND | wxALL, 5); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index f30ee42b5..52e03482c 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -5039,7 +5039,9 @@ void Tab::delete_preset() // TRN remove/delete wxString msg; bool confirm_delete_third_party_printer = false; + bool is_base_preset = false; if (m_presets->get_preset_base(current_preset) == ¤t_preset) { //root preset + is_base_preset = true; if (current_preset.type == Preset::Type::TYPE_PRINTER && !current_preset.is_system) { //Customize third-party printers Preset ¤t_preset = m_presets->get_selected_preset(); int filament_preset_num = 0; @@ -5118,7 +5120,11 @@ void Tab::delete_preset() } } - msg += from_u8((boost::format(_u8L("Are you sure to %1% the selected preset?")) % action).str()); + if (is_base_preset && (current_preset.type == Preset::Type::TYPE_FILAMENT) && action == _utf8(L("Delete"))) { + msg += from_u8(_u8L("Are you sure to delete the selected preset? \nIf the preset corresponds to a filament currently in use on your printer, please reset the filament information for that slot.")); + } else { + msg += from_u8((boost::format(_u8L("Are you sure to %1% the selected preset?")) % action).str()); + } //BBS: add project embedded preset logic and refine is_external action = _utf8(L("Delete"));