diff --git a/src/slic3r/GUI/CalibrationPanel.cpp b/src/slic3r/GUI/CalibrationPanel.cpp index e8970dccc..70f51212d 100644 --- a/src/slic3r/GUI/CalibrationPanel.cpp +++ b/src/slic3r/GUI/CalibrationPanel.cpp @@ -512,8 +512,8 @@ void CalibrationPanel::update_print_error_info(int code, std::string msg, std::s auto page = m_cali_panels[curr_selected]->get_curr_step()->page; if(page && page->get_page_type() == CaliPageType::CALI_PAGE_PRESET){ auto preset_page = static_cast(page); - if (preset_page->get_page_status() == CaliPresetPageStatus::CaliPresetStatusSending) - preset_page->update_print_error_info(code, msg, extra); + //if (preset_page->get_page_status() == CaliPresetPageStatus::CaliPresetStatusSending) + // ;// preset_page->update_print_error_info(code, msg, extra); } } } diff --git a/src/slic3r/GUI/CalibrationWizardPage.cpp b/src/slic3r/GUI/CalibrationWizardPage.cpp index fbab569d9..1371d0c1a 100644 --- a/src/slic3r/GUI/CalibrationWizardPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPage.cpp @@ -754,6 +754,152 @@ void CaliPageActionPanel::enable_button(CaliPageActionType action_type, bool ena } } +CaliPageSendingPanel::CaliPageSendingPanel(wxWindow* parent, /*CalibMode cali_mode, CaliPageType page_type, */wxWindowID id, const wxPoint& pos, const wxSize& size, long style) +{ + SetBackgroundColour(*wxWHITE); + SetMinSize({ FromDIP(475), FromDIP(200) }); + SetMaxSize({ FromDIP(475), FromDIP(200) }); + + create(this); + + Bind(EVT_SHOW_ERROR_INFO, [this](auto& e) { + show_send_failed_info(true); + }); +} + +void CaliPageSendingPanel::create(wxWindow* parent) +{ + auto panel_sizer = new wxBoxSizer(wxVERTICAL); + parent->SetSizer(panel_sizer); + + m_send_progress_bar = std::shared_ptr(new BBLStatusBarSend(parent)); + panel_sizer->Add(m_send_progress_bar->get_panel(), 0, wxEXPAND); + + m_sw_print_failed_info = new wxScrolledWindow(parent, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(380), FromDIP(125)), wxVSCROLL); + m_sw_print_failed_info->SetBackgroundColour(*wxWHITE); + m_sw_print_failed_info->SetScrollRate(0, 5); + m_sw_print_failed_info->SetMinSize(wxSize(FromDIP(380), FromDIP(125))); + m_sw_print_failed_info->SetMaxSize(wxSize(FromDIP(380), FromDIP(125))); + + m_sw_print_failed_info->Hide(); + + panel_sizer->Add(m_sw_print_failed_info, 0, wxEXPAND); + + // create error info panel + wxBoxSizer* sizer_print_failed_info = new wxBoxSizer(wxVERTICAL); + m_sw_print_failed_info->SetSizer(sizer_print_failed_info); + + wxBoxSizer* sizer_error_code = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer* sizer_error_desc = new wxBoxSizer(wxHORIZONTAL); + wxBoxSizer* sizer_extra_info = new wxBoxSizer(wxHORIZONTAL); + + auto st_title_error_code = new Label(m_sw_print_failed_info, _L("Error code")); + auto st_title_error_code_doc = new Label(m_sw_print_failed_info, ": "); + m_st_txt_error_code = new Label(m_sw_print_failed_info, wxEmptyString); + st_title_error_code->SetForegroundColour(0x909090); + st_title_error_code_doc->SetForegroundColour(0x909090); + m_st_txt_error_code->SetForegroundColour(0x909090); + st_title_error_code->SetFont(::Label::Body_13); + st_title_error_code_doc->SetFont(::Label::Body_13); + m_st_txt_error_code->SetFont(::Label::Body_13); + st_title_error_code->SetMinSize(wxSize(FromDIP(74), -1)); + st_title_error_code->SetMaxSize(wxSize(FromDIP(74), -1)); + m_st_txt_error_code->SetMinSize(wxSize(FromDIP(260), -1)); + m_st_txt_error_code->SetMaxSize(wxSize(FromDIP(260), -1)); + sizer_error_code->Add(st_title_error_code, 0, wxALL, 0); + sizer_error_code->Add(st_title_error_code_doc, 0, wxALL, 0); + sizer_error_code->Add(m_st_txt_error_code, 0, wxALL, 0); + + auto st_title_error_desc = new Label(m_sw_print_failed_info, _L("Error desc")); + auto st_title_error_desc_doc = new Label(m_sw_print_failed_info, ": "); + m_st_txt_error_desc = new Label(m_sw_print_failed_info, wxEmptyString); + st_title_error_desc->SetForegroundColour(0x909090); + st_title_error_desc_doc->SetForegroundColour(0x909090); + m_st_txt_error_desc->SetForegroundColour(0x909090); + st_title_error_desc->SetFont(::Label::Body_13); + st_title_error_desc_doc->SetFont(::Label::Body_13); + m_st_txt_error_desc->SetFont(::Label::Body_13); + st_title_error_desc->SetMinSize(wxSize(FromDIP(74), -1)); + st_title_error_desc->SetMaxSize(wxSize(FromDIP(74), -1)); + m_st_txt_error_desc->SetMinSize(wxSize(FromDIP(260), -1)); + m_st_txt_error_desc->SetMaxSize(wxSize(FromDIP(260), -1)); + sizer_error_desc->Add(st_title_error_desc, 0, wxALL, 0); + sizer_error_desc->Add(st_title_error_desc_doc, 0, wxALL, 0); + sizer_error_desc->Add(m_st_txt_error_desc, 0, wxALL, 0); + + auto st_title_extra_info = new Label(m_sw_print_failed_info, _L("Extra info")); + auto st_title_extra_info_doc = new Label(m_sw_print_failed_info, ": "); + m_st_txt_extra_info = new Label(m_sw_print_failed_info, wxEmptyString); + st_title_extra_info->SetForegroundColour(0x909090); + st_title_extra_info_doc->SetForegroundColour(0x909090); + m_st_txt_extra_info->SetForegroundColour(0x909090); + st_title_extra_info->SetFont(::Label::Body_13); + st_title_extra_info_doc->SetFont(::Label::Body_13); + m_st_txt_extra_info->SetFont(::Label::Body_13); + st_title_extra_info->SetMinSize(wxSize(FromDIP(74), -1)); + st_title_extra_info->SetMaxSize(wxSize(FromDIP(74), -1)); + m_st_txt_extra_info->SetMinSize(wxSize(FromDIP(260), -1)); + m_st_txt_extra_info->SetMaxSize(wxSize(FromDIP(260), -1)); + sizer_extra_info->Add(st_title_extra_info, 0, wxALL, 0); + sizer_extra_info->Add(st_title_extra_info_doc, 0, wxALL, 0); + sizer_extra_info->Add(m_st_txt_extra_info, 0, wxALL, 0); + + sizer_print_failed_info->Add(sizer_error_code, 0, wxLEFT, 5); + sizer_print_failed_info->Add(0, 0, 0, wxTOP, FromDIP(3)); + sizer_print_failed_info->Add(sizer_error_desc, 0, wxLEFT, 5); + sizer_print_failed_info->Add(0, 0, 0, wxTOP, FromDIP(3)); + sizer_print_failed_info->Add(sizer_extra_info, 0, wxLEFT, 5); +} + +void CaliPageSendingPanel::update_print_error_info(int code, const std::string& msg, const std::string& extra) +{ + m_print_error_code = code; + m_print_error_msg = msg; + m_print_error_extra = extra; +} + +void CaliPageSendingPanel::show_send_failed_info(bool show, int code, wxString description, wxString extra) +{ + if (show) { + if (!m_sw_print_failed_info->IsShown()) { + m_sw_print_failed_info->Show(true); + + m_st_txt_error_code->SetLabelText(wxString::Format("%d", m_print_error_code)); + m_st_txt_error_desc->SetLabelText(wxGetApp().filter_string(m_print_error_msg)); + m_st_txt_extra_info->SetLabelText(wxGetApp().filter_string(m_print_error_extra)); + + m_st_txt_error_code->Wrap(FromDIP(260)); + m_st_txt_error_desc->Wrap(FromDIP(260)); + m_st_txt_extra_info->Wrap(FromDIP(260)); + } + else { + m_sw_print_failed_info->Show(false); + } + Layout(); + Fit(); + } + else { + if (!m_sw_print_failed_info->IsShown()) { return; } + m_sw_print_failed_info->Show(false); + m_st_txt_error_code->SetLabelText(wxEmptyString); + m_st_txt_error_desc->SetLabelText(wxEmptyString); + m_st_txt_extra_info->SetLabelText(wxEmptyString); + Layout(); + Fit(); + } +} + +std::shared_ptr CaliPageSendingPanel::get_sending_progress_bar() +{ + return m_send_progress_bar; +} + +void CaliPageSendingPanel::reset() +{ + m_send_progress_bar->reset(); + m_sw_print_failed_info->Show(false); +} + CalibrationWizardPage::CalibrationWizardPage(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style) : wxPanel(parent, id, pos, size, style) , m_parent(parent) @@ -771,4 +917,5 @@ void CalibrationWizardPage::on_sys_color_changed() m_page_caption->on_sys_color_changed(); } -}} +} +} diff --git a/src/slic3r/GUI/CalibrationWizardPage.hpp b/src/slic3r/GUI/CalibrationWizardPage.hpp index 746c58628..0ec2a6626 100644 --- a/src/slic3r/GUI/CalibrationWizardPage.hpp +++ b/src/slic3r/GUI/CalibrationWizardPage.hpp @@ -222,6 +222,33 @@ private: CaliPageActionType m_action_type; }; +class CaliPageSendingPanel : public wxPanel +{ +public: + CaliPageSendingPanel(wxWindow* parent, + //CalibMode cali_mode, + //CaliPageType page_type, + wxWindowID id = wxID_ANY, + const wxPoint& pos = wxDefaultPosition, + const wxSize& size = wxDefaultSize, + long style = wxTAB_TRAVERSAL); + void create(wxWindow* parent); + void update_print_error_info(int code, const std::string& msg, const std::string& extra); + void show_send_failed_info(bool show, int code = 0, wxString description = wxEmptyString, wxString extra = wxEmptyString); + std::shared_ptr get_sending_progress_bar(); + void reset(); + +private: + std::shared_ptr m_send_progress_bar; + wxScrolledWindow* m_sw_print_failed_info{ nullptr }; + Label* m_st_txt_error_code{ nullptr }; + Label* m_st_txt_error_desc{ nullptr }; + Label* m_st_txt_extra_info{ nullptr }; + int m_print_error_code; + std::string m_print_error_msg; + std::string m_print_error_extra; +}; + class CaliPageActionPanel : public wxPanel { public: diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index e3681b0d0..433e4fbc0 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -633,108 +633,6 @@ void CalibrationPresetPage::create_ext_spool_panel(wxWindow* parent) }); } -void CalibrationPresetPage::create_sending_panel(wxWindow* parent) -{ - parent->SetMinSize({ FromDIP(475), FromDIP(200) }); - parent->SetMaxSize({ FromDIP(475), FromDIP(200) }); - - auto panel_sizer = new wxBoxSizer(wxVERTICAL); - parent->SetSizer(panel_sizer); - - m_send_progress_bar = std::shared_ptr(new BBLStatusBarSend(parent)); - m_send_progress_bar->set_cancel_callback_fina([this]() { - BOOST_LOG_TRIVIAL(info) << "CalibrationWizard::print_job: enter canceled"; - if (CalibUtils::print_job) { - if (CalibUtils::print_job->is_running()) { - BOOST_LOG_TRIVIAL(info) << "calibration_print_job: canceled"; - CalibUtils::print_job->cancel(); - } - CalibUtils::print_job->join(); - } - show_status(CaliPresetStatusNormal); - }); - panel_sizer->Add(m_send_progress_bar->get_panel(), 0, wxEXPAND); - - m_sw_print_failed_info = new wxScrolledWindow(parent, wxID_ANY, wxDefaultPosition, wxSize(FromDIP(380), FromDIP(125)), wxVSCROLL); - m_sw_print_failed_info->SetBackgroundColour(*wxWHITE); - m_sw_print_failed_info->SetScrollRate(0, 5); - m_sw_print_failed_info->SetMinSize(wxSize(FromDIP(380), FromDIP(125))); - m_sw_print_failed_info->SetMaxSize(wxSize(FromDIP(380), FromDIP(125))); - - m_sw_print_failed_info->Hide(); - - panel_sizer->Add(m_sw_print_failed_info, 0, wxEXPAND); - - // create error info panel - wxBoxSizer* sizer_print_failed_info = new wxBoxSizer(wxVERTICAL); - m_sw_print_failed_info->SetSizer(sizer_print_failed_info); - - wxBoxSizer* sizer_error_code = new wxBoxSizer(wxHORIZONTAL); - wxBoxSizer* sizer_error_desc = new wxBoxSizer(wxHORIZONTAL); - wxBoxSizer* sizer_extra_info = new wxBoxSizer(wxHORIZONTAL); - - auto st_title_error_code = new Label(m_sw_print_failed_info, _L("Error code")); - auto st_title_error_code_doc = new Label(m_sw_print_failed_info, ": "); - m_st_txt_error_code = new Label(m_sw_print_failed_info, wxEmptyString); - st_title_error_code->SetForegroundColour(0x909090); - st_title_error_code_doc->SetForegroundColour(0x909090); - m_st_txt_error_code->SetForegroundColour(0x909090); - st_title_error_code->SetFont(::Label::Body_13); - st_title_error_code_doc->SetFont(::Label::Body_13); - m_st_txt_error_code->SetFont(::Label::Body_13); - st_title_error_code->SetMinSize(wxSize(FromDIP(74), -1)); - st_title_error_code->SetMaxSize(wxSize(FromDIP(74), -1)); - m_st_txt_error_code->SetMinSize(wxSize(FromDIP(260), -1)); - m_st_txt_error_code->SetMaxSize(wxSize(FromDIP(260), -1)); - sizer_error_code->Add(st_title_error_code, 0, wxALL, 0); - sizer_error_code->Add(st_title_error_code_doc, 0, wxALL, 0); - sizer_error_code->Add(m_st_txt_error_code, 0, wxALL, 0); - - auto st_title_error_desc = new Label(m_sw_print_failed_info, _L("Error desc")); - auto st_title_error_desc_doc = new Label(m_sw_print_failed_info, ": "); - m_st_txt_error_desc = new Label(m_sw_print_failed_info, wxEmptyString); - st_title_error_desc->SetForegroundColour(0x909090); - st_title_error_desc_doc->SetForegroundColour(0x909090); - m_st_txt_error_desc->SetForegroundColour(0x909090); - st_title_error_desc->SetFont(::Label::Body_13); - st_title_error_desc_doc->SetFont(::Label::Body_13); - m_st_txt_error_desc->SetFont(::Label::Body_13); - st_title_error_desc->SetMinSize(wxSize(FromDIP(74), -1)); - st_title_error_desc->SetMaxSize(wxSize(FromDIP(74), -1)); - m_st_txt_error_desc->SetMinSize(wxSize(FromDIP(260), -1)); - m_st_txt_error_desc->SetMaxSize(wxSize(FromDIP(260), -1)); - sizer_error_desc->Add(st_title_error_desc, 0, wxALL, 0); - sizer_error_desc->Add(st_title_error_desc_doc, 0, wxALL, 0); - sizer_error_desc->Add(m_st_txt_error_desc, 0, wxALL, 0); - - auto st_title_extra_info = new Label(m_sw_print_failed_info, _L("Extra info")); - auto st_title_extra_info_doc = new Label(m_sw_print_failed_info, ": "); - m_st_txt_extra_info = new Label(m_sw_print_failed_info, wxEmptyString); - st_title_extra_info->SetForegroundColour(0x909090); - st_title_extra_info_doc->SetForegroundColour(0x909090); - m_st_txt_extra_info->SetForegroundColour(0x909090); - st_title_extra_info->SetFont(::Label::Body_13); - st_title_extra_info_doc->SetFont(::Label::Body_13); - m_st_txt_extra_info->SetFont(::Label::Body_13); - st_title_extra_info->SetMinSize(wxSize(FromDIP(74), -1)); - st_title_extra_info->SetMaxSize(wxSize(FromDIP(74), -1)); - m_st_txt_extra_info->SetMinSize(wxSize(FromDIP(260), -1)); - m_st_txt_extra_info->SetMaxSize(wxSize(FromDIP(260), -1)); - sizer_extra_info->Add(st_title_extra_info, 0, wxALL, 0); - sizer_extra_info->Add(st_title_extra_info_doc, 0, wxALL, 0); - sizer_extra_info->Add(m_st_txt_extra_info, 0, wxALL, 0); - - sizer_print_failed_info->Add(sizer_error_code, 0, wxLEFT, 5); - sizer_print_failed_info->Add(0, 0, 0, wxTOP, FromDIP(3)); - sizer_print_failed_info->Add(sizer_error_desc, 0, wxLEFT, 5); - sizer_print_failed_info->Add(0, 0, 0, wxTOP, FromDIP(3)); - sizer_print_failed_info->Add(sizer_extra_info, 0, wxLEFT, 5); - - Bind(EVT_SHOW_ERROR_INFO, [this](auto& e) { - show_send_failed_info(true); - }); -} - void CalibrationPresetPage::create_page(wxWindow* parent) { m_page_caption = new CaliPageCaption(parent, m_cali_mode); @@ -788,10 +686,18 @@ void CalibrationPresetPage::create_page(wxWindow* parent) m_tips_panel = new CaliPresetTipsPanel(parent); - m_sending_panel = new wxPanel(parent); - m_sending_panel->SetBackgroundColour(*wxWHITE); - create_sending_panel(m_sending_panel); - + m_sending_panel = new CaliPageSendingPanel(parent); + m_sending_panel->get_sending_progress_bar()->set_cancel_callback_fina([this]() { + BOOST_LOG_TRIVIAL(info) << "CalibrationWizard::print_job: enter canceled"; + if (CalibUtils::print_job) { + if (CalibUtils::print_job->is_running()) { + BOOST_LOG_TRIVIAL(info) << "calibration_print_job: canceled"; + CalibUtils::print_job->cancel(); + } + CalibUtils::print_job->join(); + } + on_cali_cancel_job(); + }); m_sending_panel->Hide(); m_custom_range_panel = new CaliPresetCustomRangePanel(parent); @@ -1189,12 +1095,6 @@ bool CalibrationPresetPage::is_blocking_printing() void CalibrationPresetPage::update_show_status() { - if (get_status() == CaliPresetPageStatus::CaliPresetStatusSending) - return; - - if (get_status() == CaliPresetPageStatus::CaliPresetStatusSendingCanceled) - return; - NetworkAgent* agent = Slic3r::GUI::wxGetApp().getAgent(); DeviceManager* dev = Slic3r::GUI::wxGetApp().getDeviceManager(); if (!agent) {return;} @@ -1307,13 +1207,6 @@ bool CalibrationPresetPage::need_check_sdcard(MachineObject* obj) void CalibrationPresetPage::show_status(CaliPresetPageStatus status) { - if (status == CaliPresetPageStatus::CaliPresetStatusSending) { - sending_mode(); - } - else { - prepare_mode(); - } - if (m_page_status != status) //BOOST_LOG_TRIVIAL(info) << "CalibrationPresetPage: show_status = " << status << "(" << get_print_status_info(status) << ")"; m_page_status = status; @@ -1324,7 +1217,6 @@ void CalibrationPresetPage::show_status(CaliPresetPageStatus status) Enable_Send_Button(false); } else if (status == CaliPresetPageStatus::CaliPresetStatusNormal) { - m_sending_panel->Show(false); update_print_status_msg(wxEmptyString, false); Enable_Send_Button(true); Layout(); @@ -1359,15 +1251,6 @@ void CalibrationPresetPage::show_status(CaliPresetPageStatus status) update_print_status_msg(msg_text, true); Enable_Send_Button(false); } - else if (status == CaliPresetPageStatus::CaliPresetStatusSending) { - m_sending_panel->Show(); - Enable_Send_Button(false); - Layout(); - Fit(); - } - else if (status == CaliPresetPageStatus::CaliPresetStatusSendingCanceled) { - Enable_Send_Button(true); - } else if (status == CaliPresetPageStatus::CaliPresetStatusLanModeNoSdcard) { wxString msg_text = _L("An SD card needs to be inserted before printing via LAN."); update_print_status_msg(msg_text, true); @@ -1412,13 +1295,6 @@ void CalibrationPresetPage::prepare_mode() m_action_panel->show_button(CaliPageActionType::CALI_ACTION_CALI, true); } -void CalibrationPresetPage::sending_mode() -{ - Enable_Send_Button(false); - m_action_panel->show_button(CaliPageActionType::CALI_ACTION_CALI, false); -} - - float CalibrationPresetPage::get_nozzle_value() { double nozzle_value = 0.0; @@ -1448,44 +1324,6 @@ void CalibrationPresetPage::on_device_connected(MachineObject* obj) update_combobox_filaments(obj); } -void CalibrationPresetPage::update_print_error_info(int code, const std::string& msg, const std::string& extra) -{ - m_print_error_code = code; - m_print_error_msg = msg; - m_print_error_extra = extra; -} - -void CalibrationPresetPage::show_send_failed_info(bool show, int code, wxString description, wxString extra) -{ - if (show) { - if (!m_sw_print_failed_info->IsShown()) { - m_sw_print_failed_info->Show(true); - - m_st_txt_error_code->SetLabelText(wxString::Format("%d", m_print_error_code)); - m_st_txt_error_desc->SetLabelText(wxGetApp().filter_string(m_print_error_msg)); - m_st_txt_extra_info->SetLabelText(wxGetApp().filter_string(m_print_error_extra)); - - m_st_txt_error_code->Wrap(FromDIP(260)); - m_st_txt_error_desc->Wrap(FromDIP(260)); - m_st_txt_extra_info->Wrap(FromDIP(260)); - } - else { - m_sw_print_failed_info->Show(false); - } - Layout(); - Fit(); - } - else { - if (!m_sw_print_failed_info->IsShown()) { return; } - m_sw_print_failed_info->Show(false); - m_st_txt_error_code->SetLabelText(wxEmptyString); - m_st_txt_error_desc->SetLabelText(wxEmptyString); - m_st_txt_extra_info->SetLabelText(wxEmptyString); - Layout(); - Fit(); - } -} - void CalibrationPresetPage::set_cali_filament_mode(CalibrationFilamentMode mode) { CalibrationWizardPage::set_cali_filament_mode(mode); @@ -1577,14 +1415,32 @@ void CalibrationPresetPage::set_cali_method(CalibrationMethod method) void CalibrationPresetPage::on_cali_start_job() { - m_send_progress_bar->reset(); - m_sw_print_failed_info->Show(false); - show_status(CaliPresetPageStatus::CaliPresetStatusSending); + m_sending_panel->reset(); + m_sending_panel->Show(); + Enable_Send_Button(false); + m_action_panel->show_button(CaliPageActionType::CALI_ACTION_CALI, false); + Layout(); + Fit(); } void CalibrationPresetPage::on_cali_finished_job() { - show_status(CaliPresetPageStatus::CaliPresetStatusNormal); + m_sending_panel->reset(); + m_sending_panel->Show(false); + update_print_status_msg(wxEmptyString, false); + Enable_Send_Button(true); + m_action_panel->show_button(CaliPageActionType::CALI_ACTION_CALI, true); +} + +void CalibrationPresetPage::on_cali_cancel_job() +{ + m_sending_panel->reset(); + m_sending_panel->Show(false); + update_print_status_msg(wxEmptyString, false); + Enable_Send_Button(true); + m_action_panel->show_button(CaliPageActionType::CALI_ACTION_CALI, true); + Layout(); + Fit(); } void CalibrationPresetPage::init_with_machine(MachineObject* obj) diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp index 932752758..dd47a5870 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp @@ -129,14 +129,14 @@ enum CaliPresetPageStatus { CaliPresetStatusInit = 0, CaliPresetStatusNormal, - CaliPresetStatusSending, + //CaliPresetStatusSending, CaliPresetStatusNoUserLogin, CaliPresetStatusInvalidPrinter, CaliPresetStatusConnectingServer, CaliPresetStatusInUpgrading, CaliPresetStatusInSystemPrinting, CaliPresetStatusInPrinting, - CaliPresetStatusSendingCanceled, + //CaliPresetStatusSendingCanceled, CaliPresetStatusLanModeNoSdcard, CaliPresetStatusNoSdcard, CaliPresetStatusNeedForceUpgrading, @@ -167,9 +167,9 @@ public: void on_device_connected(MachineObject* obj) override; - void update_print_error_info(int code, const std::string& msg, const std::string& extra); + //void update_print_error_info(int code, const std::string& msg, const std::string& extra); - void show_send_failed_info(bool show, int code = 0, wxString description = wxEmptyString, wxString extra = wxEmptyString); + //void show_send_failed_info(bool show, int code = 0, wxString description = wxEmptyString, wxString extra = wxEmptyString); void set_cali_filament_mode(CalibrationFilamentMode mode) override; @@ -179,6 +179,8 @@ public: void on_cali_finished_job(); + void on_cali_cancel_job(); + void init_with_machine(MachineObject* obj); void sync_ams_info(MachineObject* obj); @@ -197,7 +199,7 @@ public: void get_cali_stage(CaliPresetStage& stage, float& value); std::shared_ptr get_sending_progress_bar() { - return m_send_progress_bar; + return m_sending_panel->get_sending_progress_bar(); } Preset* get_printer_preset(MachineObject* obj, float nozzle_value); @@ -212,7 +214,7 @@ protected: void create_selection_panel(wxWindow* parent); void create_filament_list_panel(wxWindow* parent); void create_ext_spool_panel(wxWindow* parent); - void create_sending_panel(wxWindow* parent); + //void create_sending_panel(wxWindow* parent); void init_selection_values(); void update_filament_combobox(std::string ams_id = ""); @@ -245,7 +247,7 @@ protected: void show_status(CaliPresetPageStatus status); void Enable_Send_Button(bool enable); void prepare_mode(); - void sending_mode(); + //void sending_mode(); bool is_blocking_printing(); bool need_check_sdcard(MachineObject* obj); @@ -263,7 +265,7 @@ protected: CaliPresetWarningPanel* m_warning_panel { nullptr }; CaliPresetCustomRangePanel* m_custom_range_panel { nullptr }; CaliPresetTipsPanel* m_tips_panel { nullptr }; - wxPanel* m_sending_panel { nullptr }; + CaliPageSendingPanel* m_sending_panel { nullptr }; wxBoxSizer* m_top_sizer; @@ -280,14 +282,14 @@ protected: FilamentComboBox* m_virtual_tray_comboBox; // m_sending panel widgets - std::shared_ptr m_send_progress_bar; - wxScrolledWindow* m_sw_print_failed_info { nullptr }; - Label* m_st_txt_error_code { nullptr }; - Label* m_st_txt_error_desc { nullptr }; - Label* m_st_txt_extra_info { nullptr }; - int m_print_error_code; - std::string m_print_error_msg; - std::string m_print_error_extra; + //std::shared_ptr m_send_progress_bar; + //wxScrolledWindow* m_sw_print_failed_info { nullptr }; + //Label* m_st_txt_error_code { nullptr }; + //Label* m_st_txt_error_desc { nullptr }; + //Label* m_st_txt_extra_info { nullptr }; + //int m_print_error_code; + //std::string m_print_error_msg; + //std::string m_print_error_extra; std::vector m_ams_item_list; diff --git a/src/slic3r/GUI/CalibrationWizardSavePage.cpp b/src/slic3r/GUI/CalibrationWizardSavePage.cpp index 1f6fbec5d..67bd940ec 100644 --- a/src/slic3r/GUI/CalibrationWizardSavePage.cpp +++ b/src/slic3r/GUI/CalibrationWizardSavePage.cpp @@ -1270,6 +1270,21 @@ void CalibrationFlowCoarseSavePage::create_page(wxWindow* parent) m_coarse_calc_result_text->SetLabel(wxString::Format(_L("flow ratio : %s "), std::to_string(m_coarse_flow_ratio))); }); + m_sending_panel = new CaliPageSendingPanel(parent); + m_sending_panel->get_sending_progress_bar()->set_cancel_callback_fina([this]() { + BOOST_LOG_TRIVIAL(info) << "CalibrationWizard::print_job: enter canceled"; + if (CalibUtils::print_job) { + if (CalibUtils::print_job->is_running()) { + BOOST_LOG_TRIVIAL(info) << "calibration_print_job: canceled"; + CalibUtils::print_job->cancel(); + } + CalibUtils::print_job->join(); + } + on_cali_cancel_job(); + }); + m_sending_panel->Hide(); + m_top_sizer->Add(m_sending_panel, 0, wxALIGN_CENTER); + m_action_panel = new CaliPageActionPanel(parent, m_cali_mode, CaliPageType::CALI_PAGE_COARSE_SAVE); m_action_panel->show_button(CaliPageActionType::CALI_ACTION_FLOW_COARSE_SAVE, false); m_top_sizer->Add(m_action_panel, 0, wxEXPAND, 0); @@ -1336,6 +1351,34 @@ bool CalibrationFlowCoarseSavePage::Show(bool show) { return wxPanel::Show(show); } +void CalibrationFlowCoarseSavePage::on_cali_start_job() +{ + m_sending_panel->reset(); + m_sending_panel->Show(); + m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_FLOW_CALI_STAGE_2, false); + m_action_panel->show_button(CaliPageActionType::CALI_ACTION_FLOW_CALI_STAGE_2, false); + Layout(); + Fit(); +} + +void CalibrationFlowCoarseSavePage::on_cali_finished_job() +{ + m_sending_panel->reset(); + m_sending_panel->Show(false); + m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_FLOW_CALI_STAGE_2, true); + m_action_panel->show_button(CaliPageActionType::CALI_ACTION_FLOW_CALI_STAGE_2, true); +} + +void CalibrationFlowCoarseSavePage::on_cali_cancel_job() +{ + m_sending_panel->reset(); + m_sending_panel->Show(false); + m_action_panel->enable_button(CaliPageActionType::CALI_ACTION_FLOW_CALI_STAGE_2, true); + m_action_panel->show_button(CaliPageActionType::CALI_ACTION_FLOW_CALI_STAGE_2, true); + Layout(); + Fit(); +} + CalibrationFlowFineSavePage::CalibrationFlowFineSavePage(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style) : CalibrationCommonSavePage(parent, id, pos, size, style) { diff --git a/src/slic3r/GUI/CalibrationWizardSavePage.hpp b/src/slic3r/GUI/CalibrationWizardSavePage.hpp index 0cb0de787..6f7e2537f 100644 --- a/src/slic3r/GUI/CalibrationWizardSavePage.hpp +++ b/src/slic3r/GUI/CalibrationWizardSavePage.hpp @@ -239,6 +239,16 @@ public: virtual bool Show(bool show = true) override; + void on_cali_start_job(); + + void on_cali_finished_job(); + + void on_cali_cancel_job(); + + std::shared_ptr get_sending_progress_bar() { + return m_sending_panel->get_sending_progress_bar(); + } + protected: CaliPageStepGuide* m_step_panel{ nullptr }; CaliPagePicture* m_picture_panel; @@ -251,6 +261,8 @@ protected: bool m_skip_fine_calibration = false; float m_curr_flow_ratio; float m_coarse_flow_ratio; + + CaliPageSendingPanel* m_sending_panel{ nullptr }; }; class CalibrationFlowFineSavePage : public CalibrationCommonSavePage