diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp index 61a42d06a..9155c3692 100644 --- a/src/slic3r/GUI/Plater.cpp +++ b/src/slic3r/GUI/Plater.cpp @@ -352,7 +352,10 @@ wxBitmapComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, wxSize(15 * // Call select_preset() only if there is new preset and not just modified if ( !boost::algorithm::ends_with(selected_preset, Preset::suffix_modified()) ) - tab->select_preset(selected_preset); + { + const std::string& preset_name = wxGetApp().preset_bundle->filaments.get_preset_name_by_alias(selected_preset); + tab->select_preset(/*selected_preset*/preset_name); + } } })); } @@ -3363,9 +3366,10 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) //! combo->GetStringSelection().ToUTF8().data()); const std::string& selected_string = combo->GetString(combo->GetSelection()).ToUTF8().data(); + const std::string preset_name = wxGetApp().preset_bundle->filaments.get_preset_name_by_alias(selected_string); if (preset_type == Preset::TYPE_FILAMENT) { - wxGetApp().preset_bundle->set_filament_preset(idx, selected_string); + wxGetApp().preset_bundle->set_filament_preset(idx, /*selected_string*/preset_name); } // TODO: ? @@ -3375,7 +3379,7 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) } else { wxWindowUpdateLocker noUpdates(sidebar->presets_panel()); - wxGetApp().get_tab(preset_type)->select_preset(selected_string); + wxGetApp().get_tab(preset_type)->select_preset(/*selected_string*/preset_name); } // update plater with new config @@ -3386,7 +3390,6 @@ void Plater::priv::on_select_preset(wxCommandEvent &evt) * and for SLA presets they should be deleted */ if (preset_type == Preset::TYPE_PRINTER) -// wxGetApp().obj_list()->update_settings_items(); wxGetApp().obj_list()->update_object_list_by_printer_technology(); } diff --git a/src/slic3r/GUI/Preset.cpp b/src/slic3r/GUI/Preset.cpp index bb8a534e7..b1311933b 100644 --- a/src/slic3r/GUI/Preset.cpp +++ b/src/slic3r/GUI/Preset.cpp @@ -903,6 +903,20 @@ const Preset* PresetCollection::get_preset_parent(const Preset& child) const return (preset == nullptr/* || preset->is_default */|| preset->is_external) ? nullptr : preset; } +const std::string& PresetCollection::get_preset_name_by_alias(const std::string& alias) +{ + 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; + } + + return alias; +} + const std::string& PresetCollection::get_suffix_modified() { return g_suffix_modified; } @@ -997,6 +1011,7 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui) std::map nonsys_presets; wxString selected = ""; + wxString tooltip = ""; if (!this->m_presets.front().is_visible) ui->set_label_marker(ui->Append(PresetCollection::separator(L("System presets")), wxNullBitmap)); for (size_t i = this->m_presets.front().is_visible ? 0 : m_num_default_presets; i < this->m_presets.size(); ++ i) { @@ -1025,19 +1040,24 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui) bmp = m_bitmap_cache->insert(bitmap_key, bmps); } + const std::string name = preset.alias.empty() ? preset.name : preset.alias; if (preset.is_default || preset.is_system) { - ui->Append(wxString::FromUTF8((preset.name + (preset.is_dirty ? g_suffix_modified : "")).c_str()), + ui->Append(wxString::FromUTF8((/*preset.*/name + (preset.is_dirty ? g_suffix_modified : "")).c_str()), (bmp == 0) ? (m_bitmap_main_frame ? *m_bitmap_main_frame : wxNullBitmap) : *bmp); if (i == m_idx_selected || // just in case: mark selected_preset_item as a first added element - selected_preset_item == INT_MAX) + selected_preset_item == INT_MAX) { selected_preset_item = ui->GetCount() - 1; + tooltip = wxString::FromUTF8(preset.name.c_str()); + } } else { - nonsys_presets.emplace(wxString::FromUTF8((preset.name + (preset.is_dirty ? g_suffix_modified : "")).c_str()), bmp/*preset.is_compatible*/); - if (i == m_idx_selected) - selected = wxString::FromUTF8((preset.name + (preset.is_dirty ? g_suffix_modified : "")).c_str()); + nonsys_presets.emplace(wxString::FromUTF8((/*preset.*/name + (preset.is_dirty ? g_suffix_modified : "")).c_str()), bmp/*preset.is_compatible*/); + if (i == m_idx_selected) { + selected = wxString::FromUTF8((/*preset.*/name + (preset.is_dirty ? g_suffix_modified : "")).c_str()); + tooltip = wxString::FromUTF8(preset.name.c_str()); + } } if (i + 1 == m_num_default_presets) ui->set_label_marker(ui->Append(PresetCollection::separator(L("System presets")), wxNullBitmap)); @@ -1088,7 +1108,7 @@ void PresetCollection::update_platter_ui(GUI::PresetComboBox *ui) selected_preset_item = ui->GetCount() - 1; ui->SetSelection(selected_preset_item); - ui->SetToolTip(ui->GetString(selected_preset_item)); + ui->SetToolTip(tooltip.IsEmpty() ? ui->GetString(selected_preset_item) : tooltip); ui->check_selection(); ui->Thaw(); diff --git a/src/slic3r/GUI/Preset.hpp b/src/slic3r/GUI/Preset.hpp index 6a8a537b9..03c54741b 100644 --- a/src/slic3r/GUI/Preset.hpp +++ b/src/slic3r/GUI/Preset.hpp @@ -329,6 +329,8 @@ public: Preset& get_edited_preset() { return m_edited_preset; } const Preset& get_edited_preset() const { return m_edited_preset; } + const std::string& get_preset_name_by_alias(const std::string& alias); + // used to update preset_choice from Tab const std::deque& get_presets() const { return m_presets; } int get_idx_selected() { return m_idx_selected; } diff --git a/src/slic3r/GUI/PresetBundle.cpp b/src/slic3r/GUI/PresetBundle.cpp index 43280cd4f..6b255a0c4 100644 --- a/src/slic3r/GUI/PresetBundle.cpp +++ b/src/slic3r/GUI/PresetBundle.cpp @@ -1587,6 +1587,8 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, GUI::Pr // set a bitmap height to m_bitmapLock->GetHeight() const int icon_height = m_bitmapLock->GetHeight();//2 * icon_unit; //16 * scale_f + 0.5f; + wxString tooltip = ""; + for (int i = this->filaments().front().is_visible ? 0 : 1; i < int(this->filaments().size()); ++i) { const Preset &preset = this->filaments.preset(i); bool selected = this->filament_presets[idx_extruder] == preset.name; @@ -1627,20 +1629,25 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, GUI::Pr bitmap = m_bitmapCache->insert(bitmap_key, bmps); } - if (preset.is_default || preset.is_system) { - ui->Append(wxString::FromUTF8((preset.name + (preset.is_dirty ? Preset::suffix_modified() : "")).c_str()), + const std::string name = preset.alias.empty() ? preset.name : preset.alias; + if (preset.is_default || preset.is_system) { + ui->Append(wxString::FromUTF8((/*preset.*/name + (preset.is_dirty ? Preset::suffix_modified() : "")).c_str()), (bitmap == 0) ? wxNullBitmap : *bitmap); if (selected || // just in case: mark selected_preset_item as a first added element - selected_preset_item == INT_MAX ) + selected_preset_item == INT_MAX ) { selected_preset_item = ui->GetCount() - 1; + tooltip = wxString::FromUTF8(preset.name.c_str()); + } } else { - nonsys_presets.emplace(wxString::FromUTF8((preset.name + (preset.is_dirty ? Preset::suffix_modified() : "")).c_str()), + nonsys_presets.emplace(wxString::FromUTF8((/*preset.*/name + (preset.is_dirty ? Preset::suffix_modified() : "")).c_str()), (bitmap == 0) ? &wxNullBitmap : bitmap); - if (selected) - selected_str = wxString::FromUTF8((preset.name + (preset.is_dirty ? Preset::suffix_modified() : "")).c_str()); + if (selected) { + selected_str = wxString::FromUTF8((/*preset.*/name + (preset.is_dirty ? Preset::suffix_modified() : "")).c_str()); + tooltip = wxString::FromUTF8(preset.name.c_str()); + } } if (preset.is_default) ui->set_label_marker(ui->Append(PresetCollection::separator(L("System presets")), wxNullBitmap)); @@ -1669,7 +1676,7 @@ void PresetBundle::update_platter_filament_ui(unsigned int idx_extruder, GUI::Pr selected_preset_item = ui->GetCount() - 1; ui->SetSelection(selected_preset_item); - ui->SetToolTip(ui->GetString(selected_preset_item)); + ui->SetToolTip(tooltip.IsEmpty() ? ui->GetString(selected_preset_item) : tooltip); ui->check_selection(); ui->Thaw(); diff --git a/src/slic3r/GUI/Tab.cpp b/src/slic3r/GUI/Tab.cpp index 8f95e00e5..1dd22d80a 100644 --- a/src/slic3r/GUI/Tab.cpp +++ b/src/slic3r/GUI/Tab.cpp @@ -998,6 +998,11 @@ void Tab::update_preset_description_line() default: break; } } + else + { + description_line += "\n\n\t" + _(L("full profile name")) + ": \n\t\t" + parent->name; + description_line += "\n\t" + _(L("symbolic profile name")) + ": \n\t\t" + parent->alias; + } } m_parent_preset_description_line->SetText(description_line, false);