From 9b260132989aa52d27d0033cbbd125869bf93f54 Mon Sep 17 00:00:00 2001 From: "liz.li" Date: Mon, 30 Oct 2023 17:27:39 +0800 Subject: [PATCH] FIX: calibration flow rate sending progressbar MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix sending progressbar display problem in flow rate preset page jira: STUDIO-4869、STUDIO-4783、STUDIO-4786 Change-Id: I91bfb473d603bb50435da5b23389f38cee8bca6c --- src/slic3r/GUI/CalibrationWizard.cpp | 35 +++++++++++++++++-- .../GUI/CalibrationWizardPresetPage.cpp | 9 +++++ .../GUI/CalibrationWizardPresetPage.hpp | 1 + 3 files changed, 43 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/CalibrationWizard.cpp b/src/slic3r/GUI/CalibrationWizard.cpp index 689c03d9a..98d4febab 100644 --- a/src/slic3r/GUI/CalibrationWizard.cpp +++ b/src/slic3r/GUI/CalibrationWizard.cpp @@ -90,6 +90,26 @@ CalibrationWizard::CalibrationWizard(wxWindow* parent, CalibMode mode, wxWindowI main_sizer->Fit(this); Bind(EVT_CALIBRATION_JOB_FINISHED, &CalibrationWizard::on_cali_job_finished, this); + this->Bind(wxEVT_CHAR_HOOK, [this](auto& evt) { + const int keyCode = evt.GetKeyCode(); + switch (keyCode) + { + case WXK_F1: + { + show_step(m_curr_step->prev); + break; + } + case WXK_F2: + { + show_step(m_curr_step->next); + break; + } + default: + evt.Skip(); + break; + } + }); + } CalibrationWizard::~CalibrationWizard() @@ -990,8 +1010,13 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow } else if (stage == CaliPresetStage::CALI_MANUAL_STAGE_2) { cali_stage = 2; - calib_info.process_bar = coarse_page->get_sending_progress_bar(); temp_filament_preset->config.set_key_value("filament_flow_ratio", new ConfigOptionFloats{ cali_value }); + if (from_page == FlowRatioCaliSource::FROM_PRESET_PAGE) { + calib_info.process_bar = preset_page->get_sending_progress_bar(); + } + else if (from_page == FlowRatioCaliSource::FROM_COARSE_PAGE) { + calib_info.process_bar = coarse_page->get_sending_progress_bar(); + } } calib_info.filament_prest = temp_filament_preset; @@ -1021,7 +1046,12 @@ void FlowRateWizard::on_cali_start(CaliPresetStage stage, float cali_value, Flow else if (cali_stage == 2) { CalibrationCaliPage *cali_fine_page = (static_cast(cali_fine_step->page)); cali_fine_page->clear_last_job_status(); - coarse_page->on_cali_start_job(); + if (from_page == FlowRatioCaliSource::FROM_PRESET_PAGE) { + preset_page->on_cali_start_job(); + } + else if (from_page == FlowRatioCaliSource::FROM_COARSE_PAGE) { + coarse_page->on_cali_start_job(); + } } } else { assert(false); @@ -1208,6 +1238,7 @@ void FlowRateWizard::on_cali_job_finished(wxString evt_data) show_step(cali_fine_step); } // change ui, hide + static_cast(preset_step->page)->on_cali_finished_job(); static_cast(coarse_save_step->page)->on_cali_finished_job(); } else diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp index 069753f41..42897e671 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.cpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.cpp @@ -1199,6 +1199,9 @@ bool CalibrationPresetPage::need_check_sdcard(MachineObject* obj) void CalibrationPresetPage::show_status(CaliPresetPageStatus status) { + if (m_stop_update_page_status) + return; + if (m_page_status != status) //BOOST_LOG_TRIVIAL(info) << "CalibrationPresetPage: show_status = " << status << "(" << get_print_status_info(status) << ")"; m_page_status = status; @@ -1407,6 +1410,8 @@ void CalibrationPresetPage::on_cali_start_job() m_action_panel->show_button(CaliPageActionType::CALI_ACTION_CALI, false); Layout(); Fit(); + + m_stop_update_page_status = true; } void CalibrationPresetPage::on_cali_finished_job() @@ -1418,6 +1423,8 @@ void CalibrationPresetPage::on_cali_finished_job() m_action_panel->show_button(CaliPageActionType::CALI_ACTION_CALI, true); Layout(); Fit(); + + m_stop_update_page_status = false; } void CalibrationPresetPage::on_cali_cancel_job() @@ -1438,6 +1445,8 @@ void CalibrationPresetPage::on_cali_cancel_job() m_action_panel->show_button(CaliPageActionType::CALI_ACTION_CALI, true); Layout(); Fit(); + + m_stop_update_page_status = false; } void CalibrationPresetPage::init_with_machine(MachineObject* obj) diff --git a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp index 1cc1d4acd..41e645cfe 100644 --- a/src/slic3r/GUI/CalibrationWizardPresetPage.hpp +++ b/src/slic3r/GUI/CalibrationWizardPresetPage.hpp @@ -281,6 +281,7 @@ protected: std::map filament_ams_list; CaliPresetPageStatus m_page_status { CaliPresetPageStatus::CaliPresetStatusInit }; + bool m_stop_update_page_status{ false }; bool m_show_custom_range { false }; bool m_has_filament_incompatible { false };