From f8b4949353fbb4cead3249d5e8f6beb06859164c Mon Sep 17 00:00:00 2001 From: "xin.zhang" Date: Mon, 13 Jan 2025 17:21:06 +0800 Subject: [PATCH] FIX: the load filament steps shown fault jira: [STUDIO-9684] Change-Id: Ic238993302156788200482ed34e3092b9ab94dfd --- src/slic3r/GUI/DeviceManager.cpp | 17 ++++++++-- src/slic3r/GUI/DeviceManager.hpp | 3 +- src/slic3r/GUI/StatusPanel.cpp | 9 ++--- src/slic3r/GUI/StatusPanel.hpp | 2 +- src/slic3r/GUI/UpgradePanel.cpp | 44 ++++++++++++------------- src/slic3r/GUI/Widgets/FilamentLoad.cpp | 2 +- src/slic3r/GUI/Widgets/FilamentLoad.hpp | 2 +- 7 files changed, 47 insertions(+), 32 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index bf9d1ec5b..708cd06b3 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -3594,7 +3594,9 @@ int MachineObject::parse_json(std::string payload, bool key_field_only) home_flag = jj["home_flag"].get(); parse_status(home_flag); } - if (jj.contains("hw_switch_state")) { + + /*the param is invalid in np for Yeshu*/ + if (!check_enable_np(jj) && jj.contains("hw_switch_state")) { hw_switch_state = jj["hw_switch_state"].get(); m_extder_data.extders[MAIN_NOZZLE_ID].ext_has_filament = hw_switch_state; } @@ -5568,6 +5570,17 @@ NozzleFlowType MachineObject::get_nozzle_flow_type(int extruder_id) const return NozzleFlowType::NONE_FLOWTYPE; } +const Extder& MachineObject::get_current_extruder() const +{ + if (m_extder_data.extders.size() <= m_extder_data.current_extder_id) + { + BOOST_LOG_TRIVIAL(error) << "get_current_extruder() failed"; + return Extder(); + } + + return m_extder_data.extders[m_extder_data.current_extder_id]; +} + void MachineObject::converse_to_duct(bool is_suppt_part_fun, bool is_suppt_aux_fun, bool is_suppt_cham_fun) { m_air_duct_data.modes.clear(); @@ -5728,7 +5741,7 @@ AmsTray MachineObject::parse_vt_tray(json vtray) return vt_tray; } -bool MachineObject::check_enable_np(json print) const +bool MachineObject::check_enable_np(const json& print) const { if (print.contains("cfg") && print.contains("fun") && print.contains("aux") && print.contains("stat")) { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 7b34fa3c7..25042924d 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -744,6 +744,7 @@ public: /*extruder*/ [[nodiscard]] bool is_nozzle_flow_type_supported() const { return is_enable_np; }; [[nodiscard]] NozzleFlowType get_nozzle_flow_type(int extruder_id) const; + [[nodiscard]] const Extder& get_current_extruder() const; //new fan data AirDuctData m_air_duct_data; @@ -1215,7 +1216,7 @@ public: AmsTray parse_vt_tray(json vtray); /*for parse new info*/ - bool check_enable_np(json print) const; + bool check_enable_np(const json& print) const; void parse_new_info(json print); bool is_nozzle_data_invalid(); int get_flag_bits(std::string str, int start, int count = 1); diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 75822bad3..3332090ba 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -1889,6 +1889,8 @@ void StatusBasePanel::show_filament_load_group(bool show) m_img_filament_loading->SetBitmap(create_scaled_bitmap("filament_load_fold", this, 24)); } m_scale_panel->Show(show); + m_filament_step->SetupSteps(obj->get_current_extruder().ext_has_filament); + m_show_filament_group = show; Layout(); Fit(); @@ -3085,7 +3087,7 @@ void StatusPanel::update_ams(MachineObject *obj) } if (ams_loading_state) { - update_filament_step(); + update_load_with_temp(); m_filament_step->updateID(std::atoi(obj->m_ams_id.c_str()), std::atoi(obj->m_tray_id.c_str())); bool busy_for_vt_loading = false; @@ -3886,9 +3888,8 @@ void StatusPanel::on_ams_load(SimpleEvent &event) on_ams_load_curr(); } -void StatusPanel::update_filament_step() +void StatusPanel::update_load_with_temp() { - m_filament_step->UpdateStepCtrl(obj->is_filament_at_extruder()); if (!obj->is_filament_at_extruder()) { m_is_load_with_temp = true; } @@ -3904,7 +3905,7 @@ void StatusPanel::on_ams_load_curr() std::string curr_can_id = m_ams_control->GetCurrentCan(curr_ams_id); - update_filament_step(); + update_load_with_temp(); //virtual tray if (curr_ams_id.compare(std::to_string(VIRTUAL_TRAY_MAIN_ID)) == 0) { int old_temp = -1; diff --git a/src/slic3r/GUI/StatusPanel.hpp b/src/slic3r/GUI/StatusPanel.hpp index baf589fb5..e6e855c92 100644 --- a/src/slic3r/GUI/StatusPanel.hpp +++ b/src/slic3r/GUI/StatusPanel.hpp @@ -644,7 +644,7 @@ protected: /* extruder apis */ void on_ams_load(SimpleEvent &event); - void update_filament_step(); + void update_load_with_temp(); void on_ams_load_curr(); void on_ams_load_vams(wxCommandEvent& event); void on_ams_switch(SimpleEvent &event); diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index 5d08eb3a2..84456b52d 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -55,7 +55,7 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin wxBoxSizer *m_ota_sizer = new wxBoxSizer(wxHORIZONTAL); m_printer_img = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(200), FromDIP(200))); - + m_printer_img->SetBitmap(m_img_printer.bmp()); m_ota_sizer->Add(m_printer_img, 0, wxALIGN_CENTER_VERTICAL | wxALL, 0); @@ -103,7 +103,7 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin m_staticText_ver_val = new wxStaticText(this, wxID_ANY, "-", wxDefaultPosition, wxDefaultSize, 0); m_staticText_ver_val->Wrap(-1); - + m_staticText_beta_version = new wxStaticText(this, wxID_ANY, "Beta", wxDefaultPosition, wxDefaultSize, 0); m_staticText_beta_version->SetForegroundColour("#778899"); @@ -143,7 +143,7 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin m_ahb_panel = new AmsPanel(this, wxID_ANY); m_ahb_panel->m_staticText_ams->SetLabel("AMS HUB"); m_ams_content_sizer->Add(m_ahb_panel, 0, wxEXPAND, 0); - + m_ams_info_sizer = new wxFlexGridSizer(0, 2, FromDIP(30), FromDIP(30)); m_ams_info_sizer->SetFlexibleDirection(wxHORIZONTAL); @@ -386,7 +386,7 @@ void MachineInfoPanel::createLaserWidgets(wxBoxSizer* main_left_sizer) main_left_sizer->Add(m_laser_sizer, 0, wxEXPAND, 0); } -void MachineInfoPanel::msw_rescale() +void MachineInfoPanel::msw_rescale() { rescale_bitmaps(); m_button_upgrade_firmware->SetSize(wxSize(FromDIP(-1), FromDIP(24))); @@ -394,7 +394,7 @@ void MachineInfoPanel::msw_rescale() m_button_upgrade_firmware->SetMaxSize(wxSize(FromDIP(-1), FromDIP(24))); m_button_upgrade_firmware->SetCornerRadius(FromDIP(12)); m_ahb_panel->msw_rescale(); - for (auto &amspanel : m_amspanel_list) { + for (auto &amspanel : m_amspanel_list) { amspanel->msw_rescale(); } m_ext_panel->msw_rescale(); @@ -537,7 +537,7 @@ void MachineInfoPanel::update(MachineObject* obj) void MachineInfoPanel::update_version_text(MachineObject* obj) { - + if (obj->upgrade_display_state == (int)MachineObject::UpgradingDisplayState::UpgradingInProgress) { m_staticText_ver_val->SetLabelText("-"); //m_staticText_ams_ver_val->SetLabelText("-"); @@ -655,14 +655,14 @@ void MachineInfoPanel::update_ams_ext(MachineObject *obj) wxString sn_text = obj->module_vers.find("ahb")->second.sn; hub_sn = sn_text.MakeUpper(); } - + wxString hub_ver = "-"; if (!obj->module_vers.find("ahb")->second.sw_ver.empty()) { wxString sn_text = obj->module_vers.find("ahb")->second.sw_ver; hub_ver = sn_text.MakeUpper(); } - + /* auto ver_item = obj->new_ver_list.find("ahb"); if (ver_item != obj->new_ver_list.end()) { m_ahb_panel->m_ams_new_version_img->Show(); @@ -852,7 +852,7 @@ void MachineInfoPanel::update_ams_ext(MachineObject *obj) ams_ver += wxString::Format("(%s)", _L("Beta version")); } ams_ver += wxString::Format("->%s", obj->ams_new_version_number); - + } } else { @@ -947,7 +947,7 @@ void MachineInfoPanel::update_ams_ext(MachineObject *obj) if (!has_hub_model) { show_ams(false); } show_extra_ams(false); } - + //ext auto ext_module = obj->module_vers.find("ext"); if (ext_module == obj->module_vers.end() || is_o_series) @@ -975,7 +975,7 @@ void MachineInfoPanel::update_ams_ext(MachineObject *obj) // set sn and version m_ext_panel->m_staticText_ext_sn_val->SetLabelText(sn_text); m_ext_panel->m_staticText_ext_ver_val->SetLabelText(ext_ver); - + show_ext(true); } @@ -1202,7 +1202,7 @@ void MachineInfoPanel::on_consisitency_upgrade_firmware(wxCommandEvent &event) confirm_dlg->on_show(); } -void MachineInfoPanel::on_show_release_note(wxMouseEvent &event) +void MachineInfoPanel::on_show_release_note(wxMouseEvent &event) { DeviceManager *dev = wxGetApp().getDeviceManager(); if (!dev) return; @@ -1217,7 +1217,7 @@ void MachineInfoPanel::on_show_release_note(wxMouseEvent &event) version_number = m_obj->ota_new_version_number; next_version_release_note = wxString::FromUTF8(iter.description); } - if (iter.version == m_obj->get_ota_version()) { + if (iter.version == m_obj->get_ota_version()) { version_number = m_obj->get_ota_version(); now_version_release_note = wxString::FromUTF8(iter.description); } @@ -1267,8 +1267,8 @@ UpgradePanel::~UpgradePanel() delete consistency_dlg ; } -void UpgradePanel::msw_rescale() -{ +void UpgradePanel::msw_rescale() +{ if (m_push_upgrade_panel) m_push_upgrade_panel->msw_rescale(); } @@ -1454,7 +1454,7 @@ bool UpgradePanel::Show(bool show) m_staticText_ams_ver_val = new wxStaticText(this, wxID_ANY, "-", wxDefaultPosition, wxDefaultSize, 0); m_staticText_ams_ver_val->SetForegroundColour("#262E30"); m_staticText_ams_ver_val->Wrap(-1); - + m_staticText_beta_version = new wxStaticText(this, wxID_ANY, "Beta", wxDefaultPosition, wxDefaultSize, 0); m_staticText_beta_version->SetForegroundColour("#778899"); m_staticText_beta_version->Wrap(-1); @@ -1476,12 +1476,12 @@ bool UpgradePanel::Show(bool show) Layout(); } - AmsPanel::~AmsPanel() + AmsPanel::~AmsPanel() { } - void AmsPanel::msw_rescale() { + void AmsPanel::msw_rescale() { upgrade_green_icon.msw_rescale(); m_ams_new_version_img->SetBitmap(upgrade_green_icon.bmp()); } @@ -1494,7 +1494,7 @@ bool UpgradePanel::Show(bool show) const wxString& name /*= wxEmptyString*/) : wxPanel(parent, id, pos, size, style) { - + upgrade_green_icon = ScalableBitmap(this, "monitor_upgrade_online", 5); auto top_sizer = new wxBoxSizer(wxVERTICAL); @@ -1554,8 +1554,8 @@ bool UpgradePanel::Show(bool show) } - void ExtensionPanel::msw_rescale() - { + void ExtensionPanel::msw_rescale() + { upgrade_green_icon.msw_rescale(); m_ext_new_version_img->SetBitmap(upgrade_green_icon.bmp()); } @@ -1568,7 +1568,7 @@ bool UpgradePanel::Show(bool show) const wxString& name /*= wxEmptyString*/) : AmsPanel(parent, id, pos, size, style) { - + } } diff --git a/src/slic3r/GUI/Widgets/FilamentLoad.cpp b/src/slic3r/GUI/Widgets/FilamentLoad.cpp index a5847a9e7..11ebf9941 100644 --- a/src/slic3r/GUI/Widgets/FilamentLoad.cpp +++ b/src/slic3r/GUI/Widgets/FilamentLoad.cpp @@ -124,7 +124,7 @@ void FilamentLoad::SetFilamentStep(FilamentStep item_idx, FilamentStepType f_typ step_control->SetSlotInformation(slot_info); } -void FilamentLoad::UpdateStepCtrl(bool has_fila_to_switch) { +void FilamentLoad::SetupSteps(bool has_fila_to_switch) { m_filament_load_steps->DeleteAllItems(); m_filament_unload_steps->DeleteAllItems(); m_filament_vt_load_steps->DeleteAllItems(); diff --git a/src/slic3r/GUI/Widgets/FilamentLoad.hpp b/src/slic3r/GUI/Widgets/FilamentLoad.hpp index 37db5dba9..c358816b7 100644 --- a/src/slic3r/GUI/Widgets/FilamentLoad.hpp +++ b/src/slic3r/GUI/Widgets/FilamentLoad.hpp @@ -44,7 +44,7 @@ public: void SetFilamentStep(FilamentStep item_idx, FilamentStepType f_type); void ShowFilamentTip(bool hasams = true); - void UpdateStepCtrl(bool is_extrusion_exist); + void SetupSteps(bool is_extrusion_exist); void show_nofilament_mode(bool show); void updateID(int ams_id, int slot_id) { m_ams_id = ams_id; m_slot_id = slot_id; };