From 26bf483bfe089cc6730e1c1da452497feb320520 Mon Sep 17 00:00:00 2001 From: "chunmao.guo" Date: Mon, 8 Jul 2024 16:32:21 +0800 Subject: [PATCH] FIX: impl sync extruder information & fix something Change-Id: I5f7224f646729cba94505487d00015a8e48443c5 --- src/slic3r/GUI/Plater.cpp | 16 ++++++++++++++-- src/slic3r/GUI/Tab.cpp | 3 +++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 62cd73799..9ee96b722 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -685,8 +685,20 @@ void Sidebar::priv::sync_extruder_list() auto printer_tab = dynamic_cast(wxGetApp().get_tab(Preset::TYPE_PRINTER)); printer_tab->set_extruder_volume_type(0, NozzleVolumeType::nvtBigTraffic); printer_tab->set_extruder_volume_type(1, NozzleVolumeType::nvtNormal); - AMSCountPopupWindow::SetAMSCount(0, 0, 0); - AMSCountPopupWindow::SetAMSCount(1, 1, 1); + MachineObject *obj = wxGetApp().getDeviceManager()->get_selected_machine(); + if (obj == nullptr) { + MessageDialog dlg(this->plater, _L("Please select a printer in 'Device' page first."), _L("Sync extruder infomation"), wxOK); + dlg.ShowModal(); + return; + } + int left = 0, right = 0; + for (auto ams : obj->amsList) { + // Main (first) extruder at right + if (ams.second->nozzle == 0) ++right; + else ++left; + } + AMSCountPopupWindow::SetAMSCount(0, left, obj->vt_slot.size() > 1); + AMSCountPopupWindow::SetAMSCount(1, right, 1); AMSCountPopupWindow::UpdateAMSCount(0, m_left_ams_count); AMSCountPopupWindow::UpdateAMSCount(1, m_right_ams_count); } diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 8dd047e76..3b0d282e1 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -3926,6 +3926,7 @@ void TabPrinter::build_unregular_pages(bool from_initial_build/* = false*/) // } //} + on_value_change(opt_key, value); update_dirty(); update(); }; @@ -5010,6 +5011,8 @@ bool Tab::tree_sel_change_delayed(wxCommandEvent& event) // update_undo_buttons(); this->OnActivate(); m_parent->set_active_tab(this); + m_main_sizer->Show(m_extruder_switch, !m_active_page->m_opt_id_map.empty()); + GetParent()->Layout(); m_page_view->Thaw(); return false;