From 34ed8441a16499f922e82b6c83f140eda58055a5 Mon Sep 17 00:00:00 2001 From: "zhimin.zeng" Date: Fri, 17 Jan 2025 15:04:52 +0800 Subject: [PATCH] FIX: auto sync extruder list after connect printer when enter in prepare page jira: none Change-Id: I3dd0ac4fbc283d5c4b8e85d01724251cc1a7131e --- src/slic3r/GUI/MainFrame.cpp | 6 ++++++ src/slic3r/GUI/Monitor.cpp | 5 +++-- src/slic3r/GUI/Plater.cpp | 6 +++--- src/slic3r/GUI/Plater.hpp | 7 ++++++- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp index 95bcf9e67..587d54855 100644 --- a/src/slic3r/GUI/MainFrame.cpp +++ b/src/slic3r/GUI/MainFrame.cpp @@ -816,6 +816,12 @@ void MainFrame::update_layout() { // jump to 3deditor under preview_only mode if (evt.GetId() == tp3DEditor){ + Sidebar& sidebar = GUI::wxGetApp().sidebar(); + if (sidebar.need_auto_sync_after_connect_printer()) { + sidebar.set_need_auto_sync_after_connect_printer(false); + sidebar.sync_extruder_list(); + } + m_plater->update(true); if (!preview_only_hint()) diff --git a/src/slic3r/GUI/Monitor.cpp b/src/slic3r/GUI/Monitor.cpp index 3de9fb909..424aa9dd1 100644 --- a/src/slic3r/GUI/Monitor.cpp +++ b/src/slic3r/GUI/Monitor.cpp @@ -313,8 +313,9 @@ void MonitorPanel::select_machine(std::string machine_sn) obj_->last_cali_version = -1; obj_->reset_pa_cali_history_result(); obj_->reset_pa_cali_result(); - GUI::wxGetApp().sidebar().load_ams_list(obj_->dev_id, obj_); - GUI::wxGetApp().sidebar().auto_sync_extruder_list_on_connect_priner(obj_); + Sidebar &sidebar = GUI::wxGetApp().sidebar(); + sidebar.load_ams_list(obj_->dev_id, obj_); + sidebar.set_need_auto_sync_after_connect_printer(sidebar.need_auto_sync_extruder_list_after_connect_priner(obj_)); } Layout(); diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 31a8fd5dd..eebeff350 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -2764,7 +2764,7 @@ bool Sidebar::sync_extruder_list() return p->sync_extruder_list(); } -bool Sidebar::auto_sync_extruder_list_on_connect_priner(const MachineObject *obj) +bool Sidebar::need_auto_sync_extruder_list_after_connect_priner(const MachineObject *obj) { if(!obj) return false; @@ -2776,10 +2776,10 @@ bool Sidebar::auto_sync_extruder_list_on_connect_priner(const MachineObject *obj return false; } - if (preset_bundle->get_printer_extruder_count() <= 1) + if (preset_bundle->get_printer_extruder_count() <= 1 || !obj->is_multi_extruders()) return false; - return p->sync_extruder_list(); + return true; } void Sidebar::update_sync_status(const MachineObject *obj) diff --git a/src/slic3r/GUI/Plater.hpp b/src/slic3r/GUI/Plater.hpp index 35b4103b6..c20575c70 100644 --- a/src/slic3r/GUI/Plater.hpp +++ b/src/slic3r/GUI/Plater.hpp @@ -161,7 +161,7 @@ public: std::map build_filament_ams_list(MachineObject* obj); void sync_ams_list(bool is_from_big_sync_btn = false); bool sync_extruder_list(); - bool auto_sync_extruder_list_on_connect_priner(const MachineObject* obj); + bool need_auto_sync_extruder_list_after_connect_priner(const MachineObject* obj); void update_sync_status(const MachineObject* obj); void get_big_btn_sync_pos_size(wxPoint &pt, wxSize &size); void get_small_btn_sync_pos_size(wxPoint &pt, wxSize &size); @@ -210,6 +210,10 @@ public: void cancel_update_3d_state() { m_update_3d_state = false; } bool get_update_3d_state() { return m_update_3d_state; } void update_printer_thumbnail(); + + bool need_auto_sync_after_connect_printer() const { return m_need_auto_sync_after_connect_printer; } + void set_need_auto_sync_after_connect_printer(bool need_auto_sync) { m_need_auto_sync_after_connect_printer = need_auto_sync; } + private: struct priv; std::unique_ptr p; @@ -218,6 +222,7 @@ private: bool m_soft_first_start {true }; bool m_is_gcode_file{ false }; bool m_update_3d_state{false}; + bool m_need_auto_sync_after_connect_printer{false}; }; class Plater: public wxPanel