diff --git a/Filtration/Properties/Settings.Designer.cs b/Filtration/Properties/Settings.Designer.cs index 57a3ddc..fd783e4 100644 --- a/Filtration/Properties/Settings.Designer.cs +++ b/Filtration/Properties/Settings.Designer.cs @@ -221,12 +221,12 @@ namespace Filtration.Properties { [global::System.Configuration.UserScopedSettingAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Configuration.DefaultSettingValueAttribute("")] - public string LastActiveDocument { + public string LastOpenScripts { get { - return ((string)(this["LastActiveDocument"])); + return ((string)(this["LastOpenScripts"])); } set { - this["LastActiveDocument"] = value; + this["LastOpenScripts"] = value; } } } diff --git a/Filtration/ViewModels/AvalonDockWorkspaceViewModel.cs b/Filtration/ViewModels/AvalonDockWorkspaceViewModel.cs index b1cce7a..b5c9c94 100644 --- a/Filtration/ViewModels/AvalonDockWorkspaceViewModel.cs +++ b/Filtration/ViewModels/AvalonDockWorkspaceViewModel.cs @@ -75,7 +75,6 @@ namespace Filtration.ViewModels if (value.IsScript) { _activeScriptViewModel = (IItemFilterScriptViewModel) value; - Settings.Default.LastActiveDocument = _activeScriptViewModel.Script.FilePath; } else if (value.IsTheme) { diff --git a/Filtration/ViewModels/MainWindowViewModel.cs b/Filtration/ViewModels/MainWindowViewModel.cs index 0fd0c99..53b4789 100644 --- a/Filtration/ViewModels/MainWindowViewModel.cs +++ b/Filtration/ViewModels/MainWindowViewModel.cs @@ -206,9 +206,9 @@ namespace Filtration.ViewModels } }); - if (!string.IsNullOrWhiteSpace(Settings.Default.LastActiveDocument) && File.Exists(Settings.Default.LastActiveDocument)) + if (!string.IsNullOrWhiteSpace(Settings.Default.LastOpenScripts)) { - LoadScriptAsync(Settings.Default.LastActiveDocument); + LoadScriptsAsync(Settings.Default.LastOpenScripts.Split(new char[] { '|' }, StringSplitOptions.RemoveEmptyEntries)); } } @@ -435,6 +435,17 @@ namespace Filtration.ViewModels await LoadScriptAsync(filePath); // TODO: fix crash } + private async Task LoadScriptsAsync(string[] files) + { + foreach (var file in files) + { + if (File.Exists(file)) + { + await LoadScriptAsync(file); + } + } + } + private async Task LoadScriptAsync(string scriptFilename) { IItemFilterScriptViewModel loadedViewModel; @@ -637,7 +648,6 @@ namespace Filtration.ViewModels private void OnCloseDocumentCommand() { - Settings.Default.LastActiveDocument = ""; _avalonDockWorkspaceViewModel.ActiveDocument.Close(); } @@ -784,6 +794,7 @@ namespace Filtration.ViewModels public async Task CloseAllDocumentsAsync() { + Settings.Default.LastOpenScripts = string.Join("|", _avalonDockWorkspaceViewModel.OpenDocuments.OfType().Select(sc => sc.Script.FilePath)); var openDocuments = _avalonDockWorkspaceViewModel.OpenDocuments.OfType().ToList(); foreach (var document in openDocuments)