FIX: only sort system filaments

Change-Id: I3a111d3b001b9764432ee5fc18af78e459b9105d
Github: 5318
This commit is contained in:
chunmao.guo 2025-01-06 15:01:30 +08:00 committed by lane.wei
parent 9c81c2cf5e
commit cb1138f66f
1 changed files with 22 additions and 21 deletions

View File

@ -1155,27 +1155,28 @@ void PlaterPresetComboBox::update()
if (m_type == Preset::TYPE_FILAMENT) {
std::vector<std::map<wxString, wxBitmap *>::value_type const*> list(presets.size(), nullptr);
std::transform(presets.begin(), presets.end(), list.begin(), [](auto & pair) { return &pair; });
std::sort(list.begin(), list.end(), [&filament_orders, &preset_filament_vendors, &first_vendors, &preset_filament_types, &first_types](auto *l, auto *r) {
{ // Compare order
auto iter1 = std::find(filament_orders.begin(), filament_orders.end(), l->first);
auto iter2 = std::find(filament_orders.begin(), filament_orders.end(), r->first);
if (iter1 != iter2)
return iter1 < iter2;
}
{ // Compare vendor
auto iter1 = std::find(first_vendors.begin(), first_vendors.end(), preset_filament_vendors[l->first]);
auto iter2 = std::find(first_vendors.begin(), first_vendors.end(), preset_filament_vendors[r->first]);
if (iter1 != iter2)
return iter1 < iter2;
}
{ // Compare type
auto iter1 = std::find(first_types.begin(), first_types.end(), preset_filament_types[l->first]);
auto iter2 = std::find(first_types.begin(), first_types.end(), preset_filament_types[r->first]);
if (iter1 != iter2)
return iter1 < iter2;
}
return l->first < r->first;
});
if (group == "System presets")
std::sort(list.begin(), list.end(), [&filament_orders, &preset_filament_vendors, &first_vendors, &preset_filament_types, &first_types](auto *l, auto *r) {
{ // Compare order
auto iter1 = std::find(filament_orders.begin(), filament_orders.end(), l->first);
auto iter2 = std::find(filament_orders.begin(), filament_orders.end(), r->first);
if (iter1 != iter2)
return iter1 < iter2;
}
{ // Compare vendor
auto iter1 = std::find(first_vendors.begin(), first_vendors.end(), preset_filament_vendors[l->first]);
auto iter2 = std::find(first_vendors.begin(), first_vendors.end(), preset_filament_vendors[r->first]);
if (iter1 != iter2)
return iter1 < iter2;
}
{ // Compare type
auto iter1 = std::find(first_types.begin(), first_types.end(), preset_filament_types[l->first]);
auto iter2 = std::find(first_types.begin(), first_types.end(), preset_filament_types[r->first]);
if (iter1 != iter2)
return iter1 < iter2;
}
return l->first < r->first;
});
for (auto it : list) {
SetItemTooltip(Append(it->first, *it->second), preset_descriptions[it->first]);
validate_selection(it->first == selected);