From ecbdd83bcdb8e3bd844454725afec1b331071c79 Mon Sep 17 00:00:00 2001 From: Cameron White Date: Mon, 23 Apr 2012 17:44:47 -0400 Subject: [PATCH] [Fixes bug #987436] Use the default directory if the last saved path no longer exists. Previously, an error dialog was shown. --- Pinta.Core/Actions/LayerActions.cs | 4 ++-- Pinta.Core/Managers/SystemManager.cs | 9 +++++++++ Pinta/Actions/File/OpenDocumentAction.cs | 2 +- Pinta/Actions/File/SaveDocumentImplementationAction.cs | 2 +- 4 files changed, 13 insertions(+), 4 deletions(-) diff --git a/Pinta.Core/Actions/LayerActions.cs b/Pinta.Core/Actions/LayerActions.cs index 0919e691b..a0d4690a6 100644 --- a/Pinta.Core/Actions/LayerActions.cs +++ b/Pinta.Core/Actions/LayerActions.cs @@ -155,8 +155,8 @@ private void HandlePintaCoreActionsLayersImportFromFileActivated (object sender, PintaCore.Tools.Commit (); Gtk.FileChooserDialog fcd = new Gtk.FileChooserDialog (Catalog.GetString ("Open Image File"), null, FileChooserAction.Open, Gtk.Stock.Cancel, Gtk.ResponseType.Cancel, Gtk.Stock.Open, Gtk.ResponseType.Ok); - - fcd.SetCurrentFolder (PintaCore.System.LastDialogDirectory); + + fcd.SetCurrentFolder (PintaCore.System.GetDialogDirectory ()); fcd.AlternativeButtonOrder = new int[] { (int) ResponseType.Ok, (int) ResponseType.Cancel }; fcd.AddImagePreview (); diff --git a/Pinta.Core/Managers/SystemManager.cs b/Pinta.Core/Managers/SystemManager.cs index b969a9888..eb15b4b91 100644 --- a/Pinta.Core/Managers/SystemManager.cs +++ b/Pinta.Core/Managers/SystemManager.cs @@ -86,6 +86,15 @@ static SystemManager () public RecentData RecentData { get { return recent_data; } } #endregion + /// + /// Returns a directory for use in a dialog. The last dialog directory is + /// returned if it exists, otherwise the default directory is used. + /// + public string GetDialogDirectory () + { + return Directory.Exists (LastDialogDirectory) ? LastDialogDirectory : DefaultDialogDirectory; + } + public string GetExecutablePathName () { string executablePathName = System.Environment.GetCommandLineArgs ()[0]; diff --git a/Pinta/Actions/File/OpenDocumentAction.cs b/Pinta/Actions/File/OpenDocumentAction.cs index 414663eb6..63699d132 100644 --- a/Pinta/Actions/File/OpenDocumentAction.cs +++ b/Pinta/Actions/File/OpenDocumentAction.cs @@ -64,7 +64,7 @@ private void Activated (object sender, EventArgs e) fcd.AddFilter (ff2); fcd.AlternativeButtonOrder = new int[] { (int)ResponseType.Ok, (int)ResponseType.Cancel }; - fcd.SetCurrentFolder (PintaCore.System.LastDialogDirectory); + fcd.SetCurrentFolder (PintaCore.System.GetDialogDirectory ()); fcd.SelectMultiple = true; fcd.AddImagePreview (); diff --git a/Pinta/Actions/File/SaveDocumentImplementationAction.cs b/Pinta/Actions/File/SaveDocumentImplementationAction.cs index 031fab328..a29886bdd 100644 --- a/Pinta/Actions/File/SaveDocumentImplementationAction.cs +++ b/Pinta/Actions/File/SaveDocumentImplementationAction.cs @@ -80,7 +80,7 @@ private bool SaveFileAs (Document document) Gtk.Stock.Save, Gtk.ResponseType.Ok); fcd.DoOverwriteConfirmation = true; - fcd.SetCurrentFolder (PintaCore.System.LastDialogDirectory); + fcd.SetCurrentFolder (PintaCore.System.GetDialogDirectory ()); fcd.AlternativeButtonOrder = new int[] { (int)ResponseType.Ok, (int)ResponseType.Cancel }; bool hasFile = document.HasFile;