Gracefully handle loading config files having empty strings for multi-value options (like wipe). #2003
This commit is contained in:
parent
85b0a4376a
commit
a8b6e32767
@ -231,7 +231,9 @@ sub _build_field {
|
|||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
$field = Wx::TextCtrl->new($self->parent, -1, $opt->{default}, wxDefaultPosition, $size, $style);
|
$field = Wx::TextCtrl->new($self->parent, -1, $opt->{default}, wxDefaultPosition, $size, $style);
|
||||||
$self->_setters->{$opt_key} = sub { $field->ChangeValue($_[0]) };
|
# value supplied to the setter callback might be undef in case user loads a config
|
||||||
|
# that has empty string for multi-value options like 'wipe'
|
||||||
|
$self->_setters->{$opt_key} = sub { $field->ChangeValue($_[0]) if defined $_[0] };
|
||||||
EVT_TEXT($self->parent, $field, $on_change);
|
EVT_TEXT($self->parent, $field, $on_change);
|
||||||
EVT_KILL_FOCUS($field, $on_kill_focus);
|
EVT_KILL_FOCUS($field, $on_kill_focus);
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@ use strict;
|
|||||||
use warnings;
|
use warnings;
|
||||||
|
|
||||||
use Slic3r::XS;
|
use Slic3r::XS;
|
||||||
use Test::More tests => 112;
|
use Test::More tests => 114;
|
||||||
|
|
||||||
foreach my $config (Slic3r::Config->new, Slic3r::Config::Full->new) {
|
foreach my $config (Slic3r::Config->new, Slic3r::Config::Full->new) {
|
||||||
$config->set('layer_height', 0.3);
|
$config->set('layer_height', 0.3);
|
||||||
@ -101,6 +101,8 @@ foreach my $config (Slic3r::Config->new, Slic3r::Config::Full->new) {
|
|||||||
is $config->serialize('wipe'), '1,0', 'serialize bools';
|
is $config->serialize('wipe'), '1,0', 'serialize bools';
|
||||||
$config->set_deserialize('wipe', '0,1,1');
|
$config->set_deserialize('wipe', '0,1,1');
|
||||||
is_deeply $config->get('wipe'), [0,1,1], 'deserialize bools';
|
is_deeply $config->get('wipe'), [0,1,1], 'deserialize bools';
|
||||||
|
$config->set_deserialize('wipe', '');
|
||||||
|
is_deeply $config->get('wipe'), [], 'deserialize bools from empty string';
|
||||||
$config->set_deserialize('retract_layer_change', 0);
|
$config->set_deserialize('retract_layer_change', 0);
|
||||||
is_deeply $config->get('retract_layer_change'), [0], 'deserialize bools from non-string value';
|
is_deeply $config->get('retract_layer_change'), [0], 'deserialize bools from non-string value';
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user