Bugfix: random failure to load presets. #600
This commit is contained in:
parent
927b7ce937
commit
2bf219a637
3 changed files with 12 additions and 4 deletions
|
@ -930,6 +930,12 @@ sub set_ifndef {
|
||||||
if !defined $self->get($opt_key);
|
if !defined $self->get($opt_key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub has {
|
||||||
|
my $self = shift;
|
||||||
|
my ($opt_key) = @_;
|
||||||
|
return exists $self->{$opt_key};
|
||||||
|
}
|
||||||
|
|
||||||
sub serialize {
|
sub serialize {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my ($opt_key) = @_;
|
my ($opt_key) = @_;
|
||||||
|
@ -1082,7 +1088,7 @@ sub replace_options {
|
||||||
# build a regexp to match the available options
|
# build a regexp to match the available options
|
||||||
my $options = join '|',
|
my $options = join '|',
|
||||||
grep !$Slic3r::Config::Options->{$_}{multiline},
|
grep !$Slic3r::Config::Options->{$_}{multiline},
|
||||||
grep exists $self->{$_},
|
grep $self->has($_),
|
||||||
keys %{$Slic3r::Config::Options};
|
keys %{$Slic3r::Config::Options};
|
||||||
|
|
||||||
# use that regexp to search and replace option names with option values
|
# use that regexp to search and replace option names with option values
|
||||||
|
|
|
@ -717,7 +717,7 @@ sub on_config_change {
|
||||||
pop @$choices;
|
pop @$choices;
|
||||||
}
|
}
|
||||||
$self->Layout;
|
$self->Layout;
|
||||||
} elsif (exists $self->{config}{$opt_key}) {
|
} elsif ($self->{config}->has($opt_key)) {
|
||||||
$self->{config}->set($opt_key, $value);
|
$self->{config}->set($opt_key, $value);
|
||||||
$self->_update_bed_size if $opt_key eq 'bed_size';
|
$self->_update_bed_size if $opt_key eq 'bed_size';
|
||||||
}
|
}
|
||||||
|
|
|
@ -182,7 +182,8 @@ sub on_select_preset {
|
||||||
eval {
|
eval {
|
||||||
local $SIG{__WARN__} = Slic3r::GUI::warning_catcher($self);
|
local $SIG{__WARN__} = Slic3r::GUI::warning_catcher($self);
|
||||||
foreach my $opt_key (@{$self->{options}}) {
|
foreach my $opt_key (@{$self->{options}}) {
|
||||||
$self->{config}->set($opt_key, $preset_config->get($opt_key));
|
$self->{config}->set($opt_key, $preset_config->get($opt_key))
|
||||||
|
if $preset_config->has($opt_key);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
Slic3r::GUI::catch_error($self);
|
Slic3r::GUI::catch_error($self);
|
||||||
|
@ -211,7 +212,8 @@ sub get_preset_config {
|
||||||
|
|
||||||
# apply preset values on top of defaults
|
# apply preset values on top of defaults
|
||||||
my $external_config = Slic3r::Config->load($preset->{file});
|
my $external_config = Slic3r::Config->load($preset->{file});
|
||||||
$config->set($_, $external_config->get($_)) for @{$self->{options}};
|
$config->set($_, $external_config->get($_))
|
||||||
|
for grep $external_config->has($_), @{$self->{options}};
|
||||||
}
|
}
|
||||||
|
|
||||||
return $config;
|
return $config;
|
||||||
|
|
Loading…
Reference in a new issue