Merge pull request #79 from azakhi/feature/12-13-preserve-user-ui-choices
Preserve UI states and last active document
This commit is contained in:
		
						commit
						9c44dd7e7d
					
				
							
								
								
									
										120
									
								
								Filtration/Properties/Settings.Designer.cs
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										120
									
								
								Filtration/Properties/Settings.Designer.cs
									
									
									
										generated
									
									
									
								
							| @ -121,5 +121,125 @@ namespace Filtration.Properties { | ||||
|                 return ((string)(this["UpdateDataUrl"])); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         [global::System.Configuration.UserScopedSettingAttribute()] | ||||
|         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
|         [global::System.Configuration.DefaultSettingValueAttribute("True")] | ||||
|         public bool ShowSectionBrowser | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return ((bool)(this["ShowSectionBrowser"])); | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this["ShowSectionBrowser"] = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         [global::System.Configuration.UserScopedSettingAttribute()] | ||||
|         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
|         [global::System.Configuration.DefaultSettingValueAttribute("False")] | ||||
|         public bool ShowBlockGroupBrowser | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return ((bool)(this["ShowBlockGroupBrowser"])); | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this["ShowBlockGroupBrowser"] = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         [global::System.Configuration.UserScopedSettingAttribute()] | ||||
|         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
|         [global::System.Configuration.DefaultSettingValueAttribute("False")] | ||||
|         public bool ShowBlockOutputPreview | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return ((bool)(this["ShowBlockOutputPreview"])); | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this["ShowBlockOutputPreview"] = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         [global::System.Configuration.UserScopedSettingAttribute()] | ||||
|         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
|         [global::System.Configuration.DefaultSettingValueAttribute("False")] | ||||
|         public bool ShowAdvanced | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return ((bool)(this["ShowAdvanced"])); | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this["ShowAdvanced"] = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         [global::System.Configuration.UserScopedSettingAttribute()] | ||||
|         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
|         [global::System.Configuration.DefaultSettingValueAttribute("Normal")] | ||||
|         public global::System.Windows.WindowState WindowState | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return ((global::System.Windows.WindowState)(this["WindowState"])); | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this["WindowState"] = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         [global::System.Configuration.UserScopedSettingAttribute()] | ||||
|         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
|         [global::System.Configuration.DefaultSettingValueAttribute("960")] | ||||
|         public int WindowWidth | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return ((int)(this["WindowWidth"])); | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this["WindowWidth"] = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         [global::System.Configuration.UserScopedSettingAttribute()] | ||||
|         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
|         [global::System.Configuration.DefaultSettingValueAttribute("720")] | ||||
|         public int WindowHeight | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return ((int)(this["WindowHeight"])); | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this["WindowHeight"] = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         [global::System.Configuration.UserScopedSettingAttribute()] | ||||
|         [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] | ||||
|         [global::System.Configuration.DefaultSettingValueAttribute("")] | ||||
|         public string LastActiveDocument | ||||
|         { | ||||
|             get | ||||
|             { | ||||
|                 return ((string)(this["LastActiveDocument"])); | ||||
|             } | ||||
|             set | ||||
|             { | ||||
|                 this["LastActiveDocument"] = value; | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -9,6 +9,7 @@ using Filtration.ThemeEditor.ViewModels; | ||||
| using Filtration.ViewModels.ToolPanes; | ||||
| using GalaSoft.MvvmLight; | ||||
| using GalaSoft.MvvmLight.Messaging; | ||||
| using Filtration.Properties; | ||||
| 
 | ||||
| namespace Filtration.ViewModels | ||||
| { | ||||
| @ -74,6 +75,7 @@ namespace Filtration.ViewModels | ||||
|                 if (value.IsScript) | ||||
|                 { | ||||
|                     _activeScriptViewModel = (IItemFilterScriptViewModel) value; | ||||
|                     Settings.Default.LastActiveDocument = _activeScriptViewModel.Script.FilePath; | ||||
|                 } | ||||
|                 else if (value.IsTheme) | ||||
|                 { | ||||
|  | ||||
| @ -21,6 +21,7 @@ using Filtration.ObjectModel.BlockItemTypes; | ||||
| using Filtration.ObjectModel.Commands; | ||||
| using Filtration.ObjectModel.Commands.ItemFilterScript; | ||||
| using Filtration.Parser.Interface.Services; | ||||
| using Filtration.Properties; | ||||
| using Filtration.Services; | ||||
| using Filtration.ViewModels.Factories; | ||||
| using GalaSoft.MvvmLight.CommandWpf; | ||||
| @ -128,6 +129,7 @@ namespace Filtration.ViewModels | ||||
|             _clipboardService = clipboardService; | ||||
|             _blockGroupHierarchyBuilder = blockGroupHierarchyBuilder; | ||||
|             _itemFilterBlockViewModels = new ObservableCollection<IItemFilterBlockViewModelBase>(); | ||||
|             _showAdvanced = Settings.Default.ShowAdvanced; | ||||
| 
 | ||||
|             _avalonDockWorkspaceViewModel.ActiveDocumentChanged += (s, e) => | ||||
|             { | ||||
| @ -454,6 +456,7 @@ namespace Filtration.ViewModels | ||||
|                 _showAdvanced = value; | ||||
|                 RaisePropertyChanged(); | ||||
|                 RaisePropertyChanged(nameof(ViewItemFilterBlockViewModels)); | ||||
|                 Settings.Default.ShowAdvanced = value; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|  | ||||
| @ -14,6 +14,7 @@ using Filtration.Interface; | ||||
| using Filtration.ObjectModel.Enums; | ||||
| using Filtration.ObjectModel.ThemeEditor; | ||||
| using Filtration.Parser.Interface.Services; | ||||
| using Filtration.Properties; | ||||
| using Filtration.Repositories; | ||||
| using Filtration.Services; | ||||
| using Filtration.ThemeEditor.Messages; | ||||
| @ -50,6 +51,9 @@ namespace Filtration.ViewModels | ||||
|         private readonly IMessageBoxService _messageBoxService; | ||||
|         private readonly IClipboardService _clipboardService; | ||||
|         private bool _showLoadingBanner; | ||||
|         private WindowState _windowState; | ||||
|         private int _windowWidth; | ||||
|         private int _windowHeight; | ||||
| 
 | ||||
|         public MainWindowViewModel(IItemFilterScriptRepository itemFilterScriptRepository, | ||||
|                                    IItemFilterScriptTranslator itemFilterScriptTranslator, | ||||
| @ -70,6 +74,9 @@ namespace Filtration.ViewModels | ||||
|             _themeService = themeService; | ||||
|             _messageBoxService = messageBoxService; | ||||
|             _clipboardService = clipboardService; | ||||
|             _windowState = Settings.Default.WindowState; | ||||
|             _windowWidth = Settings.Default.WindowWidth; | ||||
|             _windowHeight = Settings.Default.WindowHeight; | ||||
| 
 | ||||
|             NewScriptCommand = new RelayCommand(OnNewScriptCommand); | ||||
|             CopyScriptCommand = new RelayCommand(OnCopyScriptCommand, () => ActiveDocumentIsScript); | ||||
| @ -192,6 +199,11 @@ namespace Filtration.ViewModels | ||||
|                     } | ||||
|                 } | ||||
|             }); | ||||
| 
 | ||||
|             if (!string.IsNullOrWhiteSpace(Settings.Default.LastActiveDocument) && File.Exists(Settings.Default.LastActiveDocument)) | ||||
|             { | ||||
|                 LoadScriptAsync(Settings.Default.LastActiveDocument); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public RelayCommand OpenScriptCommand { get; } | ||||
| @ -264,6 +276,45 @@ namespace Filtration.ViewModels | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public WindowState WindowState | ||||
|         { | ||||
|             get => _windowState; | ||||
|             set | ||||
|             { | ||||
|                 _windowState = value; | ||||
|                 if(value != WindowState.Minimized) | ||||
|                 { | ||||
|                     Settings.Default.WindowState = value; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public int WindowWidth | ||||
|         { | ||||
|             get => _windowWidth; | ||||
|             set | ||||
|             { | ||||
|                 _windowWidth = value; | ||||
|                 if (WindowState == WindowState.Normal) | ||||
|                 { | ||||
|                     Settings.Default.WindowWidth = value; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public int WindowHeight | ||||
|         { | ||||
|             get => _windowHeight; | ||||
|             set | ||||
|             { | ||||
|                 _windowHeight = value; | ||||
|                 if (WindowState == WindowState.Normal) | ||||
|                 { | ||||
|                     Settings.Default.WindowHeight = value; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public bool ShowLoadingBanner | ||||
|         { | ||||
|             get { return _showLoadingBanner; } | ||||
| @ -574,6 +625,7 @@ namespace Filtration.ViewModels | ||||
| 
 | ||||
|         private void OnCloseDocumentCommand() | ||||
|         { | ||||
|             Settings.Default.LastActiveDocument = ""; | ||||
|             _avalonDockWorkspaceViewModel.ActiveDocument.Close(); | ||||
|         } | ||||
| 
 | ||||
|  | ||||
| @ -32,8 +32,6 @@ namespace Filtration.ViewModels.ToolPanes | ||||
|             icon.EndInit(); | ||||
|             IconSource = icon; | ||||
| 
 | ||||
|             IsVisible = false; | ||||
| 
 | ||||
|             Messenger.Default.Register<NotificationMessage<bool>>(this, message => | ||||
|             { | ||||
|                 switch (message.Notification) | ||||
|  | ||||
| @ -26,8 +26,6 @@ namespace Filtration.ViewModels.ToolPanes | ||||
|             icon.EndInit(); | ||||
|             IconSource = icon; | ||||
| 
 | ||||
|             IsVisible = false; | ||||
| 
 | ||||
|             Messenger.Default.Register<NotificationMessage>(this, message => | ||||
|             { | ||||
|                 switch (message.Notification) | ||||
|  | ||||
| @ -1,5 +1,6 @@ | ||||
| using System; | ||||
| using Filtration.Common.ViewModels; | ||||
| using Filtration.Properties; | ||||
| 
 | ||||
| namespace Filtration.ViewModels.ToolPanes | ||||
| { | ||||
| @ -14,6 +15,19 @@ namespace Filtration.ViewModels.ToolPanes | ||||
|         { | ||||
|             Name = name; | ||||
|             Title = name; | ||||
| 
 | ||||
|             switch (Name) | ||||
|             { | ||||
|                 case "Section Browser": | ||||
|                     IsVisible = Settings.Default.ShowSectionBrowser; | ||||
|                     break; | ||||
|                 case "Block Group Browser": | ||||
|                     IsVisible = Settings.Default.ShowBlockGroupBrowser; | ||||
|                     break; | ||||
|                 case "Block Output Preview": | ||||
|                     IsVisible = Settings.Default.ShowBlockOutputPreview; | ||||
|                     break; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         public string Name { get; private set; } | ||||
| @ -27,6 +41,18 @@ namespace Filtration.ViewModels.ToolPanes | ||||
|                 if (_isVisible != value) | ||||
|                 { | ||||
|                     _isVisible = value; | ||||
|                     switch(Name) | ||||
|                     { | ||||
|                         case "Section Browser": | ||||
|                             Settings.Default.ShowSectionBrowser = value; | ||||
|                             break; | ||||
|                         case "Block Group Browser": | ||||
|                             Settings.Default.ShowBlockGroupBrowser = value; | ||||
|                             break; | ||||
|                         case "Block Output Preview": | ||||
|                             Settings.Default.ShowBlockOutputPreview = value; | ||||
|                             break; | ||||
|                     } | ||||
|                     RaisePropertyChanged(); | ||||
|                 } | ||||
|             } | ||||
|  | ||||
| @ -12,7 +12,7 @@ | ||||
|         xmlns:utility="clr-namespace:Filtration.Utility" | ||||
|         mc:Ignorable="d" | ||||
|         d:DataContext="{d:DesignInstance Type=viewModels:MainWindowViewModel}" | ||||
|         Title="{Binding WindowTitle}" Height="762" Width="1126" IsIconVisible="True" | ||||
|         Title="{Binding WindowTitle}" Height="{Binding WindowHeight, Mode=TwoWay}" Width="{Binding WindowWidth, Mode=TwoWay}" IsIconVisible="True" WindowState="{Binding WindowState}" | ||||
|         Closing="MainWindow_OnClosing" Drop="MainWindow_OnDrop" AllowDrop="True"> | ||||
| 
 | ||||
|     <fluent:RibbonWindow.InputBindings> | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user