diff --git a/Filtration/App.config b/Filtration/App.config
index 05440e8..79a6b82 100644
--- a/Filtration/App.config
+++ b/Filtration/App.config
@@ -55,9 +55,12 @@
800
-
+
+
+ True
+
diff --git a/Filtration/Filtration.nuspec b/Filtration/Filtration.nuspec
index b8cf8b7..62492eb 100644
--- a/Filtration/Filtration.nuspec
+++ b/Filtration/Filtration.nuspec
@@ -10,7 +10,9 @@
false
Copyright 2018
* All open filter scripts are now remembered on exit and reopened when the application is started rather than just the last opened one (#95)
+* Filter sections are once again now expanded by default when scripts are opened, unless the new "Auto-expand all sections when opening scripts" setting is disabled
* A new Clear Styles button has been added which removes all styles from the selected block (#96)
+* Fixed theme saving (blank theme files were being saved) (#83)
* Fixed checkboxes in Block Group Browser (#97)
* Fixed the Select Path of Exile data directory dialog appearing after every upgrade (#94)
* Fixed an issue where custom sounds were only populated from the default Path of Exile data directory rather than the configured directory
diff --git a/Filtration/Properties/Settings.Designer.cs b/Filtration/Properties/Settings.Designer.cs
index fd783e4..d6e7a4d 100644
--- a/Filtration/Properties/Settings.Designer.cs
+++ b/Filtration/Properties/Settings.Designer.cs
@@ -12,7 +12,7 @@ namespace Filtration.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
- [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.8.0.0")]
+ [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "15.9.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -229,5 +229,17 @@ namespace Filtration.Properties {
this["LastOpenScripts"] = value;
}
}
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("True")]
+ public bool BlocksExpandedOnOpen {
+ get {
+ return ((bool)(this["BlocksExpandedOnOpen"]));
+ }
+ set {
+ this["BlocksExpandedOnOpen"] = value;
+ }
+ }
}
}
diff --git a/Filtration/Properties/Settings.settings b/Filtration/Properties/Settings.settings
index 802669b..551f84b 100644
--- a/Filtration/Properties/Settings.settings
+++ b/Filtration/Properties/Settings.settings
@@ -53,8 +53,11 @@
800
-
+
+
+ True
+
\ No newline at end of file
diff --git a/Filtration/ViewModels/DesignTime/DesignTimeSettingsPageViewModel.cs b/Filtration/ViewModels/DesignTime/DesignTimeSettingsPageViewModel.cs
index a4ffea7..ac18848 100644
--- a/Filtration/ViewModels/DesignTime/DesignTimeSettingsPageViewModel.cs
+++ b/Filtration/ViewModels/DesignTime/DesignTimeSettingsPageViewModel.cs
@@ -12,6 +12,8 @@ namespace Filtration.ViewModels.DesignTime
set { }
}
+ public bool BlocksExpandedOnOpen { get; set; }
+
public bool ExtraLineBetweenBlocks
{
get => true;
diff --git a/Filtration/ViewModels/ItemFilterBlockViewModelBase.cs b/Filtration/ViewModels/ItemFilterBlockViewModelBase.cs
index b04053f..18c649b 100644
--- a/Filtration/ViewModels/ItemFilterBlockViewModelBase.cs
+++ b/Filtration/ViewModels/ItemFilterBlockViewModelBase.cs
@@ -7,7 +7,7 @@ namespace Filtration.ViewModels
{
internal interface IItemFilterBlockViewModelBase
{
- void Initialise(IItemFilterBlockBase itemfilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel);
+ void Initialise(IItemFilterBlockBase itemFilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel);
IItemFilterBlockBase BaseBlock { get; }
bool IsDirty { get; set; }
bool IsVisible { get; set; }
@@ -25,9 +25,9 @@ namespace Filtration.ViewModels
}
- public virtual void Initialise(IItemFilterBlockBase itemfilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel)
+ public virtual void Initialise(IItemFilterBlockBase itemFilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel)
{
- BaseBlock = itemfilterBlock;
+ BaseBlock = itemFilterBlock;
_parentScriptViewModel = itemFilterScriptViewModel;
CopyBlockCommand = new RelayCommand(OnCopyBlockCommand);
diff --git a/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs b/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs
index d4ab381..3b6bde6 100644
--- a/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs
+++ b/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs
@@ -10,7 +10,8 @@ namespace Filtration.ViewModels
IItemFilterCommentBlock ItemFilterCommentBlock { get; }
string Comment { get; }
bool IsExpanded { get; set; }
- bool HasVisibleChild { get; }
+ bool HasVisibleChild { get; }
+ int ChildCount { get; set; }
}
internal class ItemFilterCommentBlockViewModel : ItemFilterBlockViewModelBase, IItemFilterCommentBlockViewModel
@@ -28,13 +29,13 @@ namespace Filtration.ViewModels
ToggleSectionCommand = new RelayCommand(OnToggleSectionCommand);
}
- public override void Initialise(IItemFilterBlockBase itemfilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel)
+ public override void Initialise(IItemFilterBlockBase itemFilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel)
{
_parentScriptViewModel = itemFilterScriptViewModel;
- ItemFilterCommentBlock = itemfilterBlock as IItemFilterCommentBlock;
+ ItemFilterCommentBlock = itemFilterBlock as IItemFilterCommentBlock;
BaseBlock = ItemFilterCommentBlock;
- base.Initialise(itemfilterBlock, itemFilterScriptViewModel);
+ base.Initialise(itemFilterBlock, itemFilterScriptViewModel);
}
public RelayCommand ToggleSectionCommand { get; }
@@ -43,10 +44,7 @@ namespace Filtration.ViewModels
public string Comment
{
- get
- {
- return ItemFilterCommentBlock.Comment;
- }
+ get => ItemFilterCommentBlock.Comment;
set
{
if (ItemFilterCommentBlock.Comment != value)
diff --git a/Filtration/ViewModels/ItemFilterScriptViewModel.cs b/Filtration/ViewModels/ItemFilterScriptViewModel.cs
index ccad92a..60a54d3 100644
--- a/Filtration/ViewModels/ItemFilterScriptViewModel.cs
+++ b/Filtration/ViewModels/ItemFilterScriptViewModel.cs
@@ -37,11 +37,11 @@ namespace Filtration.ViewModels
IEnumerable ItemFilterCommentBlockViewModels { get; }
ObservableCollection CustomSoundsAvailable { get; }
Predicate BlockFilterPredicate { get; set; }
-
+
bool ShowAdvanced { get; }
string Description { get; set; }
string DisplayName { get; }
-
+
void Initialise(IItemFilterScript itemFilterScript, bool newScript);
void RemoveDirtyFlag();
void SetDirtyFlag();
@@ -63,7 +63,7 @@ namespace Filtration.ViewModels
RelayCommand MoveBlockUpCommand { get; }
RelayCommand MoveBlockDownCommand { get; }
RelayCommand MoveBlockToTopCommand { get; }
- RelayCommand MoveBlockToBottomCommand { get;}
+ RelayCommand MoveBlockToBottomCommand { get; }
RelayCommand CopyBlockCommand { get; }
RelayCommand PasteBlockCommand { get; }
RelayCommand CopyBlockStyleCommand { get; }
@@ -105,17 +105,13 @@ namespace Filtration.ViewModels
private readonly IItemFilterPersistenceService _persistenceService;
private readonly IMessageBoxService _messageBoxService;
private readonly IClipboardService _clipboardService;
- private readonly IBlockGroupHierarchyBuilder _blockGroupHierarchyBuilder;
private bool _isDirty;
- private readonly ObservableCollection _selectedBlockViewModels;
private IItemFilterCommentBlockViewModel _sectionBrowserSelectedBlockViewModel;
- private readonly ObservableCollection _itemFilterBlockViewModels;
private Predicate _blockFilterPredicate;
private ICommandManager _scriptCommandManager;
private ObservableCollection _customSoundsAvailable;
- private ListCollectionView _viewItemFilterBlockViewModels;
private readonly List _lastAddedBlocks;
public ItemFilterScriptViewModel(IItemFilterBlockBaseViewModelFactory itemFilterBlockBaseViewModelFactory,
@@ -124,8 +120,7 @@ namespace Filtration.ViewModels
IAvalonDockWorkspaceViewModel avalonDockWorkspaceViewModel,
IItemFilterPersistenceService persistenceService,
IMessageBoxService messageBoxService,
- IClipboardService clipboardService,
- IBlockGroupHierarchyBuilder blockGroupHierarchyBuilder)
+ IClipboardService clipboardService)
{
_itemFilterBlockBaseViewModelFactory = itemFilterBlockBaseViewModelFactory;
_blockTranslator = blockTranslator;
@@ -135,10 +130,9 @@ namespace Filtration.ViewModels
_persistenceService = persistenceService;
_messageBoxService = messageBoxService;
_clipboardService = clipboardService;
- _blockGroupHierarchyBuilder = blockGroupHierarchyBuilder;
- _itemFilterBlockViewModels = new ObservableCollection();
- _selectedBlockViewModels = new ObservableCollection();
- _selectedBlockViewModels.CollectionChanged += (s, e) =>
+ ItemFilterBlockViewModels = new ObservableCollection();
+ SelectedBlockViewModels = new ObservableCollection();
+ SelectedBlockViewModels.CollectionChanged += (s, e) =>
{
RaisePropertyChanged(nameof(SelectedBlockViewModels));
RaisePropertyChanged(nameof(LastSelectedBlockViewModel));
@@ -154,9 +148,9 @@ namespace Filtration.ViewModels
ToggleShowAdvancedCommand = new RelayCommand(OnToggleShowAdvancedCommand);
ClearFilterCommand = new RelayCommand(OnClearFilterCommand, () => BlockFilterPredicate != null);
- ClearStylesCommand = new RelayCommand(OnClearStylesCommand, () => SelectedBlockViewModels.OfType().Count() > 0);
+ ClearStylesCommand = new RelayCommand(OnClearStylesCommand, () => SelectedBlockViewModels.OfType().Any());
CloseCommand = new RelayCommand(async () => await OnCloseCommand());
- DeleteBlockCommand = new RelayCommand(OnDeleteBlockCommand, () => CanModifySelectedBlocks());
+ DeleteBlockCommand = new RelayCommand(OnDeleteBlockCommand, CanModifySelectedBlocks);
MoveBlockToTopCommand = new RelayCommand(OnMoveBlockToTopCommand, () => SelectedBlockViewModels.Count > 0 && CanModifySelectedBlocks());
MoveBlockToBottomCommand = new RelayCommand(OnMoveBlockToBottomCommand, () => SelectedBlockViewModels.Count > 0 && CanModifySelectedBlocks());
MoveBlockUpCommand = new RelayCommand(OnMoveBlockUpCommand, () => SelectedBlockViewModels.Count == 1 && ViewItemFilterBlockViewModels.IndexOf(LastSelectedBlockViewModel) > 0);
@@ -217,11 +211,14 @@ namespace Filtration.ViewModels
{
Script.FilePath = "Untitled.filter";
}
-
+
Title = Filename;
ContentId = "ScriptContentId";
- CollapseAllSections();
+ if (!Settings.Default.BlocksExpandedOnOpen)
+ {
+ CollapseAllSections();
+ }
}
private void InitialiseCustomSounds()
@@ -250,20 +247,20 @@ namespace Filtration.ViewModels
switch (notifyCollectionChangedEventArgs.Action)
{
case NotifyCollectionChangedAction.Add:
- {
- AddItemFilterBlockViewModels(notifyCollectionChangedEventArgs.NewItems.Cast(), notifyCollectionChangedEventArgs.NewStartingIndex);
- break;
- }
+ {
+ AddItemFilterBlockViewModels(notifyCollectionChangedEventArgs.NewItems.Cast(), notifyCollectionChangedEventArgs.NewStartingIndex);
+ break;
+ }
case NotifyCollectionChangedAction.Remove:
- {
- RemoveItemFilterBlockviewModels(notifyCollectionChangedEventArgs.OldItems.Cast());
- break;
- }
+ {
+ RemoveItemFilterBlockViewModels(notifyCollectionChangedEventArgs.OldItems.Cast());
+ break;
+ }
default:
- {
- Debugger.Break(); // Unhandled NotifyCollectionChangedAction
- break;
- }
+ {
+ Debugger.Break(); // Unhandled NotifyCollectionChangedAction
+ break;
+ }
}
UpdateChildCount();
@@ -294,8 +291,7 @@ namespace Filtration.ViewModels
_lastAddedBlocks.Add(vm);
- var itemBlock = itemFilterBlock as IItemFilterBlock;
- if (itemBlock != null)
+ if (itemFilterBlock is IItemFilterBlock itemBlock)
{
foreach (var customSoundBlockItem in itemBlock.BlockItems.OfType())
{
@@ -308,7 +304,7 @@ namespace Filtration.ViewModels
}
}
- private void RemoveItemFilterBlockviewModels(IEnumerable itemFilterBlocks)
+ private void RemoveItemFilterBlockViewModels(IEnumerable itemFilterBlocks)
{
foreach (var itemFilterBlock in itemFilterBlocks)
{
@@ -324,7 +320,7 @@ namespace Filtration.ViewModels
private void UpdateFilteredBlockList()
{
- ICollectionView filteredBlocks = CollectionViewSource.GetDefaultView(_itemFilterBlockViewModels);
+ ICollectionView filteredBlocks = CollectionViewSource.GetDefaultView(ItemFilterBlockViewModels);
filteredBlocks.Filter = BlockFilter;
ItemFilterCommentBlockViewModel previousSection = new ItemFilterCommentBlockViewModel();
@@ -334,16 +330,16 @@ namespace Filtration.ViewModels
{
previousSection.VisibleChildCount++;
}
- else if (block is ItemFilterCommentBlockViewModel)
+ else if (block is ItemFilterCommentBlockViewModel model)
{
- previousSection = block as ItemFilterCommentBlockViewModel;
+ previousSection = model;
previousSection.VisibleChildCount = 0;
}
}
- _viewItemFilterBlockViewModels = (ListCollectionView)CollectionViewSource.GetDefaultView(
+ ViewItemFilterBlockViewModels = (ListCollectionView)CollectionViewSource.GetDefaultView(
filteredBlocks.Cast().ToList());
- _viewItemFilterBlockViewModels.Filter = BlockVisibilityFilter;
+ ViewItemFilterBlockViewModels.Filter = BlockVisibilityFilter;
Messenger.Default.Send(new NotificationMessage("SectionsChanged"));
SelectedBlockViewModels.Clear();
@@ -360,24 +356,24 @@ namespace Filtration.ViewModels
previousSection.ChildCount++;
block.IsVisible = previousSection.IsExpanded;
}
- else if (block is ItemFilterCommentBlockViewModel)
+ else if (block is ItemFilterCommentBlockViewModel model)
{
- previousSection = block as ItemFilterCommentBlockViewModel;
+ previousSection = model;
previousSection.ChildCount = 0;
}
}
}
- private List getChildren(IItemFilterCommentBlockViewModel targetBlockViewModel)
+ private List GetChildren(IItemFilterCommentBlockViewModel targetBlockViewModel)
{
return ItemFilterBlockViewModels.ToList().GetRange(ItemFilterBlockViewModels.IndexOf(targetBlockViewModel) + 1,
- (targetBlockViewModel as ItemFilterCommentBlockViewModel).ChildCount);
+ targetBlockViewModel.ChildCount);
}
- private List getChildrenIndexes(IItemFilterCommentBlockViewModel targetBlockViewModel)
+ private List GetChildrenIndexes(IItemFilterCommentBlockViewModel targetBlockViewModel)
{
return Enumerable.Range(ItemFilterBlockViewModels.IndexOf(targetBlockViewModel) + 1,
- (targetBlockViewModel as ItemFilterCommentBlockViewModel).ChildCount).ToList();
+ targetBlockViewModel.ChildCount).ToList();
}
private void ValidateSelectedBlocks()
@@ -432,25 +428,16 @@ namespace Filtration.ViewModels
public ObservableCollection CustomSoundsAvailable
{
get => _customSoundsAvailable;
- set
+ private set
{
_customSoundsAvailable = value;
RaisePropertyChanged();
}
}
- public ListCollectionView ViewItemFilterBlockViewModels
- {
- get => _viewItemFilterBlockViewModels;
- }
+ public ListCollectionView ViewItemFilterBlockViewModels { get; private set; }
- public ObservableCollection ItemFilterBlockViewModels
- {
- get
- {
- return _itemFilterBlockViewModels;
- }
- }
+ public ObservableCollection ItemFilterBlockViewModels { get; }
private bool BlockFilter(object item)
{
@@ -555,7 +542,7 @@ namespace Filtration.ViewModels
public bool HasSelectedCommentBlock()
{
- return SelectedBlockViewModels.OfType().Count() > 0;
+ return SelectedBlockViewModels.OfType().Any();
}
public bool CanModifySelectedBlocks()
@@ -586,18 +573,9 @@ namespace Filtration.ViewModels
return itemFilterCommentBlock.ChildCount == itemFilterCommentBlock.VisibleChildCount;
}
- public ObservableCollection SelectedBlockViewModels
- {
- get => _selectedBlockViewModels;
- }
+ public ObservableCollection SelectedBlockViewModels { get; }
- public IItemFilterBlockViewModelBase LastSelectedBlockViewModel
- {
- get
- {
- return SelectedBlockViewModels.Count > 0 ? SelectedBlockViewModels.Last() : null;
- }
- }
+ public IItemFilterBlockViewModelBase LastSelectedBlockViewModel => SelectedBlockViewModels.Count > 0 ? SelectedBlockViewModels.Last() : null;
public IItemFilterCommentBlockViewModel CommentBlockBrowserBrowserSelectedBlockViewModel
{
@@ -657,7 +635,7 @@ namespace Filtration.ViewModels
private bool _filenameIsFake;
private bool _showAdvanced;
-
+
public async Task SaveAsync()
{
if (!ValidateScript()) return;
@@ -706,7 +684,7 @@ namespace Filtration.ViewModels
var result = saveDialog.ShowDialog();
if (result != DialogResult.OK) return;
-
+
Messenger.Default.Send(new NotificationMessage("ShowLoadingBanner"));
var previousFilePath = Script.FilePath;
@@ -802,7 +780,7 @@ namespace Filtration.ViewModels
{
await Close();
}
-
+
public async Task Close()
{
if (!IsDirty)
@@ -817,24 +795,24 @@ namespace Filtration.ViewModels
switch (result)
{
case MessageBoxResult.Yes:
- {
- await SaveAsync();
- CloseScript();
- break;
- }
+ {
+ await SaveAsync();
+ CloseScript();
+ break;
+ }
case MessageBoxResult.No:
- {
- CloseScript();
- break;
- }
+ {
+ CloseScript();
+ break;
+ }
case MessageBoxResult.Cancel:
- {
- return;
- }
+ {
+ return;
+ }
}
}
}
-
+
private void CloseScript()
{
var openMasterThemForScript =
@@ -882,9 +860,9 @@ namespace Filtration.ViewModels
foreach (var block in SelectedBlockViewModels.OfType())
{
blocksToCopy.Add(block);
- if (block is IItemFilterCommentBlockViewModel && !(block as IItemFilterCommentBlockViewModel).IsExpanded)
+ if (block is IItemFilterCommentBlockViewModel model && !model.IsExpanded)
{
- blocksToCopy.AddRange(getChildren(block as IItemFilterCommentBlockViewModel));
+ blocksToCopy.AddRange(GetChildren(model));
}
}
@@ -901,14 +879,14 @@ namespace Filtration.ViewModels
else
{
var blocksToCopy = new List { targetBlockViewModelBase };
- blocksToCopy.AddRange(getChildren(targetBlockViewModelBase as IItemFilterCommentBlockViewModel));
+ blocksToCopy.AddRange(GetChildren((IItemFilterCommentBlockViewModel)targetBlockViewModelBase));
CopyBlocks(blocksToCopy);
}
}
public void CopyBlocks(IEnumerable targetBlockViewModels)
{
- if (targetBlockViewModels.Count() < 1)
+ if (!targetBlockViewModels.Any())
{
return;
}
@@ -931,8 +909,7 @@ namespace Filtration.ViewModels
private void OnCopyBlockStyleCommand()
{
- var selectedBlockViewModel = LastSelectedBlockViewModel as IItemFilterBlockViewModel;
- if (selectedBlockViewModel != null)
+ if (LastSelectedBlockViewModel is IItemFilterBlockViewModel selectedBlockViewModel)
{
CopyBlockStyle(selectedBlockViewModel);
}
@@ -963,8 +940,7 @@ namespace Filtration.ViewModels
private void OnPasteBlockStyleCommand()
{
- var selectedBlockViewModel = LastSelectedBlockViewModel as IItemFilterBlockViewModel;
- if (selectedBlockViewModel != null)
+ if (LastSelectedBlockViewModel is IItemFilterBlockViewModel selectedBlockViewModel)
{
PasteBlockStyle(selectedBlockViewModel);
}
@@ -993,7 +969,7 @@ namespace Filtration.ViewModels
if (commentBlock != null && !commentBlock.IsExpanded)
{
targetBlockViewModelBase = ItemFilterBlockViewModels[ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase) +
- (commentBlock as ItemFilterCommentBlockViewModel).ChildCount];
+ commentBlock.ChildCount];
}
try
@@ -1051,12 +1027,12 @@ namespace Filtration.ViewModels
var indexToMove = ItemFilterBlockViewModels.IndexOf(
ViewItemFilterBlockViewModels.GetItemAt(blockIndex - 1) as IItemFilterBlockViewModelBase);
- if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel &&
- !(targetBlockViewModelBase as IItemFilterCommentBlockViewModel).IsExpanded)
+ if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel model &&
+ !model.IsExpanded)
{
ExecuteCommandAndSelectAdded(new MoveBlocksToIndexCommand(Script,
- Enumerable.Range(ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase),
- (targetBlockViewModelBase as ItemFilterCommentBlockViewModel).ChildCount + 1).ToList(), indexToMove));
+ Enumerable.Range(ItemFilterBlockViewModels.IndexOf(model),
+ model.ChildCount + 1).ToList(), indexToMove));
if (_lastAddedBlocks.Count > 0)
{
ToggleSection(_lastAddedBlocks[0] as IItemFilterCommentBlockViewModel);
@@ -1072,8 +1048,8 @@ namespace Filtration.ViewModels
ExecuteCommandAndSelectAdded(new MoveBlocksToIndexCommand(Script, targetBlockViewModelBase.BaseBlock, indexToMove));
}
- SetDirtyFlag();
- }
+ SetDirtyFlag();
+ }
private void OnMoveBlockDownCommand()
{
@@ -1093,13 +1069,13 @@ namespace Filtration.ViewModels
indexToMove += (belowBlock as ItemFilterCommentBlockViewModel).ChildCount;
}
- if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel &&
- !(targetBlockViewModelBase as IItemFilterCommentBlockViewModel).IsExpanded)
+ if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel model &&
+ !model.IsExpanded)
{
- indexToMove -= (targetBlockViewModelBase as ItemFilterCommentBlockViewModel).ChildCount;
+ indexToMove -= model.ChildCount;
ExecuteCommandAndSelectAdded(new MoveBlocksToIndexCommand(Script,
- Enumerable.Range(ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase),
- (targetBlockViewModelBase as ItemFilterCommentBlockViewModel).ChildCount + 1).ToList(), indexToMove));
+ Enumerable.Range(ItemFilterBlockViewModels.IndexOf(model),
+ model.ChildCount + 1).ToList(), indexToMove));
if (_lastAddedBlocks.Count > 0)
{
ToggleSection(_lastAddedBlocks[0] as IItemFilterCommentBlockViewModel);
@@ -1124,15 +1100,14 @@ namespace Filtration.ViewModels
public void AddBlock(IItemFilterBlockViewModelBase targetBlockViewModelBase)
{
- if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel && !(targetBlockViewModelBase as IItemFilterCommentBlockViewModel).IsExpanded)
+ if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel model && !model.IsExpanded)
{
- ToggleSection(targetBlockViewModelBase as IItemFilterCommentBlockViewModel);
- targetBlockViewModelBase = ItemFilterBlockViewModels[ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase) +
- (targetBlockViewModelBase as ItemFilterCommentBlockViewModel).ChildCount];
+ ToggleSection(model);
+ targetBlockViewModelBase = ItemFilterBlockViewModels[ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase) + model.ChildCount];
}
ExecuteCommandAndSelectAdded(new AddBlockCommand(Script, targetBlockViewModelBase?.BaseBlock));
- SetDirtyFlag();
+ SetDirtyFlag();
}
private void OnAddCommentBlockCommand()
@@ -1160,7 +1135,7 @@ namespace Filtration.ViewModels
blocksToDelete.Add(block);
if (block is IItemFilterCommentBlockViewModel && !(block as IItemFilterCommentBlockViewModel).IsExpanded)
{
- blocksToDelete.AddRange(getChildren(block as IItemFilterCommentBlockViewModel));
+ blocksToDelete.AddRange(GetChildren(block as IItemFilterCommentBlockViewModel));
}
}
@@ -1216,8 +1191,8 @@ namespace Filtration.ViewModels
{
_scriptCommandManager.ExecuteCommand(new MoveBlocksToBottomCommand(Script, targetBlockViewModelBase.BaseBlock));
}
-
- SetDirtyFlag();
+
+ SetDirtyFlag();
}
public void MoveBlocksToBottom(IEnumerable targetCommentBlockViewModels)
@@ -1228,7 +1203,7 @@ namespace Filtration.ViewModels
sourceIndexes.Add(ItemFilterBlockViewModels.IndexOf(block));
if (block is IItemFilterCommentBlockViewModel && !(block as IItemFilterCommentBlockViewModel).IsExpanded)
{
- sourceIndexes.AddRange(getChildrenIndexes(block as IItemFilterCommentBlockViewModel));
+ sourceIndexes.AddRange(GetChildrenIndexes(block as IItemFilterCommentBlockViewModel));
}
}
@@ -1251,11 +1226,11 @@ namespace Filtration.ViewModels
public void MoveBlockToTop(IItemFilterBlockViewModelBase targetBlockViewModelBase)
{
- if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel && !(targetBlockViewModelBase as IItemFilterCommentBlockViewModel).IsExpanded)
+ if (targetBlockViewModelBase is IItemFilterCommentBlockViewModel model && !model.IsExpanded)
{
ExecuteCommandAndSelectAdded(new MoveBlocksToTopCommand(Script,
- Enumerable.Range(ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase),
- (targetBlockViewModelBase as ItemFilterCommentBlockViewModel).ChildCount + 1).ToList()));
+ Enumerable.Range(ItemFilterBlockViewModels.IndexOf(model),
+ model.ChildCount + 1).ToList()));
if (_lastAddedBlocks.Count > 0)
{
ToggleSection(_lastAddedBlocks[0] as IItemFilterCommentBlockViewModel);
@@ -1275,23 +1250,23 @@ namespace Filtration.ViewModels
foreach (var block in targetCommentBlockViewModels)
{
sourceIndexes.Add(ItemFilterBlockViewModels.IndexOf(block));
- if (block is IItemFilterCommentBlockViewModel && !(block as IItemFilterCommentBlockViewModel).IsExpanded)
+ if (block is IItemFilterCommentBlockViewModel model && !model.IsExpanded)
{
- sourceIndexes.AddRange(getChildrenIndexes(block as IItemFilterCommentBlockViewModel));
+ sourceIndexes.AddRange(GetChildrenIndexes(model));
}
}
ExecuteCommandAndSelectAdded(new MoveBlocksToTopCommand(Script, sourceIndexes));
for (var i = 0; i < sourceIndexes.Count; i++)
{
- if (ItemFilterBlockViewModels[i] as IItemFilterCommentBlockViewModel != null)
+ if (ItemFilterBlockViewModels[i] is IItemFilterCommentBlockViewModel model)
{
- ToggleSection(ItemFilterBlockViewModels[i] as IItemFilterCommentBlockViewModel);
+ ToggleSection(model);
}
}
SetDirtyFlag();
- }
+ }
private void OnBlockBecameDirty(object sender, EventArgs e)
{
@@ -1318,11 +1293,11 @@ namespace Filtration.ViewModels
{
foreach (var block in SelectedBlockViewModels)
{
- if (block is IItemFilterCommentBlockViewModel)
+ if (block is IItemFilterCommentBlockViewModel model)
{
- if (!(block as IItemFilterCommentBlockViewModel).IsExpanded)
+ if (!model.IsExpanded)
{
- foreach (var child in getChildren(block as IItemFilterCommentBlockViewModel))
+ foreach (var child in GetChildren(model))
{
((IItemFilterBlockViewModel)child).BlockEnabled = false;
}
@@ -1339,11 +1314,11 @@ namespace Filtration.ViewModels
{
foreach (var block in SelectedBlockViewModels)
{
- if (block is IItemFilterCommentBlockViewModel)
+ if (block is IItemFilterCommentBlockViewModel model)
{
- if (!(block as IItemFilterCommentBlockViewModel).IsExpanded)
+ if (!model.IsExpanded)
{
- foreach (var child in getChildren(block as IItemFilterCommentBlockViewModel))
+ foreach (var child in GetChildren(model))
{
((IItemFilterBlockViewModel)child).BlockEnabled = true;
}
@@ -1360,7 +1335,7 @@ namespace Filtration.ViewModels
{
foreach (var block in SelectedBlockViewModels.OfType())
{
- foreach (var child in getChildren(block as IItemFilterCommentBlockViewModel))
+ foreach (var child in GetChildren(block))
{
((IItemFilterBlockViewModel)child).BlockEnabled = false;
}
@@ -1371,7 +1346,7 @@ namespace Filtration.ViewModels
{
foreach (var block in SelectedBlockViewModels.OfType())
{
- foreach (var child in getChildren(block as IItemFilterCommentBlockViewModel))
+ foreach (var child in GetChildren(block))
{
((IItemFilterBlockViewModel)child).BlockEnabled = true;
}
@@ -1404,7 +1379,7 @@ namespace Filtration.ViewModels
{
var newState = !targetCommentBlockViewModelBase.IsExpanded;
targetCommentBlockViewModelBase.IsExpanded = newState;
- foreach (var child in getChildren(targetCommentBlockViewModelBase))
+ foreach (var child in GetChildren(targetCommentBlockViewModelBase))
{
child.IsVisible = newState;
}
@@ -1419,15 +1394,11 @@ namespace Filtration.ViewModels
private void CollapseAllSections()
{
- for (int i = 0; i < ItemFilterBlockViewModels.Count; i++)
+ foreach (var model in ItemFilterBlockViewModels.OfType())
{
- var block = ItemFilterBlockViewModels[i] as IItemFilterCommentBlockViewModel;
- if (block != null)
+ if (model.IsExpanded)
{
- if(block.IsExpanded)
- {
- ToggleSection(block, true);
- }
+ ToggleSection(model, true);
}
}
@@ -1438,12 +1409,11 @@ namespace Filtration.ViewModels
private void ExpandAllSections()
{
- for (int i = 0; i < ItemFilterBlockViewModels.Count; i++)
+ foreach (var model in ItemFilterBlockViewModels.OfType())
{
- var block = ItemFilterBlockViewModels[i] as IItemFilterCommentBlockViewModel;
- if (block != null && !block.IsExpanded)
+ if (!model.IsExpanded)
{
- ToggleSection(block, true);
+ ToggleSection(model, true);
}
}
diff --git a/Filtration/ViewModels/SettingsPageViewModel.cs b/Filtration/ViewModels/SettingsPageViewModel.cs
index a2600fa..6779915 100644
--- a/Filtration/ViewModels/SettingsPageViewModel.cs
+++ b/Filtration/ViewModels/SettingsPageViewModel.cs
@@ -10,8 +10,9 @@ namespace Filtration.ViewModels
RelayCommand SetItemFilterScriptDirectoryCommand { get; }
string DefaultFilterDirectory { get; }
- bool ExtraLineBetweenBlocks { get; set; }
+ bool BlocksExpandedOnOpen { get; set; }
bool DownloadPrereleaseUpdates { get; set; }
+ bool ExtraLineBetweenBlocks { get; set; }
}
internal class SettingsPageViewModel : ViewModelBase, ISettingsPageViewModel
@@ -28,10 +29,10 @@ namespace Filtration.ViewModels
public string DefaultFilterDirectory => Settings.Default.DefaultFilterDirectory;
- public bool ExtraLineBetweenBlocks
+ public bool BlocksExpandedOnOpen
{
- get => Settings.Default.ExtraLineBetweenBlocks;
- set => Settings.Default.ExtraLineBetweenBlocks = value;
+ get => Settings.Default.BlocksExpandedOnOpen;
+ set => Settings.Default.BlocksExpandedOnOpen = value;
}
public bool DownloadPrereleaseUpdates
@@ -40,6 +41,12 @@ namespace Filtration.ViewModels
set => Settings.Default.DownloadPrereleaseUpdates = value;
}
+ public bool ExtraLineBetweenBlocks
+ {
+ get => Settings.Default.ExtraLineBetweenBlocks;
+ set => Settings.Default.ExtraLineBetweenBlocks = value;
+ }
+
private void OnSetItemFilterScriptDirectoryCommand()
{
_itemFilterScriptDirectoryService.SetItemFilterScriptDirectory();
diff --git a/Filtration/Views/SettingsPageView.xaml b/Filtration/Views/SettingsPageView.xaml
index 23f8832..83ba1a5 100644
--- a/Filtration/Views/SettingsPageView.xaml
+++ b/Filtration/Views/SettingsPageView.xaml
@@ -4,7 +4,7 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:designTime="clr-namespace:Filtration.ViewModels.DesignTime"
- mc:Ignorable="d" d:DesignWidth="1200"
+ mc:Ignorable="d" d:DesignWidth="1200" d:DesignHeight="400"
d:DataContext="{d:DesignInstance Type=designTime:DesignTimeSettingsPageViewModel, IsDesignTimeCreatable=True}">
@@ -22,8 +22,8 @@
-
-
+
+
@@ -40,8 +40,10 @@
Add blank line between blocks when saving
- Download pre-release updates (use with caution)
-
+ Download pre-release updates (use with caution)
+
+ Auto-expand all sections when opening scripts
+