ENH: add confirm dialog for cancel-print button

Change-Id: I0a97c7a3122b1b5dd0b306212292e8c51b9acd9b
This commit is contained in:
tao.jin 2022-09-22 15:06:34 +08:00 committed by Lane.Wei
parent 1b4486cc5d
commit 8386b48554
5 changed files with 40 additions and 33 deletions

View file

@ -237,8 +237,8 @@ set(SLIC3R_GUI_SOURCES
GUI/ConfigManipulation.hpp GUI/ConfigManipulation.hpp
GUI/Field.cpp GUI/Field.cpp
GUI/Field.hpp GUI/Field.hpp
GUI/FirmwareUpdateDialog.cpp GUI/ConfirmHintDialog.cpp
GUI/FirmwareUpdateDialog.hpp GUI/ConfirmHintDialog.hpp
GUI/OptionsGroup.cpp GUI/OptionsGroup.cpp
GUI/OptionsGroup.hpp GUI/OptionsGroup.hpp
GUI/OG_CustomCtrl.cpp GUI/OG_CustomCtrl.cpp

View file

@ -1,4 +1,4 @@
#include "FirmwareUpdateDialog.hpp" #include "ConfirmHintDialog.hpp"
#include <slic3r/GUI/I18N.hpp> #include <slic3r/GUI/I18N.hpp>
#include <wx/dcgraph.h> #include <wx/dcgraph.h>
#include <wx/dcmemory.h> #include <wx/dcmemory.h>
@ -7,10 +7,10 @@
namespace Slic3r { namespace GUI { 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) ConfirmHintDialog::ConfirmHintDialog(wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style)
: DPIDialog(parent, id, _L("Upgrade firmware"), pos, size, style) : DPIDialog(parent, id, title, pos, size, style)
{ {
std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % resources_dir()).str(); std::string icon_path = (boost::format("%1%/images/BambuStudioTitle.ico") % resources_dir()).str();
SetIcon(wxIcon(encode_path(icon_path.c_str()), wxBITMAP_TYPE_ICO)); 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)); this->SetMinSize(wxSize(wxSize(FromDIP(475), FromDIP(100)).x, -1));
Layout(); Layout();
Fit(); Fit();
this->Bind(wxEVT_PAINT, &FirmwareUpdateDialog::OnPaint, this); this->Bind(wxEVT_PAINT, &ConfirmHintDialog::OnPaint, this);
m_button_confirm->Bind(wxEVT_BUTTON, &FirmwareUpdateDialog::on_button_confirm, this); m_button_confirm->Bind(wxEVT_BUTTON, &ConfirmHintDialog::on_button_confirm, this);
m_button_close->Bind(wxEVT_BUTTON, &FirmwareUpdateDialog::on_button_close, 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; firm_up_hint = hint;
} }
void FirmwareUpdateDialog::OnPaint(wxPaintEvent& event){ void ConfirmHintDialog::OnPaint(wxPaintEvent& event){
wxPaintDC dc(this); wxPaintDC dc(this);
render(dc); render(dc);
} }
void FirmwareUpdateDialog::render(wxDC& dc) { void ConfirmHintDialog::render(wxDC& dc) {
wxSize size = GetSize(); wxSize size = GetSize();
dc.SetFont(Label::Body_14); dc.SetFont(Label::Body_14);
@ -147,8 +147,8 @@ void FirmwareUpdateDialog::render(wxDC& dc) {
dc.DrawText(firm_up_hint, pos_firm_up_hint); dc.DrawText(firm_up_hint, pos_firm_up_hint);
} }
void FirmwareUpdateDialog::on_button_confirm(wxCommandEvent& event) { void ConfirmHintDialog::on_button_confirm(wxCommandEvent& event) {
wxCommandEvent evt(EVT_UPGRADE_FIRMWARE, GetId()); wxCommandEvent evt(EVT_CONFIRM_HINT, GetId());
event.SetEventObject(this); event.SetEventObject(this);
GetEventHandler()->ProcessEvent(evt); GetEventHandler()->ProcessEvent(evt);
@ -158,11 +158,11 @@ void FirmwareUpdateDialog::on_button_confirm(wxCommandEvent& event) {
this->Close(); this->Close();
} }
void FirmwareUpdateDialog::on_button_close(wxCommandEvent& event) { void ConfirmHintDialog::on_button_close(wxCommandEvent& event) {
this->Close(); 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->SetMinSize(wxSize(-1, FromDIP(24)));
m_button_confirm->SetCornerRadius(FromDIP(12)); m_button_confirm->SetCornerRadius(FromDIP(12));
m_button_close->SetMinSize(wxSize(-1, FromDIP(24))); m_button_close->SetMinSize(wxSize(-1, FromDIP(24)));

View file

@ -1,5 +1,5 @@
#ifndef slic3r_GUI_FirmwareUpdateDialog_hpp_ #ifndef slic3r_GUI_ConfirmHintDialog_hpp_
#define slic3r_GUI_FirmwareUpdateDialog_hpp_ #define slic3r_GUI_ConfirmHintDialog_hpp_
#include "GUI_Utils.hpp" #include "GUI_Utils.hpp"
#include <wx/statbmp.h> #include <wx/statbmp.h>
@ -8,9 +8,9 @@
namespace Slic3r { namespace GUI { 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: private:
wxStaticText* m_staticText_hint; wxStaticText* m_staticText_hint;
@ -27,7 +27,7 @@ private:
void on_dpi_changed(const wxRect& suggested_rect) override; void on_dpi_changed(const wxRect& suggested_rect) override;
public: public:
FirmwareUpdateDialog(wxWindow* parent, ConfirmHintDialog(wxWindow* parent,
wxWindowID id = wxID_ANY, wxWindowID id = wxID_ANY,
const wxString& title = wxEmptyString, const wxString& title = wxEmptyString,
const wxPoint& pos = wxDefaultPosition, const wxPoint& pos = wxDefaultPosition,
@ -38,7 +38,7 @@ public:
void SetHint(const wxString &hint); void SetHint(const wxString &hint);
~FirmwareUpdateDialog(); ~ConfirmHintDialog();
}; };
}} // namespace Slic3r::GUI }} // namespace Slic3r::GUI

View file

@ -10,6 +10,7 @@
#include "slic3r/Utils/Http.hpp" #include "slic3r/Utils/Http.hpp"
#include "libslic3r/Thread.hpp" #include "libslic3r/Thread.hpp"
#include "RecenterDialog.hpp" #include "RecenterDialog.hpp"
#include "ConfirmHintDialog.hpp"
namespace Slic3r { namespace GUI { namespace Slic3r { namespace GUI {
@ -1222,7 +1223,13 @@ void StatusPanel::on_subtask_pause_resume(wxCommandEvent &event)
void StatusPanel::on_subtask_abort(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() void StatusPanel::error_info_reset()

View file

@ -5,7 +5,7 @@
#include "GUI_App.hpp" #include "GUI_App.hpp"
#include "libslic3r/Thread.hpp" #include "libslic3r/Thread.hpp"
#include "ReleaseNote.hpp" #include "ReleaseNote.hpp"
#include "FirmwareUpdateDialog.hpp" #include "ConfirmHintDialog.hpp"
namespace Slic3r { namespace Slic3r {
namespace GUI { namespace GUI {
@ -657,9 +657,9 @@ void MachineInfoPanel::upgrade_firmware_internal() {
void MachineInfoPanel::on_upgrade_firmware(wxCommandEvent &event) 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->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){ if (m_obj){
m_obj->command_upgrade_confirm(); m_obj->command_upgrade_confirm();
} }
@ -670,9 +670,9 @@ void MachineInfoPanel::on_upgrade_firmware(wxCommandEvent &event)
void MachineInfoPanel::on_consisitency_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->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){ if (m_obj){
m_obj->command_consistency_upgrade_confirm(); 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 && m_show_forced_hint) {
if (m_obj->upgrade_force_upgrade) { if (m_obj->upgrade_force_upgrade) {
m_show_forced_hint = false; //lock hint 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->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()) if (force_dlg->ShowModal())
delete force_dlg; delete force_dlg;
} }
@ -809,9 +809,9 @@ void UpgradePanel::update(MachineObject *obj)
if (m_obj && m_show_consistency_hint) { if (m_obj && m_show_consistency_hint) {
if (m_obj->upgrade_consistency_request) { if (m_obj->upgrade_consistency_request) {
m_show_consistency_hint = false; 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->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()) if (consistency_dlg->ShowModal())
delete consistency_dlg; delete consistency_dlg;
} }