From 0f55fbbb6846e077e61db9a91bd2e0382ee551ef Mon Sep 17 00:00:00 2001 From: Igor Mammedov Date: Sun, 19 Apr 2026 20:12:06 +0200 Subject: [PATCH] CrealityPrint: auto-match gcode filaments to CFS slots by color and type When the filament mapping dialog opens, automatically select the best matching CFS slot for each gcode filament by comparing color and type. Falls back to positional index if no exact match is found. Signed-off-by: Igor Mammedov --- src/slic3r/GUI/PrintHostDialogs.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/slic3r/GUI/PrintHostDialogs.cpp b/src/slic3r/GUI/PrintHostDialogs.cpp index 25b3aa1b737..5634358e54e 100644 --- a/src/slic3r/GUI/PrintHostDialogs.cpp +++ b/src/slic3r/GUI/PrintHostDialogs.cpp @@ -1102,7 +1102,16 @@ void CrealityPrintHostSendDialog::init() wxString label_str = wxString::Format("%s - %s", slot.tool_id.substr(1).c_str(), slot.type.c_str()); combo->Append(label_str, bmp ? *bmp : wxNullBitmap); } - combo->SetSelection((i < (int)m_printer_slots.size()) ? i : 0); + // Find best default: exact color+type match, else positional + int default_sel = (i < (int)m_printer_slots.size()) ? i : 0; + for (int s = 0; s < (int)m_printer_slots.size(); s++) { + if (m_printer_slots[s].type == gc_type && + wxColour(m_printer_slots[s].color) == wxColour(gc_color)) { + default_sel = s; + break; + } + } + combo->SetSelection(default_sel); row_sizer->Add(combo, 0, wxALIGN_CENTER_VERTICAL); group_sizer->Add(row_sizer);