mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-31 12:41:20 -06:00 
			
		
		
		
	Implemented use of aliases in Plater's preset comboboxes
This commit is contained in:
		
							parent
							
								
									afb8483250
								
							
						
					
					
						commit
						6a68002a1f
					
				
					 5 changed files with 54 additions and 17 deletions
				
			
		|  | @ -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(); | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -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<wxString, wxBitmap*> 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(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -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<Preset>&	get_presets() const	{ return m_presets; } | ||||
| 	int						get_idx_selected()	{ return m_idx_selected; } | ||||
|  |  | |||
|  | @ -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(); | ||||
| 
 | ||||
|  |  | |||
|  | @ -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); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 YuSanka
						YuSanka