From f5c49c89a80e508a442440218b068446d1e9e797 Mon Sep 17 00:00:00 2001 From: "xin.zhang" Date: Thu, 6 Mar 2025 19:43:59 +0800 Subject: [PATCH] FIX: update the extruder image in status panel jira: [STUDIO-10732] Change-Id: I5437c4ef1538f0022f97c7ef7fb40ec2242328ed --- ...{single_nozzle.svg => single_nozzle_n.svg} | 0 resources/images/single_nozzle_xp.svg | 52 +++++++++++++++++++ src/slic3r/GUI/DeviceManager.cpp | 15 ++++-- src/slic3r/GUI/DeviceManager.hpp | 7 +++ src/slic3r/GUI/StatusPanel.cpp | 2 +- src/slic3r/GUI/Widgets/AMSControl.cpp | 5 +- src/slic3r/GUI/Widgets/AMSControl.hpp | 2 +- src/slic3r/GUI/Widgets/AMSItem.cpp | 20 +++++-- src/slic3r/GUI/Widgets/AMSItem.hpp | 6 ++- 9 files changed, 97 insertions(+), 12 deletions(-) rename resources/images/{single_nozzle.svg => single_nozzle_n.svg} (100%) create mode 100644 resources/images/single_nozzle_xp.svg diff --git a/resources/images/single_nozzle.svg b/resources/images/single_nozzle_n.svg similarity index 100% rename from resources/images/single_nozzle.svg rename to resources/images/single_nozzle_n.svg diff --git a/resources/images/single_nozzle_xp.svg b/resources/images/single_nozzle_xp.svg new file mode 100644 index 000000000..b7495ecd8 --- /dev/null +++ b/resources/images/single_nozzle_xp.svg @@ -0,0 +1,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 2ea006700..0a122d9f8 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -615,10 +615,17 @@ bool MachineObject::get_printer_is_enclosed() const return DeviceManager::get_printer_is_enclosed(printer_type); } -bool MachineObject::is_series_n() const { return DeviceManager::get_printer_series(printer_type) == "series_n"; }; -bool MachineObject::is_series_p() const { return DeviceManager::get_printer_series(printer_type) == "series_p1p"; }; -bool MachineObject::is_series_x() const { return DeviceManager::get_printer_series(printer_type) == "series_x1"; }; -bool MachineObject::is_series_o() const { return DeviceManager::get_printer_series(printer_type) == "series_o"; }; +bool MachineObject::is_series_n(const std::string& series_str) { return series_str == "series_n"; } +bool MachineObject::is_series_p(const std::string& series_str) { return series_str == "series_p1p";} +bool MachineObject::is_series_x(const std::string& series_str) { return series_str == "series_x1"; } +bool MachineObject::is_series_o(const std::string& series_str) { return series_str == "series_o"; } + +bool MachineObject::is_series_n() const { return is_series_n(DeviceManager::get_printer_series(printer_type)); } +bool MachineObject::is_series_p() const { return is_series_p(DeviceManager::get_printer_series(printer_type)); } +bool MachineObject::is_series_x() const { return is_series_x(DeviceManager::get_printer_series(printer_type)); } +bool MachineObject::is_series_o() const { return is_series_o(DeviceManager::get_printer_series(printer_type)); } + +std::string MachineObject::get_printer_series_str() const{ return DeviceManager::get_printer_series(printer_type);}; void MachineObject::reload_printer_settings() { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 56104e9d2..c5a23814d 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -629,11 +629,18 @@ public: bool get_printer_is_enclosed() const; // check printer device series + static bool is_series_n(const std::string& series_str); + static bool is_series_p(const std::string& series_str); + static bool is_series_x(const std::string& series_str); + static bool is_series_o(const std::string& series_str); + bool is_series_n() const; bool is_series_p() const; bool is_series_x() const; bool is_series_o() const; + std::string get_printer_series_str() const; + void reload_printer_settings(); std::string printer_thumbnail_img; diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 055655423..65b1ab624 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -3227,7 +3227,7 @@ void StatusPanel::update_ams(MachineObject *obj) ExtderData data = obj->m_extder_data; // must select a current can - m_ams_control->UpdateAms(ams_info, ext_info, data, dev_id, false); + m_ams_control->UpdateAms(obj->get_printer_series_str(), ams_info, ext_info, data, dev_id, false); last_tray_exist_bits = obj->tray_exist_bits; last_ams_exist_bits = obj->ams_exist_bits; diff --git a/src/slic3r/GUI/Widgets/AMSControl.cpp b/src/slic3r/GUI/Widgets/AMSControl.cpp index 27b7cf160..e494b68af 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.cpp +++ b/src/slic3r/GUI/Widgets/AMSControl.cpp @@ -3310,7 +3310,7 @@ std::vector AMSControl::GenerateSimulateData() { } -void AMSControl::UpdateAms(std::vector ams_info, std::vectorext_info, ExtderData data, std::string dev_id, bool is_reset, bool test) +void AMSControl::UpdateAms(const std::string& series_name, std::vector ams_info, std::vectorext_info, ExtderData data, std::string dev_id, bool is_reset, bool test) { if (!test){ // update item @@ -3479,6 +3479,9 @@ void AMSControl::UpdateAms(std::vector ams_info, std::vectorex } } } + + /*update ams extruder*/ + m_extruder->updateNozzleNum(m_extder_data.total_extder_count, series_name); } void AMSControl::AddAmsPreview(AMSinfo info, AMSModel type) diff --git a/src/slic3r/GUI/Widgets/AMSControl.hpp b/src/slic3r/GUI/Widgets/AMSControl.hpp index f63fd4899..9fcb55e6c 100644 --- a/src/slic3r/GUI/Widgets/AMSControl.hpp +++ b/src/slic3r/GUI/Widgets/AMSControl.hpp @@ -152,7 +152,7 @@ public: void CreateAmsDoubleNozzle(); void CreateAmsSingleNozzle(); void ClearAms(); - void UpdateAms(std::vector ams_info, std::vector ext_info, ExtderData data, std::string dev_id, bool is_reset = true, bool test = false); + void UpdateAms(const std::string& series_name, std::vector ams_info, std::vector ext_info, ExtderData data, std::string dev_id, bool is_reset = true, bool test = false); std::vector GenerateSimulateData(); void AddAms(AMSinfo info, AMSPanelPos pos = AMSPanelPos::LEFT_PANEL); diff --git a/src/slic3r/GUI/Widgets/AMSItem.cpp b/src/slic3r/GUI/Widgets/AMSItem.cpp index 7127b9b0a..1ab66c5dd 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.cpp +++ b/src/slic3r/GUI/Widgets/AMSItem.cpp @@ -766,9 +766,10 @@ void AMSextruder::OnAmsLoading(bool load, int nozzle_id, wxColour col /*= AMS_CO } } -void AMSextruder::updateNozzleNum(int nozzle_num) +void AMSextruder::updateNozzleNum(int nozzle_num, const string& series_name) { - if (m_nozzle_num == nozzle_num) return; + if (m_nozzle_num == nozzle_num && m_series_name == series_name) return; + m_series_name = series_name; m_nozzle_num = nozzle_num; this->DestroyChildren(); @@ -786,7 +787,19 @@ void AMSextruder::updateNozzleNum(int nozzle_num) } else { - m_left_extruder = new AMSextruderImage(this, wxID_ANY, "single_nozzle", AMS_EXTRUDER_SINGLE_NOZZLE_BITMAP_SIZE); + if (MachineObject::is_series_n(m_series_name)) + { + m_left_extruder = new AMSextruderImage(this, wxID_ANY, "single_nozzle_n", AMS_EXTRUDER_SINGLE_NOZZLE_BITMAP_SIZE); + } + else if(MachineObject::is_series_x(m_series_name) || MachineObject::is_series_p(m_series_name)) + { + m_left_extruder = new AMSextruderImage(this, wxID_ANY, "single_nozzle_xp", AMS_EXTRUDER_SINGLE_NOZZLE_BITMAP_SIZE); + } + else + { + m_left_extruder = new AMSextruderImage(this, wxID_ANY, "single_nozzle_xp", AMS_EXTRUDER_SINGLE_NOZZLE_BITMAP_SIZE); + } + m_left_extruder->setShowState(true); m_right_extruder->setShowState(false); m_bitmap_sizer->Add(m_left_extruder, 0, wxALIGN_LEFT | wxALIGN_TOP, 0); @@ -794,6 +807,7 @@ void AMSextruder::updateNozzleNum(int nozzle_num) } SetSizer(m_bitmap_sizer); + Layout(); Refresh(); } diff --git a/src/slic3r/GUI/Widgets/AMSItem.hpp b/src/slic3r/GUI/Widgets/AMSItem.hpp index dfdd6c52d..f5b99015a 100644 --- a/src/slic3r/GUI/Widgets/AMSItem.hpp +++ b/src/slic3r/GUI/Widgets/AMSItem.hpp @@ -398,7 +398,9 @@ private: class AMSextruder : public wxWindow { private: - int m_nozzle_num = -1; + int m_nozzle_num = -1; + string m_series_name; + public: void TurnOn(wxColour col); void TurnOff(); @@ -407,7 +409,7 @@ public: void msw_rescale(); void has_ams(bool hams) {m_has_vams = hams; Refresh();}; void no_ams_mode(bool mode) {m_none_ams_mode = mode; Refresh();}; - void updateNozzleNum(int nozzle_num); + void updateNozzleNum(int nozzle_num, const std::string& series_name = string()); bool m_none_ams_mode{true}; bool m_has_vams{false};