FIX: update ams select handler for single extruder

Jira: [STUDIO-14218]
Change-Id: I92ae9192162fbd614ddc8d0f640de5940f7cd24f
(cherry picked from commit c46e6f2b9f68c30268a5c8f557f793935919a6df)
This commit is contained in:
hemai 2025-08-25 19:12:34 +08:00 committed by Noisyfox
parent 8dd88df97b
commit 8bf60469b4
2 changed files with 12 additions and 7 deletions

View file

@ -1002,7 +1002,7 @@ ExtruderType CalibrationPresetPage::get_extruder_type(int extruder_id) const
return ExtruderType::etDirectDrive;
}
wxBoxSizer* CalibrationPresetPage::create_ams_items_sizer(wxPanel* ams_preview_panel, std::vector<AMSPreview*> &ams_preview_list, std::vector<AMSinfo> &ams_info, int nozzle_id){
wxBoxSizer* CalibrationPresetPage::create_ams_items_sizer(MachineObject* obj, wxPanel* ams_preview_panel, std::vector<AMSPreview*> &ams_preview_list, std::vector<AMSinfo> &ams_info, int nozzle_id){
/* clear ams_preview_list */
for (auto &item : ams_preview_list) {
delete item;
@ -1017,8 +1017,13 @@ wxBoxSizer* CalibrationPresetPage::create_ams_items_sizer(wxPanel* ams_preview_p
preview_ams_item->Open();
ams_preview_list.push_back(preview_ams_item);
std::string ams_id = preview_ams_item->get_ams_id();
preview_ams_item->Bind(wxEVT_LEFT_DOWN, [this, ams_id, nozzle_id](wxMouseEvent &e) {
update_multi_extruder_filament_combobox(ams_id, nozzle_id);
bool is_single = !obj->is_multi_extruders();
preview_ams_item->Bind(wxEVT_LEFT_DOWN, [this, ams_id, nozzle_id, is_single](wxMouseEvent &e) {
if(is_single){
update_filament_combobox(ams_id);
} else{
update_multi_extruder_filament_combobox(ams_id, nozzle_id);
}
e.Skip();
});
ams_items_sizer->Add(preview_ams_item, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(6));
@ -2313,14 +2318,14 @@ void CalibrationPresetPage::sync_ams_info(MachineObject* obj)
}
/* update ams preview */
auto ams_items_sizer = create_ams_items_sizer(m_multi_ams_panel, m_ams_preview_list, ams_info, MAIN_EXTRUDER_ID);
auto ams_items_sizer = create_ams_items_sizer(obj, m_multi_ams_panel, m_ams_preview_list, ams_info, MAIN_EXTRUDER_ID);
auto multi_ams_sizer = new wxBoxSizer(wxVERTICAL);
multi_ams_sizer->Add(ams_items_sizer, 0);
multi_ams_sizer->AddSpacer(FromDIP(10));
m_multi_ams_panel->SetSizer(multi_ams_sizer);
m_main_ams_preview_panel->SetSizer(create_ams_items_sizer(m_main_ams_preview_panel, m_main_ams_preview_list, main_ams_info, MAIN_EXTRUDER_ID));
m_deputy_ams_preview_panel->SetSizer(create_ams_items_sizer(m_deputy_ams_preview_panel, m_deputy_ams_preview_list, deputy_ams_info, DEPUTY_EXTRUDER_ID));
m_main_ams_preview_panel->SetSizer(create_ams_items_sizer(obj, m_main_ams_preview_panel, m_main_ams_preview_list, main_ams_info, MAIN_EXTRUDER_ID));
m_deputy_ams_preview_panel->SetSizer(create_ams_items_sizer(obj, m_deputy_ams_preview_panel, m_deputy_ams_preview_list, deputy_ams_info, DEPUTY_EXTRUDER_ID));
Layout();
}

View file

@ -234,7 +234,7 @@ public:
protected:
void create_selection_panel(wxWindow* parent);
void create_filament_list_panel(wxWindow* parent);
wxBoxSizer* create_ams_items_sizer(wxPanel* ams_preview_panel, std::vector<AMSPreview*> &ams_preview_list, std::vector<AMSinfo> &ams_info, int nozzle_id);
wxBoxSizer* create_ams_items_sizer(MachineObject* obj, wxPanel* ams_preview_panel, std::vector<AMSPreview*> &ams_preview_list, std::vector<AMSinfo> &ams_info, int nozzle_id);
void init_selection_values();
void update_filament_combobox(std::string ams_id = "");