diff options
author | tamasmeszaros <meszaros.q@gmail.com> | 2020-01-23 19:43:18 +0300 |
---|---|---|
committer | tamasmeszaros <meszaros.q@gmail.com> | 2020-01-23 19:43:18 +0300 |
commit | b45e95877e9753b9f111c09001d49af1f3206cb2 (patch) | |
tree | 62a8cfb9a9d3a97b7ab665168ca90b75cbed0fa2 /src/slic3r/GUI/Preset.cpp | |
parent | cb39f6b212eab1be2b916fb8f9125a89818b252c (diff) | |
parent | a0e6afcee871d74de2d7dacb1e798215e62646ca (diff) |
Merge branch 'master' into lm_tm_hollowing
Diffstat (limited to 'src/slic3r/GUI/Preset.cpp')
-rw-r--r-- | src/slic3r/GUI/Preset.cpp | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/src/slic3r/GUI/Preset.cpp b/src/slic3r/GUI/Preset.cpp index b0e1f066b..e22675869 100644 --- a/src/slic3r/GUI/Preset.cpp +++ b/src/slic3r/GUI/Preset.cpp @@ -604,6 +604,7 @@ void PresetCollection::reset(bool delete_files) m_presets.erase(m_presets.begin() + m_num_default_presets, m_presets.end()); this->select_preset(0); } + m_map_alias_to_profile_name.clear(); m_map_system_profile_renamed.clear(); } @@ -948,15 +949,15 @@ PresetWithVendorProfile PresetCollection::get_preset_with_vendor_profile(const P const std::string& PresetCollection::get_preset_name_by_alias(const std::string& alias) const { - for (size_t i = this->m_presets.front().is_visible ? 0 : m_num_default_presets; i < this->m_presets.size(); ++i) { - const Preset& preset = this->m_presets[i]; - if (!preset.is_visible || (!preset.is_compatible && i != m_idx_selected)) - continue; - - if (preset.alias == alias) - return preset.name; - } - + for ( + // Find the 1st profile name with the alias. + auto it = Slic3r::lower_bound_by_predicate(m_map_alias_to_profile_name.begin(), m_map_alias_to_profile_name.end(), [&alias](auto &l){ return l.first < alias; }); + // Continue over all profile names with the same alias. + it != m_map_alias_to_profile_name.end() && it->first == alias; ++ it) + if (auto it_preset = this->find_preset_internal(it->second); + it_preset != m_presets.end() && it_preset->name == it->second && + it_preset->is_visible && (it_preset->is_compatible || (it_preset - m_presets.begin()) == m_idx_selected)) + return it_preset->name; return alias; } @@ -1430,6 +1431,14 @@ std::vector<std::string> PresetCollection::merge_presets(PresetCollection &&othe return duplicates; } +void PresetCollection::update_map_alias_to_profile_name() +{ + m_map_alias_to_profile_name.clear(); + for (const Preset &preset : m_presets) + m_map_alias_to_profile_name.emplace_back(preset.alias, preset.name); + std::sort(m_map_alias_to_profile_name.begin(), m_map_alias_to_profile_name.end(), [](auto &l, auto &r) { return l.first < r.first; }); +} + void PresetCollection::update_map_system_profile_renamed() { m_map_system_profile_renamed.clear(); |