From f97931d191ecb7a40af7e6176b80384328d2143b Mon Sep 17 00:00:00 2001 From: "xin.zhang" Date: Tue, 29 Apr 2025 14:13:40 +0800 Subject: [PATCH] =?UTF-8?q?NEW:=20add=20some=20parts=EF=BC=9Bmodify=20pane?= =?UTF-8?q?l=20layouts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit jira: [STUDIO-11578] Change-Id: Ifdcf6d285d763a15ed153508cb4f5f66069144bc --- src/slic3r/GUI/DeviceManager.cpp | 17 +-- src/slic3r/GUI/DeviceManager.hpp | 4 + .../GUI/DeviceTab/uiDeviceUpdateVersion.cpp | 38 +++--- src/slic3r/GUI/UpgradePanel.cpp | 110 +++++++++++++++--- src/slic3r/GUI/UpgradePanel.hpp | 35 +++++- 5 files changed, 156 insertions(+), 48 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 7fe9e8fbe..43f8dc6d0 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -1436,22 +1436,23 @@ void MachineObject::clear_version_info() air_pump_version_info = ModuleVersionInfo(); laser_version_info = ModuleVersionInfo(); cutting_module_version_info = ModuleVersionInfo(); + extinguish_version_info = ModuleVersionInfo(); + rotary_version_info = ModuleVersionInfo(); module_vers.clear(); } void MachineObject::store_version_info(const ModuleVersionInfo& info) { - if (info.isAirPump()) - { + if (info.isAirPump()) { air_pump_version_info = info; - } - else if (info.isLaszer()) - { + } else if (info.isLaszer()) { laser_version_info = info; - } - else if (info.isCuttingModule()) - { + } else if (info.isCuttingModule()) { cutting_module_version_info = info; + } else if (info.isExtinguishSystem()) { + extinguish_version_info = info; + } else if (info.isRotary()) { + rotary_version_info = info; } module_vers.emplace(info.name, info); diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index 492af82e8..77d09a45d 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -593,6 +593,8 @@ public: bool isAirPump() const { return product_name.Contains("Air Pump"); } bool isLaszer() const { return product_name.Contains("Laser"); } bool isCuttingModule() const { return product_name.Contains("Cutting Module"); } + bool isExtinguishSystem() const { return product_name.Contains("Extinguishing System"); }// Auto Fire Extinguishing System + bool isRotary() const { return product_name.Contains("Rotary"); }// Rotary Attachment }; enum SdcardState { @@ -849,6 +851,8 @@ public: ModuleVersionInfo air_pump_version_info; ModuleVersionInfo laser_version_info; ModuleVersionInfo cutting_module_version_info; + ModuleVersionInfo extinguish_version_info; + ModuleVersionInfo rotary_version_info; std::map module_vers; std::map new_ver_list; std::map extrusion_ratio_map; diff --git a/src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.cpp b/src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.cpp index 3d0feac74..9b51ff9a2 100644 --- a/src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.cpp +++ b/src/slic3r/GUI/DeviceTab/uiDeviceUpdateVersion.cpp @@ -71,33 +71,39 @@ void uiDeviceUpdateVersion::CreateWidgets() wxStaticText* serial_text = new wxStaticText(this, wxID_ANY, _L(SERIAL_STR)); wxStaticText* version_text = new wxStaticText(this, wxID_ANY, _L(VERSION_STR)); - // The main sizer - wxFlexGridSizer* main_sizer = new wxFlexGridSizer(3, 3, 0, 0); - main_sizer->AddGrowableCol(1); - main_sizer->SetFlexibleDirection(wxHORIZONTAL); - main_sizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED); + // Use bold font + wxFont font = this->GetFont(); + font.SetWeight(wxFONTWEIGHT_BOLD); + serial_text->SetFont(font); + version_text->SetFont(font); - main_sizer->Add(m_dev_name, 0, wxALIGN_RIGHT | wxALL, FromDIP(5)); - main_sizer->Add(0, 0, wxALL, wxEXPAND); - main_sizer->Add(0, 0, wxALL, wxEXPAND); + // The grid sizer + wxFlexGridSizer* grid_sizer = new wxFlexGridSizer(2, 3, 0, 0); + //grid_sizer->AddGrowableCol(1); + grid_sizer->SetFlexibleDirection(wxHORIZONTAL); + grid_sizer->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED); - main_sizer->Add(serial_text, 0, wxALIGN_RIGHT | wxALL, FromDIP(5)); - main_sizer->Add(m_dev_snl, 0, wxALIGN_LEFT | wxALL, FromDIP(5)); - main_sizer->Add(0, 0, wxALL, wxEXPAND); + grid_sizer->Add(serial_text, 0, wxALIGN_RIGHT | wxALL, FromDIP(5)); + grid_sizer->Add(m_dev_snl, 0, wxALIGN_LEFT | wxALL, FromDIP(5)); + grid_sizer->Add(0, 0, wxALL, wxEXPAND); m_dev_upgrade_indicator = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(5), FromDIP(5))); m_dev_upgrade_indicator->SetBitmap(ScalableBitmap(this, "monitor_upgrade_online", 5).bmp()); wxBoxSizer* version_hsizer = new wxBoxSizer(wxHORIZONTAL); version_hsizer->Add(m_dev_upgrade_indicator, 0, wxALIGN_CENTER_VERTICAL); - version_hsizer->AddSpacer(FromDIP(5)); - version_hsizer->Add(version_text, 0); + version_hsizer->Add(version_text, 0, wxALIGN_RIGHT); - main_sizer->Add(version_hsizer, 0, wxALIGN_RIGHT | wxALL, FromDIP(5)); - main_sizer->Add(m_dev_version, 0, wxALIGN_LEFT | wxALL, FromDIP(5)); - main_sizer->Add(0, 0, wxALL, wxEXPAND); + grid_sizer->Add(version_hsizer, 0, wxALIGN_RIGHT | wxALL, FromDIP(5)); + grid_sizer->Add(m_dev_version, 0, wxALIGN_LEFT | wxALL, FromDIP(5)); + grid_sizer->Add(0, 0, wxALL, wxEXPAND); // Updating + wxSizer* main_sizer = new wxBoxSizer(wxVERTICAL); + main_sizer->AddSpacer(FromDIP(20)); + main_sizer->Add(m_dev_name, 0, wxALIGN_LEFT | wxALL, FromDIP(5)); + main_sizer->Add(grid_sizer, 0, wxALIGN_LEFT, FromDIP(5)); + SetSizer(main_sizer); Layout(); } \ No newline at end of file diff --git a/src/slic3r/GUI/UpgradePanel.cpp b/src/slic3r/GUI/UpgradePanel.cpp index dc4c64cbc..eef9913f2 100644 --- a/src/slic3r/GUI/UpgradePanel.cpp +++ b/src/slic3r/GUI/UpgradePanel.cpp @@ -23,6 +23,8 @@ static const std::unordered_map ACCESSORY_DISPLAY_STR = { {"O2L_PCM", L("Cutting Module")}, {"O2L_ACM", "Active Cutting Module"}, {"O2L_UCM", "Ultrasonic Cutting Module"}, + {"O2L-LFA", L("Rotary Attachment")}, + {"O2L-AFP",L("Auto Fire Extinguishing System")} }; enum FIRMWARE_STASUS @@ -213,6 +215,8 @@ 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); + createRotaryWidgets(m_main_left_sizer); m_main_sizer->Add(m_main_left_sizer, 1, wxEXPAND, 0); @@ -333,7 +337,6 @@ void MachineInfoPanel::createAirPumpWidgets(wxBoxSizer* main_left_sizer) m_air_pump_img->SetBitmap(m_img_air_pump.bmp()); wxBoxSizer* content_sizer = new wxBoxSizer(wxVERTICAL); - content_sizer->Add(0, 40, 0, wxEXPAND, FromDIP(5)); m_air_pump_version = new uiDeviceUpdateVersion(this, wxID_ANY); content_sizer->Add(m_air_pump_version, 0, wxEXPAND, 0); @@ -354,7 +357,6 @@ void MachineInfoPanel::createCuttingWidgets(wxBoxSizer* main_left_sizer) m_cutting_img->SetBitmap(m_img_cutting.bmp()); wxBoxSizer* content_sizer = new wxBoxSizer(wxVERTICAL); - content_sizer->Add(0, 40, 0, wxEXPAND, FromDIP(5)); m_cutting_version = new uiDeviceUpdateVersion(this, wxID_ANY); content_sizer->Add(m_cutting_version, 0, wxEXPAND, 0); @@ -375,7 +377,6 @@ void MachineInfoPanel::createLaserWidgets(wxBoxSizer* main_left_sizer) m_lazer_img->SetBitmap(m_img_laser.bmp()); wxBoxSizer* content_sizer = new wxBoxSizer(wxVERTICAL); - content_sizer->Add(0, 40, 0, wxEXPAND, FromDIP(5)); m_laser_version = new uiDeviceUpdateVersion(this, wxID_ANY); content_sizer->Add(m_laser_version, 0, wxEXPAND, 0); @@ -386,6 +387,46 @@ 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); + 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::createRotaryWidgets(wxBoxSizer* main_left_sizer) +{ + m_rotary_line_above = new wxStaticLine(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL); + m_rotary_line_above->SetBackgroundColour(wxColour(206, 206, 206)); + main_left_sizer->Add(m_rotary_line_above, 0, wxEXPAND | wxLEFT, FromDIP(40)); + + m_rotary_img = new wxStaticBitmap(this, wxID_ANY, wxNullBitmap, wxDefaultPosition, wxSize(FromDIP(200), FromDIP(200))); + m_rotary_img->SetBitmap(m_img_rotary.bmp()); + + wxBoxSizer* content_sizer = new wxBoxSizer(wxVERTICAL); + m_rotary_version = new uiDeviceUpdateVersion(this, wxID_ANY); + content_sizer->Add(m_rotary_version, 0, wxEXPAND, 0); + + m_rotary_sizer = new wxBoxSizer(wxHORIZONTAL); + m_rotary_sizer->Add(m_rotary_img, 0, wxALIGN_TOP | wxALL, FromDIP(5)); + m_rotary_sizer->Add(content_sizer, 1, wxEXPAND, 0); + + main_left_sizer->Add(m_rotary_sizer, 0, wxEXPAND, 0); +} + void MachineInfoPanel::msw_rescale() { rescale_bitmaps(); @@ -418,6 +459,8 @@ void MachineInfoPanel::init_bitmaps() m_img_laser = ScalableBitmap(this, "laser", 160); m_img_cutting = ScalableBitmap(this, "cut", 160); + m_img_extinguish = ScalableBitmap(this, "cut", 160);//TODO + m_img_rotary = ScalableBitmap(this, "cut", 160);//TODO upgrade_green_icon = ScalableBitmap(this, "monitor_upgrade_online", 5); upgrade_gray_icon = ScalableBitmap(this, "monitor_upgrade_offline", 5); @@ -513,6 +556,8 @@ void MachineInfoPanel::update(MachineObject* obj) update_air_pump(obj); update_cut(obj); update_laszer(obj); + update_extinguish(obj); + update_rotary(obj); //update progress int upgrade_percent = obj->get_upgrade_percent(); @@ -1000,43 +1045,54 @@ void MachineInfoPanel::update_ams_ext(MachineObject *obj) void MachineInfoPanel::update_air_pump(MachineObject* obj) { - if (obj && obj->air_pump_version_info.isValid()) - { + if (obj && obj->air_pump_version_info.isValid()) { m_air_pump_version->UpdateInfo(obj->air_pump_version_info); show_air_pump(true); - } - else - { + } else { show_air_pump(false); } } void MachineInfoPanel::update_cut(MachineObject* obj) { - if (obj && obj->cutting_module_version_info.isValid()) - { + if (obj && obj->cutting_module_version_info.isValid()) { m_cutting_version->UpdateInfo(obj->cutting_module_version_info); show_cut(true); - } - else - { + } else { show_cut(false); } } void MachineInfoPanel::update_laszer(MachineObject* obj) { - if (obj && obj->laser_version_info.isValid()) - { + if (obj && obj->laser_version_info.isValid()) { m_laser_version->UpdateInfo(obj->laser_version_info); show_laszer(true); - } - else - { + } else { show_laszer(false); } } +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::update_rotary(MachineObject* obj) +{ + if (obj && obj->rotary_version_info.isValid()) { + m_rotary_version->UpdateInfo(obj->rotary_version_info); + show_rotary(true); + } else { + show_rotary(false); + } +} + void MachineInfoPanel::show_status(int status, std::string upgrade_status_str) { if (last_status == status && last_status_str == upgrade_status_str) return; @@ -1161,6 +1217,24 @@ 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::show_rotary(bool show) +{ + if (m_rotary_version->IsShown() != show) { + m_rotary_img->Show(show); + m_rotary_line_above->Show(show); + m_rotary_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 7e9c84c80..1f3cb6923 100644 --- a/src/slic3r/GUI/UpgradePanel.hpp +++ b/src/slic3r/GUI/UpgradePanel.hpp @@ -126,6 +126,18 @@ 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; + + /* rotary attachment*/ + wxBoxSizer* m_rotary_sizer = nullptr; + wxStaticBitmap* m_rotary_img = nullptr; + wxStaticLine* m_rotary_line_above = nullptr;; + uiDeviceUpdateVersion* m_rotary_version = nullptr; + /* upgrade widgets */ wxBoxSizer* m_upgrading_sizer; wxStaticText * m_staticText_upgrading_info; @@ -146,6 +158,8 @@ protected: ScalableBitmap m_img_air_pump; ScalableBitmap m_img_cutting; ScalableBitmap m_img_laser; + ScalableBitmap m_img_extinguish; + ScalableBitmap m_img_rotary; ScalableBitmap upgrade_gray_icon; ScalableBitmap upgrade_green_icon; ScalableBitmap upgrade_yellow_icon; @@ -175,16 +189,11 @@ 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 +215,20 @@ 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 createRotaryWidgets(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 update_rotary(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); + void show_rotary(bool show = true); }; //enum UpgradeMode {