Fixed block group advanced status being lost during save

This commit is contained in:
Ben 2015-06-24 23:04:54 +01:00
parent 4faa12474a
commit e53e24100f
5 changed files with 86 additions and 38 deletions

View File

@ -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;
}
}

View File

@ -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<IBlockGroupHierarchyBuilder>();
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()
{

View File

@ -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;

View File

@ -89,10 +89,12 @@
<xcad:LayoutAnchorablePane Name="SectionBrowserPane" DockWidth="150" />
<xcad:LayoutPanel Orientation="Vertical">
<xcad:LayoutDocumentPane />
<xcad:LayoutAnchorablePane Name="BlockOutputPreviewPane" DockHeight="100">
</xcad:LayoutAnchorablePane>
</xcad:LayoutPanel>
<xcad:LayoutAnchorablePane Name="BlockGroupBrowserPane" DockWidth="200" />
<xcad:LayoutAnchorablePaneGroup DockWidth="200" Orientation="Vertical">
<xcad:LayoutAnchorablePane Name="BlockGroupBrowserPane" />
<xcad:LayoutAnchorablePane Name="BlockOutputPreviewPane" />
</xcad:LayoutAnchorablePaneGroup>
</xcad:LayoutPanel>
</xcad:LayoutRoot>
</xcad:DockingManager>

View File

@ -8,6 +8,7 @@
mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=viewModels:SettingsWindowViewModel}"
Title="Options" Height="150" Width="500" IsMaxRestoreButtonEnabled="False">
<Border BorderBrush="Black" BorderThickness="1">
<DockPanel Margin="10">
<Grid DockPanel.Dock="Bottom">
<Grid.RowDefinitions>
@ -42,6 +43,6 @@
<Button Command="{Binding CancelCommand}">Cancel</Button>
</StackPanel>
</Grid>
</DockPanel>
</Border>
</controls:MetroWindow>