From c12b4f13911a7f6057eced54dba9e41cf75985ea Mon Sep 17 00:00:00 2001 From: Kunlong Ma Date: Sun, 12 Jan 2025 17:43:22 +0800 Subject: [PATCH] FIX: hide fan when device not in fdm JIRA: none Change-Id: I14a6e01b4e0950ca1bc3c805fe00313cfd7caf06 --- src/slic3r/GUI/DeviceManager.cpp | 3 ++- src/slic3r/GUI/DeviceManager.hpp | 3 +++ src/slic3r/GUI/StatusPanel.cpp | 19 ++++++++++++++----- src/slic3r/GUI/Widgets/FanControl.cpp | 10 +++++++--- src/slic3r/GUI/Widgets/FanControl.hpp | 2 +- 5 files changed, 27 insertions(+), 10 deletions(-) diff --git a/src/slic3r/GUI/DeviceManager.cpp b/src/slic3r/GUI/DeviceManager.cpp index 99ddf94dd..32d2d655f 100644 --- a/src/slic3r/GUI/DeviceManager.cpp +++ b/src/slic3r/GUI/DeviceManager.cpp @@ -5906,7 +5906,8 @@ void MachineObject::parse_new_info(json print) } if (device.contains("type")) { - int type = device["type"]; //FDM:1<<0 Laser:1<< Cut:1<<2 + int type = device["type"].get(); // FDM:1<<0 Laser:1<< Cut:1<<2 + is_fdm = type & 1; } if (device.contains("bed_temp")) { diff --git a/src/slic3r/GUI/DeviceManager.hpp b/src/slic3r/GUI/DeviceManager.hpp index f39ff1c4b..7e537a2dc 100644 --- a/src/slic3r/GUI/DeviceManager.hpp +++ b/src/slic3r/GUI/DeviceManager.hpp @@ -1020,6 +1020,9 @@ public: bool is_makeworld_subtask(); + /* device type */ + bool is_fdm{ true }; + inline bool is_fdm_type() const { return is_fdm; } int m_plate_index { -1 }; std::string m_gcode_file; diff --git a/src/slic3r/GUI/StatusPanel.cpp b/src/slic3r/GUI/StatusPanel.cpp index 86c657145..4c2edc305 100644 --- a/src/slic3r/GUI/StatusPanel.cpp +++ b/src/slic3r/GUI/StatusPanel.cpp @@ -2861,12 +2861,21 @@ void StatusPanel::update_misc_ctrl(MachineObject *obj) // update extruder icon update_extruder_status(obj); - bool is_suppt_part_fun = true; - bool is_suppt_aux_fun = obj->is_support_aux_fan; - bool is_suppt_cham_fun = obj->is_support_chamber_fan; - if (m_fan_control_popup) { - m_fan_control_popup->update_fan_data(obj); + if (obj->is_fdm_type()) { + if (!m_fan_panel->IsShown()) + m_fan_panel->Show(); + bool is_suppt_part_fun = true; + bool is_suppt_aux_fun = obj->is_support_aux_fan; + bool is_suppt_cham_fun = obj->is_support_chamber_fan; + if (m_fan_control_popup) { m_fan_control_popup->update_fan_data(obj); } + } else { + if (m_fan_panel->IsShown()) { + m_fan_panel->Hide(); + } + if (m_fan_control_popup && m_fan_control_popup->Show()) + m_fan_control_popup->Hide(); } + //update cham fan /*other*/ diff --git a/src/slic3r/GUI/Widgets/FanControl.cpp b/src/slic3r/GUI/Widgets/FanControl.cpp index 49b9b09cf..a58e6e1fb 100644 --- a/src/slic3r/GUI/Widgets/FanControl.cpp +++ b/src/slic3r/GUI/Widgets/FanControl.cpp @@ -563,8 +563,8 @@ void FanControlNew::post_event() Description:FanControlPopupNew **************************************************/ static void nop_deleter_fan_control_popup(FanControlPopupNew *) {} -FanControlPopupNew::FanControlPopupNew(wxWindow* parent, MachineObject* obj,AirDuctData data) - :PopupWindow(parent, wxBORDER_NONE) +FanControlPopupNew::FanControlPopupNew(wxWindow* parent, MachineObject* obj, const AirDuctData& data) + : PopupWindow(parent, wxBORDER_NONE) { SetBackgroundColour(*wxWHITE); init_names(); @@ -573,8 +573,12 @@ FanControlPopupNew::FanControlPopupNew(wxWindow* parent, MachineObject* obj,AirD m_obj = obj; m_sizer_main = new wxBoxSizer(wxVERTICAL); + + int part_size = data.parts.size(); + int grid_column = part_size > 1 ? 2 : 1; + m_radio_btn_sizer = new wxGridSizer(0, 2, FromDIP(3), FromDIP(3)); - m_sizer_fanControl = new wxGridSizer(0, 2, FromDIP(3), FromDIP(10)); + m_sizer_fanControl = new wxGridSizer(0, grid_column, FromDIP(3), FromDIP(10)); m_mode_sizer = new wxBoxSizer(wxHORIZONTAL); diff --git a/src/slic3r/GUI/Widgets/FanControl.hpp b/src/slic3r/GUI/Widgets/FanControl.hpp index 98f8f7dbf..e0752eaf4 100644 --- a/src/slic3r/GUI/Widgets/FanControl.hpp +++ b/src/slic3r/GUI/Widgets/FanControl.hpp @@ -175,7 +175,7 @@ public: class FanControlPopupNew : public PopupWindow { public: - FanControlPopupNew(wxWindow* parent, MachineObject* obj, AirDuctData data); + FanControlPopupNew(wxWindow* parent, MachineObject* obj, const AirDuctData& data); ~FanControlPopupNew() {};