mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2025-07-08 15:37:30 -06:00
ENH: add hint dialogs for firmware upgrade
Change-Id: Iff34e4543d50074db05280fec8178029c4531e00 (cherry picked from commit 6f98eda25c722ecb6e0b6f4926972031c00bc366)
This commit is contained in:
parent
37d6efdbef
commit
83a9c259f7
7 changed files with 308 additions and 12 deletions
|
@ -5,6 +5,7 @@
|
|||
#include "GUI_App.hpp"
|
||||
#include "libslic3r/Thread.hpp"
|
||||
#include "ReleaseNote.hpp"
|
||||
#include "FirmwareUpdateDialog.hpp"
|
||||
|
||||
namespace Slic3r {
|
||||
namespace GUI {
|
||||
|
@ -12,6 +13,10 @@ namespace GUI {
|
|||
static const wxColour TEXT_NORMAL_CLR = wxColour(0, 174, 66);
|
||||
static const wxColour TEXT_FAILED_CLR = wxColour(255, 111, 0);
|
||||
|
||||
wxString normal_upgrade_hint = _L("Are you sure you want to update? This will take about 10 minutes. Do not turn off the power while the printer is updating.");
|
||||
wxString force_upgrade_hint = _L("An important update was detected and needs to be run before printing can continue. Do you want to update now? You can also update later from 'Upgrade firmware'.");
|
||||
wxString consistency_upgrade_hint = _L("The firmware version is abnormal. Repairing and updating are required before printing. Do you want to update now? You can also update later on printer or update next time starting the studio.");
|
||||
|
||||
MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name)
|
||||
:wxPanel(parent, id, pos, size, style)
|
||||
{
|
||||
|
@ -312,7 +317,6 @@ void MachineInfoPanel::update(MachineObject* obj)
|
|||
m_staticText_upgrading_percent->SetLabelText(wxString::Format("%d%%", upgrade_percent));
|
||||
} else if (obj->upgrade_display_state == (int) MachineObject::UpgradingDisplayState::UpgradingFinished) {
|
||||
wxString result_text = obj->get_upgrade_result_str(obj->upgrade_err_code);
|
||||
m_staticText_upgrading_info->SetLabelText(result_text);
|
||||
m_upgrade_progress->SetValue(upgrade_percent);
|
||||
m_staticText_upgrading_percent->SetLabelText(wxString::Format("%d%%", upgrade_percent));
|
||||
}
|
||||
|
@ -575,7 +579,7 @@ void MachineInfoPanel::show_status(int status, std::string upgrade_status_str)
|
|||
BOOST_LOG_TRIVIAL(trace) << "MachineInfoPanel: show_status = " << status << ", str = " << upgrade_status_str;
|
||||
|
||||
Freeze();
|
||||
|
||||
|
||||
if (status == (int)MachineObject::UpgradingDisplayState::UpgradingUnavaliable) {
|
||||
m_button_upgrade_firmware->Show();
|
||||
m_button_upgrade_firmware->Disable();
|
||||
|
@ -593,7 +597,7 @@ void MachineInfoPanel::show_status(int status, std::string upgrade_status_str)
|
|||
m_staticText_upgrading_info->Hide();
|
||||
m_staticText_upgrading_percent->Hide();
|
||||
} else if (status == (int) MachineObject::UpgradingDisplayState::UpgradingInProgress) {
|
||||
m_button_upgrade_firmware->Hide();
|
||||
m_button_upgrade_firmware->Disable();
|
||||
for (size_t i = 0; i < m_upgrading_sizer->GetItemCount(); i++) { m_upgrading_sizer->Show(true); }
|
||||
m_upgrade_retry_img->Hide();
|
||||
m_staticText_upgrading_info->Show();
|
||||
|
@ -606,17 +610,18 @@ void MachineInfoPanel::show_status(int status, std::string upgrade_status_str)
|
|||
m_staticText_upgrading_info->SetLabel(_L("Upgrading failed"));
|
||||
m_staticText_upgrading_info->SetForegroundColour(TEXT_FAILED_CLR);
|
||||
for (size_t i = 0; i < m_upgrading_sizer->GetItemCount(); i++) { m_upgrading_sizer->Show(true); }
|
||||
m_button_upgrade_firmware->Hide();
|
||||
m_button_upgrade_firmware->Disable();
|
||||
m_staticText_upgrading_info->Show();
|
||||
m_staticText_upgrading_percent->Hide();
|
||||
m_staticText_upgrading_percent->Show();
|
||||
m_upgrade_retry_img->Show();
|
||||
} else {
|
||||
for (size_t i = 0; i < m_upgrading_sizer->GetItemCount(); i++) { m_upgrading_sizer->Show(true); }
|
||||
m_button_upgrade_firmware->Hide();
|
||||
m_staticText_upgrading_info->SetLabel(_L("Upgrading success"));
|
||||
m_staticText_upgrading_info->SetLabel(_L("Upgrading successful"));
|
||||
m_staticText_upgrading_info->Show();
|
||||
for (size_t i = 0; i < m_upgrading_sizer->GetItemCount(); i++) { m_upgrading_sizer->Show(true); }
|
||||
m_button_upgrade_firmware->Disable();
|
||||
m_staticText_upgrading_info->SetForegroundColour(TEXT_NORMAL_CLR);
|
||||
m_staticText_upgrading_percent->SetForegroundColour(TEXT_NORMAL_CLR);
|
||||
m_staticText_upgrading_percent->Show();
|
||||
m_upgrade_retry_img->Hide();
|
||||
}
|
||||
} else {
|
||||
|
@ -652,8 +657,28 @@ void MachineInfoPanel::upgrade_firmware_internal() {
|
|||
|
||||
void MachineInfoPanel::on_upgrade_firmware(wxCommandEvent &event)
|
||||
{
|
||||
if (m_obj)
|
||||
m_obj->command_upgrade_confirm();
|
||||
FirmwareUpdateDialog* confirm_dlg = new FirmwareUpdateDialog(this->GetParent());
|
||||
confirm_dlg->SetHint(normal_upgrade_hint);
|
||||
confirm_dlg->Bind(EVT_UPGRADE_FIRMWARE, [this](wxCommandEvent &e) {
|
||||
if (m_obj){
|
||||
m_obj->command_upgrade_confirm();
|
||||
}
|
||||
});
|
||||
if(confirm_dlg->ShowModal())
|
||||
delete confirm_dlg;
|
||||
}
|
||||
|
||||
void MachineInfoPanel::on_consisitency_upgrade_firmware(wxCommandEvent &event)
|
||||
{
|
||||
FirmwareUpdateDialog* confirm_dlg = new FirmwareUpdateDialog(this->GetParent());
|
||||
confirm_dlg->SetHint(normal_upgrade_hint);
|
||||
confirm_dlg->Bind(EVT_UPGRADE_FIRMWARE, [this](wxCommandEvent &e) {
|
||||
if (m_obj){
|
||||
m_obj->command_consistency_upgrade_confirm();
|
||||
}
|
||||
});
|
||||
if(confirm_dlg->ShowModal())
|
||||
delete confirm_dlg;
|
||||
}
|
||||
|
||||
void MachineInfoPanel::on_show_release_note(wxMouseEvent &event)
|
||||
|
@ -759,6 +784,39 @@ void UpgradePanel::update(MachineObject *obj)
|
|||
}
|
||||
}
|
||||
|
||||
//force upgrade
|
||||
//unlock hint
|
||||
if (m_obj && (m_obj->upgrade_display_state == (int) MachineObject::UpgradingDisplayState::UpgradingFinished) && (last_forced_hint_status != m_obj->upgrade_display_state)) {
|
||||
last_forced_hint_status = m_obj->upgrade_display_state;
|
||||
m_show_forced_hint = true;
|
||||
}
|
||||
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);
|
||||
force_dlg->SetHint(force_upgrade_hint);
|
||||
force_dlg->Bind(EVT_UPGRADE_FIRMWARE, &MachineInfoPanel::on_upgrade_firmware, m_push_upgrade_panel);
|
||||
if (force_dlg->ShowModal())
|
||||
delete force_dlg;
|
||||
}
|
||||
}
|
||||
|
||||
//consistency upgrade
|
||||
if (m_obj && (m_obj->upgrade_display_state == (int) MachineObject::UpgradingDisplayState::UpgradingFinished) && (last_consistency_hint_status != m_obj->upgrade_display_state)) {
|
||||
last_consistency_hint_status = m_obj->upgrade_display_state;
|
||||
m_show_consistency_hint = true;
|
||||
}
|
||||
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);
|
||||
consistency_dlg->SetHint(consistency_upgrade_hint);
|
||||
consistency_dlg->Bind(EVT_UPGRADE_FIRMWARE, &MachineInfoPanel::on_consisitency_upgrade_firmware, m_push_upgrade_panel);
|
||||
if (consistency_dlg->ShowModal())
|
||||
delete consistency_dlg;
|
||||
}
|
||||
}
|
||||
|
||||
//update panels
|
||||
if (m_push_upgrade_panel) {
|
||||
m_push_upgrade_panel->update(obj);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue