diff --git a/Filtration.ObjectModel/ItemFilterBlockGroup.cs b/Filtration.ObjectModel/ItemFilterBlockGroup.cs index 86e1153..9a495f6 100644 --- a/Filtration.ObjectModel/ItemFilterBlockGroup.cs +++ b/Filtration.ObjectModel/ItemFilterBlockGroup.cs @@ -44,14 +44,14 @@ namespace Filtration.ObjectModel { var currentBlockGroup = this; - var outputString = GroupName; + var outputString = (Advanced ? "~" : string.Empty) + GroupName; // TODO: This is retarded, fix this. if (currentBlockGroup.ParentGroup != null) { while (currentBlockGroup.ParentGroup.ParentGroup != null) { - outputString = currentBlockGroup.ParentGroup.GroupName + " - " + outputString; + outputString = (currentBlockGroup.ParentGroup.Advanced ? "~" : string.Empty) + currentBlockGroup.ParentGroup.GroupName + " - " + outputString; currentBlockGroup = currentBlockGroup.ParentGroup; } } diff --git a/Filtration.Tests/Translators/TestItemFilterScriptTranslator.cs b/Filtration.Tests/Translators/TestItemFilterScriptTranslator.cs index 612c880..50c1814 100644 --- a/Filtration.Tests/Translators/TestItemFilterScriptTranslator.cs +++ b/Filtration.Tests/Translators/TestItemFilterScriptTranslator.cs @@ -4,6 +4,7 @@ using System.Linq; using Filtration.ObjectModel; using Filtration.ObjectModel.BlockItemTypes; using Filtration.ObjectModel.Enums; +using Filtration.Properties; using Filtration.Translators; using Moq; using NUnit.Framework; @@ -19,6 +20,7 @@ namespace Filtration.Tests.Translators public void ItemFilterScriptTranslatorTestSetup() { _testUtility = new ItemFilterScriptTranslatorTestUtility(); + Settings.Default.Reset(); } [Test] @@ -99,6 +101,43 @@ namespace Filtration.Tests.Translators _testUtility.MockItemFilterBlockTranslator.Verify(); } + [Test] + public void TranslateItemFilterScriptToString_ExtraLineBetweenBlocksSettingFalse_ReturnsCorrectOutput() + { + Settings.Default.ExtraLineBetweenBlocks = false; + + var script = new ItemFilterScript(); + var block1 = new ItemFilterBlock { Description = "Test Filter 1" }; + block1.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 5)); + + var block2 = new ItemFilterBlock(); + block2.BlockItems.Add(new QualityBlockItem(FilterPredicateOperator.LessThan, 15)); + block2.BlockItems.Add(new FontSizeBlockItem(7)); + block2.BlockItems.Add(new WidthBlockItem(FilterPredicateOperator.Equal, 3)); + + script.ItemFilterBlocks.Add(block1); + script.ItemFilterBlocks.Add(block2); + + var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + Environment.NewLine + + "# Test Filter 1" + Environment.NewLine + + "Show" + Environment.NewLine + + " ItemLevel > 5" + Environment.NewLine + + "Show" + Environment.NewLine + + " Quality < 15" + Environment.NewLine + + " Width = 3" + Environment.NewLine + + " SetFontSize 7" + Environment.NewLine; + + var mockBlockGroupHierarchyBuilder = new Mock(); + var blockTranslator = new ItemFilterBlockTranslator(mockBlockGroupHierarchyBuilder.Object); + var translator = new ItemFilterScriptTranslator(blockTranslator, mockBlockGroupHierarchyBuilder.Object); + + // Act + var result = translator.TranslateItemFilterScriptToString(script); + + // Assert + Assert.AreEqual(expectedOutput, result); + } + [Test] public void TranslateItemFilterScriptToString_FullScript_ReturnsCorrectOutput() { diff --git a/Filtration/Translators/ItemFilterScriptTranslator.cs b/Filtration/Translators/ItemFilterScriptTranslator.cs index c94c37a..db70070 100644 --- a/Filtration/Translators/ItemFilterScriptTranslator.cs +++ b/Filtration/Translators/ItemFilterScriptTranslator.cs @@ -5,6 +5,7 @@ using System.Linq; using System.Text.RegularExpressions; using Castle.Core.Internal; using Filtration.ObjectModel; +using Filtration.Properties; using Filtration.Utilities; namespace Filtration.Translators @@ -111,7 +112,12 @@ namespace Filtration.Translators // ReSharper disable once LoopCanBeConvertedToQuery foreach (var block in script.ItemFilterBlocks) { - outputString += _blockTranslator.TranslateItemFilterBlockToString(block) + Environment.NewLine + Environment.NewLine; + outputString += _blockTranslator.TranslateItemFilterBlockToString(block) + Environment.NewLine; + + if (Settings.Default.ExtraLineBetweenBlocks) + { + outputString += Environment.NewLine; + } } return outputString; diff --git a/Filtration/Views/AvalonDock/AvalonDockWorkspaceView.xaml b/Filtration/Views/AvalonDock/AvalonDockWorkspaceView.xaml index b10c34f..1515111 100644 --- a/Filtration/Views/AvalonDock/AvalonDockWorkspaceView.xaml +++ b/Filtration/Views/AvalonDock/AvalonDockWorkspaceView.xaml @@ -89,10 +89,12 @@ - - + - + + + + diff --git a/Filtration/Views/SettingsWindow.xaml b/Filtration/Views/SettingsWindow.xaml index 20687da..3a287ca 100644 --- a/Filtration/Views/SettingsWindow.xaml +++ b/Filtration/Views/SettingsWindow.xaml @@ -8,40 +8,41 @@ mc:Ignorable="d" d:DataContext="{d:DesignInstance Type=viewModels:SettingsWindowViewModel}" Title="Options" Height="150" Width="500" IsMaxRestoreButtonEnabled="False"> - - - - - - - - - - - - + + + - - - + - Default Filter Directory: - - Add blank line between blocks when saving - + + + + + + + + + + + + + Default Filter Directory: + + Add blank line between blocks when saving + + + + + + + + + - - - - - - - - - - + +