From 0aae15e2a82adee3ddfa695e7bce0cb207b8b101 Mon Sep 17 00:00:00 2001 From: Henrik Brix Andersen <henrik@brixandersen.dk> Date: Mon, 30 Jul 2012 12:08:28 +0200 Subject: [PATCH] Persist last skein directory and last config directory used across application restarts. --- lib/Slic3r/GUI/Plater.pm | 5 +++-- lib/Slic3r/GUI/SkeinPanel.pm | 17 +++++++++-------- 2 files changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/Slic3r/GUI/Plater.pm b/lib/Slic3r/GUI/Plater.pm index 1067dfa30..dea9c8684 100644 --- a/lib/Slic3r/GUI/Plater.pm +++ b/lib/Slic3r/GUI/Plater.pm @@ -244,7 +244,7 @@ sub skeinpanel { sub load { my $self = shift; - my $dir = $Slic3r::GUI::SkeinPanel::last_skein_dir || $Slic3r::GUI::SkeinPanel::last_config_dir || ""; + my $dir = $Slic3r::GUI::Settings->{recent}{skein_directory} || $Slic3r::GUI::Settings->{recent}{config_directory} || ''; my $dialog = Wx::FileDialog->new($self, 'Choose one or more files (STL/OBJ/AMF):', $dir, "", $Slic3r::GUI::SkeinPanel::model_wildcard, wxFD_OPEN | wxFD_MULTIPLE | wxFD_FILE_MUST_EXIST); if ($dialog->ShowModal != wxID_OK) { $dialog->Destroy; @@ -259,7 +259,8 @@ sub load_file { my $self = shift; my ($input_file) = @_; - $Slic3r::GUI::SkeinPanel::last_skein_dir = dirname($input_file); + $Slic3r::GUI::Settings->{recent}{skein_directory} = dirname($input_file); + Slic3r::GUI->save_settings; my $process_dialog = Wx::ProgressDialog->new('Loading…', "Processing input file…", 100, $self, 0); $process_dialog->Pulse; diff --git a/lib/Slic3r/GUI/SkeinPanel.pm b/lib/Slic3r/GUI/SkeinPanel.pm index dbc073f83..f0446f8fe 100644 --- a/lib/Slic3r/GUI/SkeinPanel.pm +++ b/lib/Slic3r/GUI/SkeinPanel.pm @@ -9,8 +9,6 @@ use Wx qw(:dialog :filedialog :font :icon :id :misc :notebook :panel :sizer); use Wx::Event qw(EVT_BUTTON); use base 'Wx::Panel'; -our $last_skein_dir; -our $last_config_dir; our $last_input_file; our $last_output_file; our $last_config; @@ -70,7 +68,7 @@ sub do_slice { } # select input file - my $dir = $last_skein_dir || $last_config_dir || ""; + my $dir = $Slic3r::GUI::Settings->{recent}{skein_directory} || $Slic3r::GUI::Settings->{recent}{config_directory} || ''; my $input_file; if (!$params{reslice}) { @@ -96,7 +94,8 @@ sub do_slice { $input_file = $last_input_file; } my $input_file_basename = basename($input_file); - $last_skein_dir = dirname($input_file); + $Slic3r::GUI::Settings->{recent}{skein_directory} = dirname($input_file); + Slic3r::GUI->save_settings; my $print = Slic3r::Print->new(config => $config); $print->add_object_from_file($input_file); @@ -177,13 +176,14 @@ sub save_config { }; Slic3r::GUI::catch_error($self) and return; - my $dir = $last_config ? dirname($last_config) : $last_config_dir || $last_skein_dir || ""; + my $dir = $last_config ? dirname($last_config) : $Slic3r::GUI::Settings->{recent}{config_directory} || $Slic3r::GUI::Settings->{recent}{skein_directory} || ''; my $filename = $last_config ? basename($last_config) : "config.ini"; my $dlg = Wx::FileDialog->new($self, 'Save configuration as:', $dir, $filename, $ini_wildcard, wxFD_SAVE | wxFD_OVERWRITE_PROMPT); if ($dlg->ShowModal == wxID_OK) { my $file = $dlg->GetPath; - $last_config_dir = dirname($file); + $Slic3r::GUI::Settings->{recent}{config_directory} = dirname($file); + Slic3r::GUI->save_settings; $last_config = $file; $config->save($file); } @@ -196,14 +196,15 @@ sub load_config_file { if (!$file) { return unless $self->check_unsaved_changes; - my $dir = $last_config ? dirname($last_config) : $last_config_dir || $last_skein_dir || ""; + my $dir = $last_config ? dirname($last_config) : $Slic3r::GUI::Settings->{recent}{config_directory} || $Slic3r::GUI::Settings->{recent}{skein_directory} || ''; my $dlg = Wx::FileDialog->new($self, 'Select configuration to load:', $dir, "config.ini", $ini_wildcard, wxFD_OPEN | wxFD_FILE_MUST_EXIST); return unless $dlg->ShowModal == wxID_OK; ($file) = $dlg->GetPaths; $dlg->Destroy; } - $last_config_dir = dirname($file); + $Slic3r::GUI::Settings->{recent}{config_directory} = dirname($file); + Slic3r::GUI->save_settings; $last_config = $file; $_->load_external_config($file) for values %{$self->{options_tabs}}; }