From fb8f2555d9e3da43c6e058df008a691bffa6bb55 Mon Sep 17 00:00:00 2001 From: David Kocik Date: Mon, 7 Feb 2022 12:51:56 +0100 Subject: [PATCH] common presets marker in sidebar tab --- src/libslic3r/Preset.cpp | 4 ++-- src/slic3r/GUI/PresetComboBoxes.cpp | 25 +++++++++++++++++++++---- 2 files changed, 23 insertions(+), 6 deletions(-) diff --git a/src/libslic3r/Preset.cpp b/src/libslic3r/Preset.cpp index 00f748f4c6..b5f569d46c 100644 --- a/src/libslic3r/Preset.cpp +++ b/src/libslic3r/Preset.cpp @@ -1113,14 +1113,14 @@ size_t PresetCollection::update_compatible_internal(const PresetWithVendorProfil m_idx_selected = size_t(-1); if (selected) preset_selected.is_compatible = preset_edited.is_compatible; - if (preset_edited.vendor->common_profile) { + if (preset_edited.vendor && preset_edited.vendor->common_profile) { indexes_of_common_presets.push_back(idx_preset); } } // filter out common generic profiles where profile with same alias and compability exists if (!indexes_of_common_presets.empty()) { for (size_t idx_preset = m_num_default_presets; idx_preset < m_presets.size(); ++idx_preset) { - if (!m_presets[idx_preset].vendor->common_profile && m_presets[idx_preset].is_compatible) { + if (m_presets[idx_preset].vendor && !m_presets[idx_preset].vendor->common_profile && m_presets[idx_preset].is_compatible) { std::string preset_alias = m_presets[idx_preset].alias; for (size_t idx_idx = 0; idx_idx < indexes_of_common_presets.size(); ++idx_idx) { size_t idx_common = indexes_of_common_presets[idx_idx]; diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index 2b53883be0..c6d880d2c2 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -785,6 +785,7 @@ void PlaterPresetComboBox::update() bool wide_icons = selected_preset && !selected_preset->is_compatible; std::map nonsys_presets; + std::map common_presets; wxString selected_user_preset; wxString tooltip; @@ -832,10 +833,18 @@ void PlaterPresetComboBox::update() const std::string name = preset.alias.empty() ? preset.name : preset.alias; if (preset.is_default || preset.is_system) { - Append(get_preset_name(preset), *bmp); - validate_selection(is_selected); - if (is_selected) - tooltip = from_u8(preset.name); + if (preset.vendor && preset.vendor->common_profile) { + common_presets.emplace(get_preset_name(preset), bmp); + if (is_selected) { + selected_user_preset = get_preset_name(preset); + tooltip = from_u8(preset.name); + } + } else { + Append(get_preset_name(preset), *bmp); + validate_selection(is_selected); + if (is_selected) + tooltip = from_u8(preset.name); + } } else { @@ -848,6 +857,14 @@ void PlaterPresetComboBox::update() if (i + 1 == m_collection->num_default_presets()) set_label_marker(Append(separator(L("System presets")), wxNullBitmap)); } + if (!common_presets.empty()) + { + set_label_marker(Append(separator(L("Common presets")), wxNullBitmap)); + for (std::map::iterator it = common_presets.begin(); it != common_presets.end(); ++it) { + Append(it->first, *it->second); + validate_selection(it->first == selected_user_preset); + } + } if (!nonsys_presets.empty()) { set_label_marker(Append(separator(L("User presets")), wxNullBitmap));