mirror of
https://git.mirrors.martin98.com/https://github.com/slic3r/Slic3r.git
synced 2025-08-11 14:49:03 +08:00
Save shortcut options instantly
This commit is contained in:
parent
ae88f843b5
commit
a3ddac06dd
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user