mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-04 01:50:40 +08:00
Keep overrides added on the fly when opening and closing the preset editor dialog. #3800
This commit is contained in:
parent
05e3bdc271
commit
a267af2e1a
@ -526,10 +526,11 @@ sub _on_select_preset {
|
|||||||
my ($self, $group) = @_;
|
my ($self, $group) = @_;
|
||||||
|
|
||||||
my @presets = $self->selected_presets($group);
|
my @presets = $self->selected_presets($group);
|
||||||
|
|
||||||
$Slic3r::GUI::Settings->{presets}{$group} = $presets[0]->name;
|
my $s_presets = $Slic3r::GUI::Settings->{presets};
|
||||||
$Slic3r::GUI::Settings->{presets}{"${group}_${_}"} = $presets[$_]->name
|
my $changed = !$s_presets->{$group} || $s_presets->{$group} ne $presets[0]->name;
|
||||||
for 1..$#presets;
|
$s_presets->{$group} = $presets[0]->name;
|
||||||
|
$s_presets->{"${group}_${_}"} = $presets[$_]->name for 1..$#presets;
|
||||||
|
|
||||||
wxTheApp->save_settings;
|
wxTheApp->save_settings;
|
||||||
|
|
||||||
@ -538,15 +539,34 @@ sub _on_select_preset {
|
|||||||
$self->on_extruders_change(scalar @{$config->get('nozzle_diameter')});
|
$self->on_extruders_change(scalar @{$config->get('nozzle_diameter')});
|
||||||
|
|
||||||
if ($group eq 'print') {
|
if ($group eq 'print') {
|
||||||
$self->{settings_override_config}->clear;
|
my $o_config = $self->{settings_override_config};
|
||||||
my $overridable = $config->get('overridable');
|
my $o_panel = $self->{settings_override_panel};
|
||||||
if ($overridable) {
|
|
||||||
$self->{settings_override_panel}->set_default_config($config);
|
if ($changed) {
|
||||||
$self->{settings_override_panel}->set_fixed_options(\@$overridable);
|
# Preserve current options if re-selecting the same preset
|
||||||
$self->{settings_override_config}->set($_, $config->get($_))
|
$o_config->clear;
|
||||||
for @$overridable;
|
|
||||||
}
|
}
|
||||||
$self->{settings_override_panel}->update_optgroup;
|
|
||||||
|
my $overridable = $config->get('overridable');
|
||||||
|
|
||||||
|
# Add/remove options (we do it this way for preserving current options)
|
||||||
|
foreach my $opt_key (@$overridable) {
|
||||||
|
if (!$o_config->has($opt_key)) {
|
||||||
|
# Populate option with the default value taken from configuration
|
||||||
|
$o_config->set($opt_key, $config->get($opt_key));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach my $opt_key (@{$o_config->get_keys}) {
|
||||||
|
# Keep options listed among overridable and options added on the fly
|
||||||
|
if ((none { $_ eq $opt_key } @$overridable)
|
||||||
|
&& (any { $_ eq $opt_key } $o_panel->fixed_options)) {
|
||||||
|
$o_config->erase($opt_key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$o_panel->set_default_config($config);
|
||||||
|
$o_panel->set_fixed_options(\@$overridable);
|
||||||
|
$o_panel->update_optgroup;
|
||||||
} elsif ($group eq 'printer') {
|
} elsif ($group eq 'printer') {
|
||||||
# reload print and filament settings to honor their compatible_printer options
|
# reload print and filament settings to honor their compatible_printer options
|
||||||
$self->load_presets;
|
$self->load_presets;
|
||||||
|
@ -131,6 +131,12 @@ sub set_fixed_options {
|
|||||||
$self->update_optgroup;
|
$self->update_optgroup;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub fixed_options {
|
||||||
|
my ($self) = @_;
|
||||||
|
|
||||||
|
return keys %{$self->{fixed_options}};
|
||||||
|
}
|
||||||
|
|
||||||
sub update_optgroup {
|
sub update_optgroup {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user