Bugfix: random failure to load presets. #600

This commit is contained in:
Alessandro Ranellucci 2012-08-09 00:41:03 +02:00
parent 927b7ce937
commit 2bf219a637
3 changed files with 12 additions and 4 deletions

View File

@ -930,6 +930,12 @@ sub set_ifndef {
if !defined $self->get($opt_key);
}
sub has {
my $self = shift;
my ($opt_key) = @_;
return exists $self->{$opt_key};
}
sub serialize {
my $self = shift;
my ($opt_key) = @_;
@ -1082,7 +1088,7 @@ sub replace_options {
# build a regexp to match the available options
my $options = join '|',
grep !$Slic3r::Config::Options->{$_}{multiline},
grep exists $self->{$_},
grep $self->has($_),
keys %{$Slic3r::Config::Options};
# use that regexp to search and replace option names with option values

View File

@ -717,7 +717,7 @@ sub on_config_change {
pop @$choices;
}
$self->Layout;
} elsif (exists $self->{config}{$opt_key}) {
} elsif ($self->{config}->has($opt_key)) {
$self->{config}->set($opt_key, $value);
$self->_update_bed_size if $opt_key eq 'bed_size';
}

View File

@ -182,7 +182,8 @@ sub on_select_preset {
eval {
local $SIG{__WARN__} = Slic3r::GUI::warning_catcher($self);
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);
@ -211,7 +212,8 @@ sub get_preset_config {
# apply preset values on top of defaults
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;