mirror of
				https://github.com/SoftFever/OrcaSlicer.git
				synced 2025-10-30 12:11:15 -06:00 
			
		
		
		
	Added effective update of ComboBoxes on Plater
This commit is contained in:
		
							parent
							
								
									27f77c7680
								
							
						
					
					
						commit
						b8cb936973
					
				
					 7 changed files with 34 additions and 6 deletions
				
			
		|  | @ -149,6 +149,7 @@ sub _init_tabpanel { | |||
|             if (defined $presets){ | ||||
|                 my $reload_dependent_tabs = $tab->get_dependent_tabs; | ||||
|                 $self->{plater}->update_presets($tab_name, $reload_dependent_tabs, $presets); | ||||
|                 $self->{plater}->{"selected_item_$tab_name"} = $tab->get_selected_preset_item; | ||||
|                 if ($tab_name eq 'printer') { | ||||
|                     # Printer selected at the Printer tab, update "compatible" marks at the print and filament selectors. | ||||
|                     for my $tab_name_other (qw(print filament)) { | ||||
|  |  | |||
|  | @ -514,6 +514,13 @@ sub new { | |||
|         $self->SetSizer($sizer); | ||||
|     } | ||||
| 
 | ||||
|     # Last correct selected item for each preset | ||||
|     { | ||||
|         $self->{selected_item_print} = 0; | ||||
|         $self->{selected_item_filament} = 0; | ||||
|         $self->{selected_item_printer} = 0; | ||||
|     } | ||||
| 
 | ||||
|     $self->update_ui_from_settings(); | ||||
|      | ||||
|     return $self; | ||||
|  | @ -538,9 +545,23 @@ sub _on_select_preset { | |||
|         # Only update the platter UI for the 2nd and other filaments. | ||||
|         wxTheApp->{preset_bundle}->update_platter_filament_ui($idx, $choice); | ||||
| 	} else { | ||||
|         my $selected_item = $choice->GetSelection(); | ||||
|         print ("selected_item = $selected_item\n"); | ||||
|         print ("selected_item_$group = ". $self->{"selected_item_$group"}. "\n"); | ||||
|         return if ($selected_item == $self->{"selected_item_$group"}); | ||||
| 
 | ||||
|         my $selected_string = $choice->GetString($selected_item); | ||||
|         if ($selected_string eq "------- System presets -------" || | ||||
|             $selected_string eq "-------  User presets  -------"){ | ||||
|             $choice->SetSelection($self->{"selected_item_$group"}); | ||||
|             return; | ||||
|         } | ||||
|          | ||||
|     	# call GetSelection() in scalar context as it's context-aware | ||||
|     	$self->{on_select_preset}->($group, $choice->GetStringSelection) | ||||
|     	    if $self->{on_select_preset}; | ||||
| #    	$self->{on_select_preset}->($group, $choice->GetStringSelection) | ||||
|         $self->{on_select_preset}->($group, $selected_string) | ||||
|             if $self->{on_select_preset}; | ||||
|         $self->{"selected_item_$group"} = $selected_item; | ||||
|     } | ||||
|     # Synchronize config.ini with the current selections. | ||||
|     wxTheApp->{preset_bundle}->export_selections(wxTheApp->{app_config}); | ||||
|  |  | |||
|  | @ -977,6 +977,10 @@ void PresetBundle::export_configbundle(const std::string &path) //, const Dynami | |||
| // an optional "(modified)" suffix will be removed from the filament name.
 | ||||
| void PresetBundle::set_filament_preset(size_t idx, const std::string &name) | ||||
| { | ||||
| 	if (name == "------- System presets -------" || | ||||
| 		name == "-------  User presets  -------") | ||||
| 		return; | ||||
| 
 | ||||
|     if (idx >= filament_presets.size()) | ||||
|         filament_presets.resize(idx + 1, filaments.default_preset().name); | ||||
|     filament_presets[idx] = Preset::remove_suffix_modified(name); | ||||
|  |  | |||
|  | @ -237,12 +237,11 @@ public: | |||
| 	bool			set_value(const t_config_option_key& opt_key, const boost::any& value); | ||||
| 	wxSizer*		description_line_widget(wxWindow* parent, ogStaticText** StaticText); | ||||
| 	bool			current_preset_is_dirty(); | ||||
| 
 | ||||
| 	DynamicPrintConfig*	get_config() { return m_config; } | ||||
| 	PresetCollection*	get_presets() | ||||
| 	{ | ||||
| 		return m_presets; | ||||
| 	} | ||||
| 	PresetCollection*	get_presets() { return m_presets; } | ||||
| 	std::vector<std::string>	get_dependent_tabs() { return m_reload_dependent_tabs; } | ||||
| 	size_t				get_selected_preset_item() { return m_selected_preset_item; } | ||||
| 
 | ||||
| 	void			on_value_change(const std::string& opt_key, const boost::any& value); | ||||
| 
 | ||||
|  |  | |||
|  | @ -11,6 +11,7 @@ void	TabIface::load_config(DynamicPrintConfig* config)	{ m_tab->load_config(*con | |||
| void	TabIface::load_key_value(char* opt_key, char* value){ m_tab->load_key_value(opt_key, static_cast<std::string>(value)); } | ||||
| bool	TabIface::current_preset_is_dirty()					{ return m_tab->current_preset_is_dirty();} | ||||
| void	TabIface::OnActivate()								{ return m_tab->OnActivate();} | ||||
| size_t	TabIface::get_selected_preset_item()				{ return m_tab->get_selected_preset_item(); } | ||||
| std::string					TabIface::title()				{ return m_tab->title().ToUTF8().data(); } | ||||
| DynamicPrintConfig*			TabIface::get_config()			{ return m_tab->get_config(); } | ||||
| PresetCollection*			TabIface::get_presets()			{ return m_tab!=nullptr ? m_tab->get_presets() : nullptr; } | ||||
|  |  | |||
|  | @ -30,6 +30,7 @@ public: | |||
| 	DynamicPrintConfig*			get_config(); | ||||
| 	PresetCollection*			get_presets(); | ||||
| 	std::vector<std::string>	get_dependent_tabs(); | ||||
| 	size_t						get_selected_preset_item(); | ||||
| 
 | ||||
| protected: | ||||
| 	GUI::Tab   *m_tab; | ||||
|  |  | |||
|  | @ -16,6 +16,7 @@ | |||
| 	bool		current_preset_is_dirty(); | ||||
| 	void		load_key_value(char* opt_key, char* value); | ||||
| 	void		OnActivate(); | ||||
| 	size_t		get_selected_preset_item(); | ||||
| 	std::string	title(); | ||||
| 	Ref<DynamicPrintConfig>		get_config(); | ||||
| 	Ref<PresetCollection>		get_presets(); | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 YuSanka
						YuSanka