From 8386b485544096736b2f50fd7441f2b656ce95bf Mon Sep 17 00:00:00 2001 From: "tao.jin" Date: Thu, 22 Sep 2022 15:06:34 +0800 Subject: [PATCH] ENH: add confirm dialog for cancel-print button Change-Id: I0a97c7a3122b1b5dd0b306212292e8c51b9acd9b --- src/slic3r/CMakeLists.txt | 4 +-- ...UpdateDialog.cpp => ConfirmHintDialog.cpp} | 30 +++++++++---------- ...UpdateDialog.hpp => ConfirmHintDialog.hpp} | 12 ++++---- src/slic3r/GUI/StatusPanel.cpp | 9 +++++- src/slic3r/GUI/UpgradePanel.cpp | 18 +++++------ 5 files changed, 40 insertions(+), 33 deletions(-) rename src/slic3r/GUI/{FirmwareUpdateDialog.cpp => ConfirmHintDialog.cpp} (83%) rename src/slic3r/GUI/{FirmwareUpdateDialog.hpp => ConfirmHintDialog.hpp} (78%) diff --git a/src/slic3r/CMakeLists.txt b/src/slic3r/CMakeLists.txt index 12da13bc8..2c636ec3c 100644 --- a/src/slic3r/CMakeLists.txt +++ b/src/slic3r/CMakeLists.txt @@ -237,8 +237,8 @@ set(SLIC3R_GUI_SOURCES GUI/ConfigManipulation.hpp GUI/Field.cpp GUI/Field.hpp - GUI/FirmwareUpdateDialog.cpp - GUI/FirmwareUpdateDialog.hpp + GUI/ConfirmHintDialog.cpp + GUI/ConfirmHintDialog.hpp GUI/OptionsGroup.cpp GUI/OptionsGroup.hpp GUI/OG_CustomCtrl.cpp diff --git a/src/slic3r/GUI/FirmwareUpdateDialog.cpp b/src/slic3r/GUI/ConfirmHintDialog.cpp similarity index 83% rename from src/slic3r/GUI/FirmwareUpdateDialog.cpp rename to src/slic3r/GUI/ConfirmHintDialog.cpp index 600e2d3b6..c930e313b 100644 --- a/src/slic3r/GUI/FirmwareUpdateDialog.cpp +++ b/src/slic3r/GUI/ConfirmHintDialog.cpp @@ -1,4 +1,4 @@ -#include "FirmwareUpdateDialog.hpp" +#include "ConfirmHintDialog.hpp" #include #include #include @@ -7,10 +7,10 @@ namespace Slic3r { namespace GUI { -wxDEFINE_EVENT(EVT_UPGRADE_FIRMWARE, wxCommandEvent); +wxDEFINE_EVENT(EVT_CONFIRM_HINT, wxCommandEvent); -FirmwareUpdateDialog::FirmwareUpdateDialog(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) - : DPIDialog(parent, id, _L("Upgrade firmware"), pos, size, style) +ConfirmHintDialog::ConfirmHintDialog(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style) + : DPIDialog(parent, id, title, pos, size, style) { std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % resources_dir()).str(); SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO)); @@ -58,23 +58,23 @@ FirmwareUpdateDialog::FirmwareUpdateDialog(wxWindow* parent, wxWindowID id, cons this->SetMinSize(wxSize(wxSize(FromDIP(475), FromDIP(100)).x, -1)); Layout(); Fit(); - this->Bind(wxEVT_PAINT, &FirmwareUpdateDialog::OnPaint, this); - m_button_confirm->Bind(wxEVT_BUTTON, &FirmwareUpdateDialog::on_button_confirm, this); - m_button_close->Bind(wxEVT_BUTTON, &FirmwareUpdateDialog::on_button_close, this); + this->Bind(wxEVT_PAINT, &ConfirmHintDialog::OnPaint, this); + m_button_confirm->Bind(wxEVT_BUTTON, &ConfirmHintDialog::on_button_confirm, this); + m_button_close->Bind(wxEVT_BUTTON, &ConfirmHintDialog::on_button_close, this); } -FirmwareUpdateDialog::~FirmwareUpdateDialog() {} +ConfirmHintDialog::~ConfirmHintDialog() {} -void FirmwareUpdateDialog::SetHint(const wxString& hint){ +void ConfirmHintDialog::SetHint(const wxString& hint){ firm_up_hint = hint; } -void FirmwareUpdateDialog::OnPaint(wxPaintEvent& event){ +void ConfirmHintDialog::OnPaint(wxPaintEvent& event){ wxPaintDC dc(this); render(dc); } -void FirmwareUpdateDialog::render(wxDC& dc) { +void ConfirmHintDialog::render(wxDC& dc) { wxSize size = GetSize(); dc.SetFont(Label::Body_14); @@ -147,8 +147,8 @@ void FirmwareUpdateDialog::render(wxDC& dc) { dc.DrawText(firm_up_hint, pos_firm_up_hint); } -void FirmwareUpdateDialog::on_button_confirm(wxCommandEvent& event) { - wxCommandEvent evt(EVT_UPGRADE_FIRMWARE, GetId()); +void ConfirmHintDialog::on_button_confirm(wxCommandEvent& event) { + wxCommandEvent evt(EVT_CONFIRM_HINT, GetId()); event.SetEventObject(this); GetEventHandler()->ProcessEvent(evt); @@ -158,11 +158,11 @@ void FirmwareUpdateDialog::on_button_confirm(wxCommandEvent& event) { this->Close(); } -void FirmwareUpdateDialog::on_button_close(wxCommandEvent& event) { +void ConfirmHintDialog::on_button_close(wxCommandEvent& event) { this->Close(); } -void FirmwareUpdateDialog::on_dpi_changed(const wxRect& suggested_rect) { +void ConfirmHintDialog::on_dpi_changed(const wxRect& suggested_rect) { m_button_confirm->SetMinSize(wxSize(-1, FromDIP(24))); m_button_confirm->SetCornerRadius(FromDIP(12)); m_button_close->SetMinSize(wxSize(-1, FromDIP(24))); diff --git a/src/slic3r/GUI/FirmwareUpdateDialog.hpp b/src/slic3r/GUI/ConfirmHintDialog.hpp similarity index 78% rename from src/slic3r/GUI/FirmwareUpdateDialog.hpp rename to src/slic3r/GUI/ConfirmHintDialog.hpp index a0fa53fac..657ce995d 100644 --- a/src/slic3r/GUI/FirmwareUpdateDialog.hpp +++ b/src/slic3r/GUI/ConfirmHintDialog.hpp @@ -1,5 +1,5 @@ -#ifndef slic3r_GUI_FirmwareUpdateDialog_hpp_ -#define slic3r_GUI_FirmwareUpdateDialog_hpp_ +#ifndef slic3r_GUI_ConfirmHintDialog_hpp_ +#define slic3r_GUI_ConfirmHintDialog_hpp_ #include "GUI_Utils.hpp" #include @@ -8,9 +8,9 @@ namespace Slic3r { namespace GUI { -wxDECLARE_EVENT(EVT_UPGRADE_FIRMWARE, wxCommandEvent); +wxDECLARE_EVENT(EVT_CONFIRM_HINT, wxCommandEvent); -class FirmwareUpdateDialog : public DPIDialog +class ConfirmHintDialog : public DPIDialog { private: wxStaticText* m_staticText_hint; @@ -27,7 +27,7 @@ private: void on_dpi_changed(const wxRect& suggested_rect) override; public: - FirmwareUpdateDialog(wxWindow* parent, + ConfirmHintDialog(wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, @@ -38,7 +38,7 @@ public: void SetHint(const wxString &hint); - ~FirmwareUpdateDialog(); + ~ConfirmHintDialog(); }; }} // namespace Slic3r::GUI diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 94040f0c7..d88f251c3 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -10,6 +10,7 @@ #include "slic3r/Utils/Http.hpp" #include "libslic3r/Thread.hpp" #include "RecenterDialog.hpp" +#include "ConfirmHintDialog.hpp" namespace Slic3r { namespace GUI { @@ -1222,7 +1223,13 @@ void StatusPanel::on_subtask_pause_resume(wxCommandEvent &event) void StatusPanel::on_subtask_abort(wxCommandEvent &event) { - if (obj) obj->command_task_abort(); + ConfirmHintDialog* abort_dlg = new ConfirmHintDialog(this, wxID_ANY, _L("Cancel print")); + abort_dlg->SetHint(_L("Are you sure you want to cancel this print?")); + abort_dlg->Bind(EVT_CONFIRM_HINT, [this](wxCommandEvent &e) { + if (obj) obj->command_task_abort(); + }); + if(abort_dlg->ShowModal()) + delete abort_dlg; } void StatusPanel::error_info_reset() diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index 137968360..273303a85 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -5,7 +5,7 @@ #include "GUI_App.hpp" #include "libslic3r/Thread.hpp" #include "ReleaseNote.hpp" -#include "FirmwareUpdateDialog.hpp" +#include "ConfirmHintDialog.hpp" namespace Slic3r { namespace GUI { @@ -657,9 +657,9 @@ void MachineInfoPanel::upgrade_firmware_internal() { void MachineInfoPanel::on_upgrade_firmware(wxCommandEvent &event) { - FirmwareUpdateDialog* confirm_dlg = new FirmwareUpdateDialog(this->GetParent()); + ConfirmHintDialog* confirm_dlg = new ConfirmHintDialog(this->GetParent(), wxID_ANY, _L("Upgrade firmware")); confirm_dlg->SetHint(normal_upgrade_hint); - confirm_dlg->Bind(EVT_UPGRADE_FIRMWARE, [this](wxCommandEvent &e) { + confirm_dlg->Bind(EVT_CONFIRM_HINT, [this](wxCommandEvent &e) { if (m_obj){ m_obj->command_upgrade_confirm(); } @@ -670,9 +670,9 @@ void MachineInfoPanel::on_upgrade_firmware(wxCommandEvent &event) void MachineInfoPanel::on_consisitency_upgrade_firmware(wxCommandEvent &event) { - FirmwareUpdateDialog* confirm_dlg = new FirmwareUpdateDialog(this->GetParent()); + ConfirmHintDialog* confirm_dlg = new ConfirmHintDialog(this->GetParent(), wxID_ANY, _L("Upgrade firmware")); confirm_dlg->SetHint(normal_upgrade_hint); - confirm_dlg->Bind(EVT_UPGRADE_FIRMWARE, [this](wxCommandEvent &e) { + confirm_dlg->Bind(EVT_CONFIRM_HINT, [this](wxCommandEvent &e) { if (m_obj){ m_obj->command_consistency_upgrade_confirm(); } @@ -793,9 +793,9 @@ void UpgradePanel::update(MachineObject *obj) if (m_obj && m_show_forced_hint) { if (m_obj->upgrade_force_upgrade) { m_show_forced_hint = false; //lock hint - FirmwareUpdateDialog* force_dlg = new FirmwareUpdateDialog(m_scrolledWindow); + ConfirmHintDialog* force_dlg = new ConfirmHintDialog(m_scrolledWindow, wxID_ANY, _L("Upgrade firmware")); force_dlg->SetHint(force_upgrade_hint); - force_dlg->Bind(EVT_UPGRADE_FIRMWARE, &MachineInfoPanel::on_upgrade_firmware, m_push_upgrade_panel); + force_dlg->Bind(EVT_CONFIRM_HINT, &MachineInfoPanel::on_upgrade_firmware, m_push_upgrade_panel); if (force_dlg->ShowModal()) delete force_dlg; } @@ -809,9 +809,9 @@ void UpgradePanel::update(MachineObject *obj) if (m_obj && m_show_consistency_hint) { if (m_obj->upgrade_consistency_request) { m_show_consistency_hint = false; - FirmwareUpdateDialog* consistency_dlg = new FirmwareUpdateDialog(m_scrolledWindow); + ConfirmHintDialog* consistency_dlg = new ConfirmHintDialog(m_scrolledWindow, wxID_ANY, _L("Upgrade firmware")); consistency_dlg->SetHint(consistency_upgrade_hint); - consistency_dlg->Bind(EVT_UPGRADE_FIRMWARE, &MachineInfoPanel::on_consisitency_upgrade_firmware, m_push_upgrade_panel); + consistency_dlg->Bind(EVT_CONFIRM_HINT, &MachineInfoPanel::on_consisitency_upgrade_firmware, m_push_upgrade_panel); if (consistency_dlg->ShowModal()) delete consistency_dlg; }