Save shortcut options instantly

This commit is contained in:
Alessandro Ranellucci 2017-05-21 00:28:36 +02:00
parent ae88f843b5
commit a3ddac06dd
3 changed files with 35 additions and 16 deletions

View File

@ -378,6 +378,12 @@ sub new {
} else {
# Apply the overrides to the current Print preset, potentially making it dirty
$preset->_dirty_config->apply($self->{settings_override_config});
# If this is a configured shortcut (and not just a dirty option),
# save it now.
if (any { $_ eq $opt_key } @{$preset->dirty_config->shortcuts}) {
$preset->save([$opt_key]);
}
}
$self->load_presets;

View File

@ -94,7 +94,7 @@ sub prompt_unsaved_changes {
if ($res == wxID_CANCEL) {
return 0;
} elsif ($res == wxID_YES) {
return $self->save($self->default ? undef : $self->name);
return $self->default ? $self->save_prompt($parent) : $self->save;
} elsif ($res == wxID_NO) {
$self->dismiss_changes;
return 1;
@ -104,20 +104,29 @@ sub prompt_unsaved_changes {
return 1;
}
sub save_prompt {
my ($self, $parent) = @_;
my $default_name = $self->default ? 'Untitled' : $self->name;
$default_name =~ s/\.ini$//i;
my $dlg = Slic3r::GUI::SavePresetWindow->new($parent,
default => $default_name,
values => [ map $_->name, grep !$_->default && !$_->external, @{wxTheApp->presets->{$self->name}} ],
);
return 0 unless $dlg->ShowModal == wxID_OK;
$self->save_as($dlg->get_name);
}
sub save {
my ($self, $name, $parent) = @_;
my ($self, $opt_keys) = @_;
if (!$name) {
my $default_name = $self->default ? 'Untitled' : $self->name;
$default_name =~ s/\.ini$//i;
my $dlg = Slic3r::GUI::SavePresetWindow->new($parent,
default => $default_name,
values => [ map $_->name, grep !$_->default && !$_->external, @{wxTheApp->presets->{$self->name}} ],
);
return 0 unless $dlg->ShowModal == wxID_OK;
$name = $dlg->get_name;
}
return $self->save_as($self->name, $opt_keys);
}
sub save_as {
my ($self, $name, $opt_keys) = @_;
$self->rename($name);
@ -125,8 +134,12 @@ sub save {
die "Calling save() without setting filename";
}
$self->_config->clear;
$self->_config->apply($self->_dirty_config);
if ($opt_keys) {
$self->_config->apply_only($self->_dirty_config, $opt_keys);
} else {
$self->_config->clear;
$self->_config->apply($self->_dirty_config);
}
$self->_config->save($self->file);
wxTheApp->load_presets;

View File

@ -123,7 +123,7 @@ sub save_preset {
$self->{treectrl}->SetFocus;
my $preset = $self->current_preset;
$preset->save(undef, $self);
$preset->save_prompt($self);
$self->load_presets;
$self->select_preset_by_name($preset->name);