From eb1eb7e81a06034fff4ae937eb26165aef4cf40b Mon Sep 17 00:00:00 2001 From: "xin.zhang" Date: Wed, 6 Aug 2025 10:33:02 +0800 Subject: [PATCH] ENH: add new part: extinguish JIRA: [STUDIO-11578] Change-Id: I39dc15fe022f38d8c775c2675120bbbce05f95f3 (cherry picked from commit 25dc4e37e3681a840df9af7d98bbb134082492ab) --- resources/images/extinguish.png | Bin 0 -> 6842 bytes src/slic3r/GUI/DeviceCore/DevFirmware.h | 1 + src/slic3r/GUI/DeviceManager.cpp | 3 ++ src/slic3r/GUI/DeviceManager.hpp | 1 + src/slic3r/GUI/UpgradePanel.cpp | 49 ++++++++++++++++++++++++ src/slic3r/GUI/UpgradePanel.hpp | 24 +++++++++--- 6 files changed, 72 insertions(+), 6 deletions(-) create mode 100644 resources/images/extinguish.png diff --git a/resources/images/extinguish.png b/resources/images/extinguish.png new file mode 100644 index 0000000000000000000000000000000000000000..ecc2960b098dfd5cbaf9229e15a8e6d2a4428259 GIT binary patch literal 6842 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 w module_vers; std::map new_ver_list; bool m_new_ver_list_exist = false; diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index 3a54a0cf39..ae336de79a 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -26,6 +26,7 @@ static const std::unordered_map ACCESSORY_DISPLAY_STR = { {"O2L_PCM", L("Cutting Module")}, {"O2L_ACM", "Active Cutting Module"}, {"O2L_UCM", "Ultrasonic Cutting Module"}, + {"O2L-AFP", L("Auto Fire Extinguishing System")}, }; enum FIRMWARE_STASUS @@ -216,6 +217,7 @@ MachineInfoPanel::MachineInfoPanel(wxWindow* parent, wxWindowID id, const wxPoin createCuttingWidgets(m_main_left_sizer); createLaserWidgets(m_main_left_sizer); createAirPumpWidgets(m_main_left_sizer); + createExtinguishWidgets(m_main_left_sizer); m_main_sizer->Add(m_main_left_sizer, 1, wxEXPAND, 0); @@ -389,6 +391,27 @@ void MachineInfoPanel::createLaserWidgets(wxBoxSizer* main_left_sizer) main_left_sizer->Add(m_laser_sizer, 0, wxEXPAND, 0); } +void MachineInfoPanel::createExtinguishWidgets(wxBoxSizer* main_left_sizer) +{ + m_extinguish_line_above = new wxStaticLine(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL); + m_extinguish_line_above->SetBackgroundColour(wxColour(206, 206, 206)); + main_left_sizer->Add(m_extinguish_line_above, 0, wxEXPAND | wxLEFT, FromDIP(40)); + + m_extinguish_img = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(200), FromDIP(200))); + m_extinguish_img->SetBitmap(m_img_extinguish.bmp()); + + wxBoxSizer* content_sizer = new wxBoxSizer(wxVERTICAL); + content_sizer->Add(0, 40, 0, wxEXPAND, FromDIP(5)); + m_extinguish_version = new uiDeviceUpdateVersion(this, wxID_ANY); + content_sizer->Add(m_extinguish_version, 0, wxEXPAND, 0); + + m_extinguish_sizer = new wxBoxSizer(wxHORIZONTAL); + m_extinguish_sizer->Add(m_extinguish_img, 0, wxALIGN_TOP | wxALL, FromDIP(5)); + m_extinguish_sizer->Add(content_sizer, 1, wxEXPAND, 0); + + main_left_sizer->Add(m_extinguish_sizer, 0, wxEXPAND, 0); +} + void MachineInfoPanel::msw_rescale() { rescale_bitmaps(); @@ -421,6 +444,7 @@ void MachineInfoPanel::init_bitmaps() m_img_laser = ScalableBitmap(this, "laser", 160); m_img_cutting = ScalableBitmap(this, "cut", 160); + m_img_extinguish = ScalableBitmap(this, "extinguish", 160); upgrade_green_icon = ScalableBitmap(this, "monitor_upgrade_online", 5); upgrade_gray_icon = ScalableBitmap(this, "monitor_upgrade_offline", 5); @@ -516,6 +540,7 @@ void MachineInfoPanel::update(MachineObject* obj) update_air_pump(obj); update_cut(obj); update_laszer(obj); + update_extinguish(obj); //update progress int upgrade_percent = obj->get_upgrade_percent(); @@ -1043,6 +1068,19 @@ void MachineInfoPanel::update_laszer(MachineObject* obj) } } +void MachineInfoPanel::update_extinguish(MachineObject* obj) +{ + if (obj && obj->extinguish_version_info.isValid()) + { + m_extinguish_version->UpdateInfo(obj->extinguish_version_info); + show_extinguish(true); + } + else + { + show_extinguish(false); + } +} + void MachineInfoPanel::show_status(int status, std::string upgrade_status_str) { if (last_status == status && last_status_str == upgrade_status_str) return; @@ -1167,6 +1205,17 @@ void MachineInfoPanel::show_laszer(bool show) } } +void MachineInfoPanel::show_extinguish(bool show) +{ + if (m_extinguish_version->IsShown() != show) + { + m_extinguish_img->Show(show); + m_extinguish_line_above->Show(show); + m_extinguish_version->Show(show); + } +} + + void MachineInfoPanel::on_sys_color_changed() { if (m_obj) { diff --git a/src/slic3r/GUI/UpgradePanel.hpp b/src/slic3r/GUI/UpgradePanel.hpp index f25ac69b08..f16a7db23c 100644 --- a/src/slic3r/GUI/UpgradePanel.hpp +++ b/src/slic3r/GUI/UpgradePanel.hpp @@ -126,6 +126,12 @@ protected: wxStaticLine* m_laser_line_above = nullptr;; uiDeviceUpdateVersion* m_laser_version = nullptr; + /* fire extinguish*/ + wxBoxSizer* m_extinguish_sizer = nullptr; + wxStaticBitmap* m_extinguish_img = nullptr; + wxStaticLine* m_extinguish_line_above = nullptr;; + uiDeviceUpdateVersion* m_extinguish_version = nullptr; + /* upgrade widgets */ wxBoxSizer* m_upgrading_sizer; wxStaticText * m_staticText_upgrading_info; @@ -146,6 +152,7 @@ protected: ScalableBitmap m_img_air_pump; ScalableBitmap m_img_cutting; ScalableBitmap m_img_laser; + ScalableBitmap m_img_extinguish; ScalableBitmap upgrade_gray_icon; ScalableBitmap upgrade_green_icon; ScalableBitmap upgrade_yellow_icon; @@ -175,16 +182,10 @@ public: void update(MachineObject *obj); void update_version_text(MachineObject *obj); void update_ams_ext(MachineObject *obj); - void update_air_pump(MachineObject* obj); - void update_cut(MachineObject* obj); - void update_laszer(MachineObject* obj); void show_status(int status, std::string upgrade_status_str = ""); void show_ams(bool show = false, bool force_update = false); void show_ext(bool show = false, bool force_update = false); void show_extra_ams(bool show = false, bool force_update = false); - void show_air_pump(bool show = true); - void show_cut(bool show = true); - void show_laszer(bool show = true); void on_upgrade_firmware(wxCommandEvent &event); void on_consisitency_upgrade_firmware(wxCommandEvent &event); @@ -206,6 +207,17 @@ private: void createAirPumpWidgets(wxBoxSizer* main_left_sizer); void createCuttingWidgets(wxBoxSizer* main_left_sizer); void createLaserWidgets(wxBoxSizer* main_left_sizer); + void createExtinguishWidgets(wxBoxSizer* main_left_sizer); + + void update_air_pump(MachineObject* obj); + void update_cut(MachineObject* obj); + void update_laszer(MachineObject* obj); + void update_extinguish(MachineObject* obj); + + void show_air_pump(bool show = true); + void show_cut(bool show = true); + void show_laszer(bool show = true); + void show_extinguish(bool show = true); }; //enum UpgradeMode {