From 400688573cf72575444cefc87296d6d8c5ba4292 Mon Sep 17 00:00:00 2001 From: azakhi Date: Thu, 9 Aug 2018 16:48:11 +0300 Subject: [PATCH 01/33] Add new block types added in 3.3 --- .../Filtration.ObjectModel.Tests.csproj | 3 ++ .../BackgroundColorBlockItem.cs | 2 +- .../BlockItemTypes/BaseTypeBlockItem.cs | 2 +- .../BlockItemTypes/BorderColorBlockItem.cs | 2 +- .../BlockItemTypes/ClassBlockItem.cs | 2 +- .../BlockItemTypes/FontSizeBlockItem.cs | 2 +- .../BlockItemTypes/GemLevelBlockItem.cs | 18 +++++++++ .../BlockItemTypes/HasExplicitModBlockItem.cs | 38 +++++++++++++++++++ .../PositionalSoundBlockItem.cs | 2 +- .../BlockItemTypes/RarityBlockItem.cs | 2 +- .../BlockItemTypes/SoundBlockItem.cs | 2 +- .../BlockItemTypes/StackSizeBlockItem.cs | 18 +++++++++ .../BlockItemTypes/TextColorBlockItem.cs | 2 +- .../Filtration.ObjectModel.csproj | 9 +++-- .../Services/ItemFilterBlockTranslator.cs | 15 ++++++++ Filtration.Tests/Filtration.Tests.csproj | 3 ++ .../Filtration.ThemeEditor.Tests.csproj | 3 ++ Filtration/UserControls/BlockItemControl.xaml | 7 +++- .../ViewModels/ItemFilterBlockViewModel.cs | 5 ++- 19 files changed, 123 insertions(+), 14 deletions(-) create mode 100644 Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs create mode 100644 Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs create mode 100644 Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs diff --git a/Filtration.ObjectModel.Tests/Filtration.ObjectModel.Tests.csproj b/Filtration.ObjectModel.Tests/Filtration.ObjectModel.Tests.csproj index 69dd6ef..62cfed3 100644 --- a/Filtration.ObjectModel.Tests/Filtration.ObjectModel.Tests.csproj +++ b/Filtration.ObjectModel.Tests/Filtration.ObjectModel.Tests.csproj @@ -66,6 +66,9 @@ + + + + + + + diff --git a/Filtration/ViewModels/ItemFilterBlockViewModel.cs b/Filtration/ViewModels/ItemFilterBlockViewModel.cs index 5cf0c0c..396190d 100644 --- a/Filtration/ViewModels/ItemFilterBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterBlockViewModel.cs @@ -159,7 +159,10 @@ namespace Filtration.ViewModels typeof (CorruptedBlockItem), typeof (ElderItemBlockItem), typeof (ShaperItemBlockItem), - typeof (ShapedMapBlockItem) + typeof (ShapedMapBlockItem), + typeof (GemLevelBlockItem), + typeof (StackSizeBlockItem), + typeof (HasExplicitModBlockItem) }; public List AudioVisualBlockItemTypesAvailable => new List From 0fd2db70765b41f8f9d189f539abfd5394d8bcfd Mon Sep 17 00:00:00 2001 From: azakhi Date: Thu, 9 Aug 2018 17:12:03 +0300 Subject: [PATCH 02/33] Add new base types and classes --- Filtration/Resources/ItemBaseTypes.txt | 72 ++++++++++++++++++++++++++ Filtration/Resources/ItemClasses.txt | 1 + 2 files changed, 73 insertions(+) diff --git a/Filtration/Resources/ItemBaseTypes.txt b/Filtration/Resources/ItemBaseTypes.txt index b056064..cc1a744 100644 --- a/Filtration/Resources/ItemBaseTypes.txt +++ b/Filtration/Resources/ItemBaseTypes.txt @@ -114,6 +114,7 @@ Bear Trap Behemoth Mace Belfry Map Bestel's Manuscript +Bestiary Orb Beyond Leaguestone Binding Shard Birth of the Three @@ -131,6 +132,7 @@ Blast Rain Blessed Orb Blessing of Chayula Blessing of Esh +Blessing of God Blessing of Tul Blessing of Uul-Netol Blessing of Xoph @@ -244,6 +246,7 @@ Chaos Orb Chaos Shard Chaotic Disposition Charged Dash +Charged Traps Support Chateau Map Chayula's Breachstone Chest Splitter @@ -492,6 +495,7 @@ Exalted Orb Exalted Shard Excavation Map Explosive Arrow +Explosive Trap Exquisite Blade Exquisite Leather Eye Gouger @@ -531,8 +535,10 @@ Flame Dash Flame Surge Flame Totem Flameblast +Flamethrower Trap Flammability Flanged Mace +Flashpowder Keg Flaying Knife Flesh Offering Fleshripper @@ -540,6 +546,7 @@ Flicker Strike Flooded Mine Map Fluted Bascinet Footman Sword +Forbidden Power Forge of the Phoenix Map Fork Support Fortify Support @@ -654,6 +661,7 @@ Harbinger's Orb Harbinger's Shard Harlequin Mask Harmonic Spirit Shield +Harmony of Souls Harpy Rapier Haste Hatred @@ -705,6 +713,7 @@ Ignite Proliferation Support Imbued Wand Immolate Support Immortal Call +Immortal Resolve Imp Dagger Imperial Bow Imperial Buckler @@ -712,6 +721,7 @@ Imperial Claw Imperial Maul Imperial Skean Imperial Staff +Imprinted Bestiary Orb Incinerate Increased Area of Effect Support Increased Critical Damage Support @@ -813,6 +823,7 @@ Light Quiver Lighthouse Map Lightning Arrow Lightning Penetration Support +Lightning Spire Trap Lightning Strike Lightning Tendrils Lightning Trap @@ -923,6 +934,7 @@ Muttering Essence of Woe Nailed Fist Necromancer Circlet Necromancer Silks +Necromancy Net Necropolis Map Nemesis Leaguestone Nightmare Bascinet @@ -983,6 +995,7 @@ Penetrating Arrow Quiver Peninsula Map Perandus Coin Perandus Leaguestone +Perfection Pernarch Petrified Club Phantasmagoria Map @@ -1082,7 +1095,10 @@ Regal Orb Regal Shard Regicide Mask Reinforced Greaves +Reinforced Iron Net Reinforced Kite Shield +Reinforced Rope Net +Reinforced Steel Net Reinforced Tower Shield Rejuvenation Totem Relic Chambers Map @@ -1185,6 +1201,7 @@ Scroll of Wisdom Searching Eye Jewel Searing Bond Secutor Helm +Seismic Trap Sekhem Sekhema Feather Sentinel Jacket @@ -1264,8 +1281,12 @@ Silver Coin Silver Flask Silver Key Silver Locket +Simple Iron Net Simple Robe +Simple Rope Net +Simple Steel Net Sinner Tricorne +Siphoning Trap Skean Skinning Knife Slaughter Knife @@ -1292,6 +1313,7 @@ Sovereign Spiked Shield Spark Sparkling Claw Spectral Axe +Spectral Shield Throw Spectral Sword Spectral Throw Spell Cascade Support @@ -1341,6 +1363,7 @@ Stibnite Flask Stiletto Stone Axe Stone Hammer +Stone of Passage Storm Barrier Support Storm Blade Storm Burst @@ -1349,6 +1372,9 @@ Strand Map Strapped Boots Strapped Leather Strapped Mitts +Strong Iron Net +Strong Rope Net +Strong Steel Net Struck by Lightning Studded Belt Studded Round Shield @@ -1361,6 +1387,7 @@ Summon Chaos Golem Summon Flame Golem Summon Ice Golem Summon Lightning Golem +Summon Phantasm on Kill Support Summon Raging Spirit Summon Skeleton Summon Stone Golem @@ -1377,6 +1404,7 @@ Talisman Leaguestone Talon Axe Tarnished Spirit Shield Teak Round Shield +Tectonic Slam Tempered Foil Tempest Leaguestone Tempest Shield @@ -1386,17 +1414,22 @@ Tenderizer Terrace Map Terror Claw Terror Maul +Thaumaturgical Net Thaumetic Emblem Thaumetic Sulphite +The Admirer The Aesthete The Arena Champion +The Army of Blood The Artist The Avenger The Battle Born +The Beast The Betrayal The Black Flag The Blazing Fire The Body +The Breach The Brittle Emperor The Calling The Carrion Crow @@ -1404,18 +1437,23 @@ The Cartographer The Cataclysm The Catalyst The Celestial Justicar +The Celestial Stone The Chains that Bind The Coming Storm The Conduit The Cursed King The Dapper Prodigy The Dark Mage +The Darkest Dream +The Deceiver The Demoness The Devastator The Doctor The Doppelganger The Dragon The Dragon's Heart +The Dreamer +The Dreamland The Drunken Aristocrat The Encroaching Darkness The Endurance @@ -1425,6 +1463,7 @@ The Explorer The Eye of Desire The Eye of Fury The Eye of the Dragon +The Fathomless Depths The Feast The Fiend The Fletcher @@ -1437,6 +1476,7 @@ The Garish Power The Gemcutter The Gentleman The Gladiator +The Hale Heart The Harvester The Hermit The Hoarder @@ -1444,8 +1484,11 @@ The Hunger The Immortal The Incantation The Inoculated +The Insatiable The Inventor +The Iron Bard The Jester +The Jeweller's Boon The King's Blade The King's Heart The Last One Standing @@ -1454,9 +1497,12 @@ The Lion The Lord in Black The Lover The Lunaris Priestess +The Master +The Mayor The Mercenary The Metalsmith's Gift The Oath +The Obscured The Offering The One With All The Opulent @@ -1466,17 +1512,22 @@ The Penitent The Poet The Polymath The Porcupine +The Professor +The Puzzle The Queen The Rabid Rhoa The Realm The Risk +The Rite of Elements The Road to Power The Ruthless Ceinture The Saint's Treasure +The Samurai's Eye The Scarred Meadow The Scavenger The Scholar The Sephirot +The Shaper's Key The Sigil The Siren The Soul @@ -1490,6 +1541,7 @@ The Sun The Surgeon The Surveyor The Survivalist +The Sword King's Salute The Teardrop The Thaumaturgist The Throne @@ -1498,6 +1550,8 @@ The Traitor The Trial The Twins The Tyrant +The Undaunted +The Undisputed The Union The Valkyrie The Valley of Steel Boxes @@ -1509,10 +1563,12 @@ The Warlord The Watcher The Web The Wind +The Witch The Wolf The Wolf's Shadow The Wolven King's Bite The Wolverine +The World Eater The Wrath The Wretched Thicket Bow @@ -1523,6 +1579,7 @@ Thorn Rapier Three Faces in the Dark Three Hands Talisman Three Rat Talisman +Three Voices Thresher Claw Throat Stabber Thunderous Skies @@ -1590,6 +1647,8 @@ Uul-Netol's Breachstone Vaal Arc Vaal Axe Vaal Blade +Vaal Blade Vortex +Vaal Blight Vaal Breach Vaal Buckler Vaal Burning Arrow @@ -1600,6 +1659,7 @@ Vaal Cyclone Vaal Detonate Dead Vaal Discipline Vaal Double Strike +Vaal Earthquake Vaal Fireball Vaal Flameblast Vaal Gauntlets @@ -1612,6 +1672,9 @@ Vaal Haste Vaal Hatchet Vaal Ice Nova Vaal Immortal Call +Vaal Impurity of Fire +Vaal Impurity of Ice +Vaal Impurity of Lightning Vaal Lightning Strike Vaal Lightning Trap Vaal Lightning Warp @@ -1640,7 +1703,16 @@ Vault Map Velvet Gloves Velvet Slippers Vengeance +Vial of Awakening +Vial of Consequence +Vial of Dominance +Vial of Fate Vial Of Power +Vial of Sacrifice +Vial of Summoning +Vial of the Ghost +Vial of the Ritual +Vial of Transcendence Vigilant Strike Vile Staff Vile Toxins Support diff --git a/Filtration/Resources/ItemClasses.txt b/Filtration/Resources/ItemClasses.txt index fd87671..0554a03 100644 --- a/Filtration/Resources/ItemClasses.txt +++ b/Filtration/Resources/ItemClasses.txt @@ -16,6 +16,7 @@ Gems Gloves Helmets Hybrid Flasks +Incursion Item Jewel Labyrinth Item Labyrinth Map Item From 71b7a45f8413ca705a5e0bb98ce89a2d62a91be2 Mon Sep 17 00:00:00 2001 From: azakhi Date: Fri, 10 Aug 2018 17:08:17 +0300 Subject: [PATCH 03/33] Add tests and small bugfixes --- .../BlockItemTypes/GemLevelBlockItem.cs | 10 ++ .../BlockItemTypes/StackSizeBlockItem.cs | 10 ++ .../Services/TestItemFilterBlockTranslator.cs | 131 ++++++++++++++++++ .../Services/ItemFilterScriptTranslator.cs | 2 +- 4 files changed, 152 insertions(+), 1 deletion(-) diff --git a/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs index da65452..50f3f6e 100644 --- a/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs @@ -1,10 +1,20 @@ using System.Windows.Media; using Filtration.ObjectModel.BlockItemBaseTypes; +using Filtration.ObjectModel.Enums; namespace Filtration.ObjectModel.BlockItemTypes { public class GemLevelBlockItem : NumericFilterPredicateBlockItem { + public GemLevelBlockItem() + { + } + + public GemLevelBlockItem(FilterPredicateOperator predicateOperator, int predicateOperand) + : base(predicateOperator, predicateOperand) + { + } + public override string PrefixText => "GemLevel"; public override int MaximumAllowed => 2; public override string DisplayHeading => "Gem Level"; diff --git a/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs index 4ea5ec0..dc36b76 100644 --- a/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs @@ -1,10 +1,20 @@ using System.Windows.Media; using Filtration.ObjectModel.BlockItemBaseTypes; +using Filtration.ObjectModel.Enums; namespace Filtration.ObjectModel.BlockItemTypes { public class StackSizeBlockItem : NumericFilterPredicateBlockItem { + public StackSizeBlockItem() + { + } + + public StackSizeBlockItem(FilterPredicateOperator predicateOperator, int predicateOperand) + : base(predicateOperator, predicateOperand) + { + } + public override string PrefixText => "StackSize"; public override int MaximumAllowed => 2; public override string DisplayHeading => "Stack Size"; diff --git a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs index e05f9d4..3fcc7bc 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs @@ -318,6 +318,42 @@ namespace Filtration.Parser.Tests.Services Assert.AreEqual(FilterPredicateOperator.Equal, blockItem.FilterPredicate.PredicateOperator); } + [Test] + public void TranslateStringToItemFilterBlock_GemLevel_ReturnsCorrectObject() + { + // Arrange + var inputString = "Show" + Environment.NewLine + + " GemLevel = 20"; + + // Act + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript); + + // Assert + + Assert.AreEqual(1, result.BlockItems.Count(b => b is GemLevelBlockItem)); + var blockItem = result.BlockItems.OfType().First(); + Assert.AreEqual(20, blockItem.FilterPredicate.PredicateOperand); + Assert.AreEqual(FilterPredicateOperator.Equal, blockItem.FilterPredicate.PredicateOperator); + } + + [Test] + public void TranslateStringToItemFilterBlock_StackSize_ReturnsCorrectObject() + { + // Arrange + var inputString = "Show" + Environment.NewLine + + " StackSize > 5"; + + // Act + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript); + + // Assert + + Assert.AreEqual(1, result.BlockItems.Count(b => b is StackSizeBlockItem)); + var blockItem = result.BlockItems.OfType().First(); + Assert.AreEqual(5, blockItem.FilterPredicate.PredicateOperand); + Assert.AreEqual(FilterPredicateOperator.GreaterThan, blockItem.FilterPredicate.PredicateOperator); + } + [Test] public void TranslateStringToItemFilterBlock_Corrupted_ReturnsCorrectObject() { @@ -494,6 +530,25 @@ namespace Filtration.Parser.Tests.Services Assert.Contains("Test BaseType 2", blockItem.Items); } + [Test] + public void TranslateStringToItemFilterBlock_HasExplicitMod_ReturnsCorrectObject() + { + // Arrange + var inputString = "Show" + Environment.NewLine + + @" HasExplicitMod ""Test Mod 1"" ""TestOneWordModInQuotes"" TestOneWordModNotInQuotes ""Test Mod 2"""; + + // Act + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript); + + // Assert + Assert.AreEqual(1, result.BlockItems.Count(b => b is BaseTypeBlockItem)); + var blockItem = result.BlockItems.OfType().First(); + Assert.Contains("Test Mod 1", blockItem.Items); + Assert.Contains("TestOneWordModInQuotes", blockItem.Items); + Assert.Contains("TestOneWordModNotInQuotes", blockItem.Items); + Assert.Contains("Test Mod 2", blockItem.Items); + } + [Test] public void TranslateStringToItemFilterBlock_Sockets_ReturnsCorrectObject() { @@ -813,6 +868,8 @@ namespace Filtration.Parser.Tests.Services "Show" + Environment.NewLine + " ItemLevel >= 50" + Environment.NewLine + " DropLevel < 70" + Environment.NewLine + + " GemLevel = 20" + Environment.NewLine + + " StackSize > 2" + Environment.NewLine + " Quality = 15" + Environment.NewLine + " Rarity <= Unique" + Environment.NewLine + " Identified True" + Environment.NewLine + @@ -822,6 +879,7 @@ namespace Filtration.Parser.Tests.Services " ShapedMap TRUE" + Environment.NewLine + @" Class ""My Item Class"" AnotherClass ""AndAnotherClass""" + Environment.NewLine + @" BaseType MyBaseType ""Another BaseType""" + Environment.NewLine + + @" HasExplicitMod MyMod ""Another Mod""" + Environment.NewLine + " JunkLine Let's ignore this one!" + Environment.NewLine + " #Quality Commented out quality line" + Environment.NewLine + " Sockets >= 3" + Environment.NewLine + @@ -861,6 +919,14 @@ namespace Filtration.Parser.Tests.Services Assert.AreEqual(FilterPredicateOperator.LessThan, dropLevelblockItem.FilterPredicate.PredicateOperator); Assert.AreEqual(70, dropLevelblockItem.FilterPredicate.PredicateOperand); + var gemLevelBlockItem = result.BlockItems.OfType().First(); + Assert.AreEqual(FilterPredicateOperator.Equal, gemLevelBlockItem.FilterPredicate.PredicateOperator); + Assert.AreEqual(20, gemLevelBlockItem.FilterPredicate.PredicateOperand); + + var stackSizeBlockItem = result.BlockItems.OfType().First(); + Assert.AreEqual(FilterPredicateOperator.GreaterThan, stackSizeBlockItem.FilterPredicate.PredicateOperator); + Assert.AreEqual(2, stackSizeBlockItem.FilterPredicate.PredicateOperand); + var qualityblockItem = result.BlockItems.OfType().First(); Assert.AreEqual(FilterPredicateOperator.Equal, qualityblockItem.FilterPredicate.PredicateOperator); Assert.AreEqual(15, qualityblockItem.FilterPredicate.PredicateOperand); @@ -880,6 +946,11 @@ namespace Filtration.Parser.Tests.Services Assert.Contains("MyBaseType", baseTypeblockItem.Items); Assert.Contains("Another BaseType", baseTypeblockItem.Items); + var hasExplicitModBlockItem = result.BlockItems.OfType().First(); + Assert.AreEqual(2, hasExplicitModBlockItem.Items.Count); + Assert.Contains("MyMod", hasExplicitModBlockItem.Items); + Assert.Contains("Another Mod", hasExplicitModBlockItem.Items); + var socketsblockItem = result.BlockItems.OfType().First(); Assert.AreEqual(FilterPredicateOperator.GreaterThanOrEqual, socketsblockItem.FilterPredicate.PredicateOperator); Assert.AreEqual(3, socketsblockItem.FilterPredicate.PredicateOperand); @@ -1334,6 +1405,38 @@ namespace Filtration.Parser.Tests.Services Assert.AreEqual(expectedResult, result); } + [Test] + public void TranslateItemFilterBlockToString_GemLevel_ReturnsCorrectString() + { + // Arrange + var expectedResult = "Show" + Environment.NewLine + + " GemLevel <= 15"; + + _testUtility.TestBlock.BlockItems.Add(new GemLevelBlockItem(FilterPredicateOperator.LessThanOrEqual, 15)); + + // Act + var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock); + + // Assert + Assert.AreEqual(expectedResult, result); + } + + [Test] + public void TranslateItemFilterBlockToString_StackSize_ReturnsCorrectString() + { + // Arrange + var expectedResult = "Show" + Environment.NewLine + + " StackSize = 5"; + + _testUtility.TestBlock.BlockItems.Add(new StackSizeBlockItem(FilterPredicateOperator.Equal, 5)); + + // Act + var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock); + + // Assert + Assert.AreEqual(expectedResult, result); + } + [Test] public void TranslateItemFilterBlockToString_Quality_ReturnsCorrectString() { @@ -1425,6 +1528,26 @@ namespace Filtration.Parser.Tests.Services Assert.AreEqual(expectedResult, result); } + [Test] + public void TranslateItemFilterBlockToString_HasExplicitMod_ReturnsCorrectString() + { + // Arrange + var expectedResult = "Show" + Environment.NewLine + + " HasExplicitMod \"Test Mod\" \"Another Mod\" \"Yet Another Mod\""; + + var hasExplicitModBlockItem = new HasExplicitModBlockItem(); + hasExplicitModBlockItem.Items.Add("Test Mod"); + hasExplicitModBlockItem.Items.Add("Another Mod"); + hasExplicitModBlockItem.Items.Add("Yet Another Mod"); + _testUtility.TestBlock.BlockItems.Add(hasExplicitModBlockItem); + + // Act + var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock); + + // Assert + Assert.AreEqual(expectedResult, result); + } + [Test] public void TranslateItemFilterBlockToString_Sockets_ReturnsCorrectString() { @@ -1706,9 +1829,12 @@ namespace Filtration.Parser.Tests.Services " ItemLevel > 70" + Environment.NewLine + " ItemLevel <= 85" + Environment.NewLine + " DropLevel > 56" + Environment.NewLine + + " GemLevel < 15" + Environment.NewLine + + " StackSize >= 4" + Environment.NewLine + " Rarity = Unique" + Environment.NewLine + " Class \"Body Armour\" \"Gloves\" \"Belt\" \"Two Hand Axes\"" + Environment.NewLine + " BaseType \"Greater Life Flask\" \"Simple Robe\" \"Full Wyrmscale\"" + Environment.NewLine + + " HasExplicitMod \"Guatelitzi's\" \"of Tacati\" \"Tyrannical\"" + Environment.NewLine + " SetTextColor 255 89 0 56" + Environment.NewLine + " SetBackgroundColor 0 0 0" + Environment.NewLine + " SetBorderColor 255 1 254" + Environment.NewLine + @@ -1735,6 +1861,11 @@ namespace Filtration.Parser.Tests.Services baseTypeItemblockItem.Items.Add("Simple Robe"); baseTypeItemblockItem.Items.Add("Full Wyrmscale"); _testUtility.TestBlock.BlockItems.Add(baseTypeItemblockItem); + var hasExplicitModBlockItem = new HasExplicitModBlockItem(); + hasExplicitModBlockItem.Items.Add("Guatelitzi's"); + hasExplicitModBlockItem.Items.Add("of Tacati"); + hasExplicitModBlockItem.Items.Add("Tyrannical"); + _testUtility.TestBlock.BlockItems.Add(hasExplicitModBlockItem); _testUtility.TestBlock.BlockItems.Add(new SocketsBlockItem(FilterPredicateOperator.LessThanOrEqual, 6)); _testUtility.TestBlock.BlockItems.Add(new LinkedSocketsBlockItem(FilterPredicateOperator.GreaterThanOrEqual, 4)); _testUtility.TestBlock.BlockItems.Add(new WidthBlockItem(FilterPredicateOperator.Equal, 3)); diff --git a/Filtration.Parser/Services/ItemFilterScriptTranslator.cs b/Filtration.Parser/Services/ItemFilterScriptTranslator.cs index c245487..3b61dcb 100644 --- a/Filtration.Parser/Services/ItemFilterScriptTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterScriptTranslator.cs @@ -234,7 +234,7 @@ namespace Filtration.Parser.Services var outputString = string.Empty; outputString += "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + - Environment.NewLine; + Environment.NewLine + Environment.NewLine; if (script.ItemFilterScriptSettings.BlockGroupsEnabled) { From 3aa2bf488c7979ba453dd24942c2ac434b6dc426 Mon Sep 17 00:00:00 2001 From: azakhi Date: Fri, 10 Aug 2018 17:22:55 +0300 Subject: [PATCH 04/33] Fix tests --- .../Services/TestItemFilterBlockTranslator.cs | 6 ++++-- .../Services/TestItemFilterScriptTranslator.cs | 6 +++--- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs index 3fcc7bc..70e5d06 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs @@ -541,8 +541,8 @@ namespace Filtration.Parser.Tests.Services var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript); // Assert - Assert.AreEqual(1, result.BlockItems.Count(b => b is BaseTypeBlockItem)); - var blockItem = result.BlockItems.OfType().First(); + Assert.AreEqual(1, result.BlockItems.Count(b => b is HasExplicitModBlockItem)); + var blockItem = result.BlockItems.OfType().First(); Assert.Contains("Test Mod 1", blockItem.Items); Assert.Contains("TestOneWordModInQuotes", blockItem.Items); Assert.Contains("TestOneWordModNotInQuotes", blockItem.Items); @@ -1848,6 +1848,8 @@ namespace Filtration.Parser.Tests.Services _testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.GreaterThan, 70)); _testUtility.TestBlock.BlockItems.Add(new ItemLevelBlockItem(FilterPredicateOperator.LessThanOrEqual, 85)); _testUtility.TestBlock.BlockItems.Add(new DropLevelBlockItem(FilterPredicateOperator.GreaterThan, 56)); + _testUtility.TestBlock.BlockItems.Add(new GemLevelBlockItem(FilterPredicateOperator.LessThan, 15)); + _testUtility.TestBlock.BlockItems.Add(new StackSizeBlockItem(FilterPredicateOperator.GreaterThanOrEqual, 4)); _testUtility.TestBlock.BlockItems.Add(new QualityBlockItem(FilterPredicateOperator.GreaterThan, 2)); _testUtility.TestBlock.BlockItems.Add(new RarityBlockItem(FilterPredicateOperator.Equal, (int)ItemRarity.Unique)); var classItemblockItem = new ClassBlockItem(); diff --git a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs index 2412bc0..8f197a2 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs @@ -156,7 +156,7 @@ namespace Filtration.Parser.Tests.Services script.ItemFilterBlocks.Add(block2); var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + Environment.NewLine + - "# Test Filter 1" + Environment.NewLine + + "# Test Filter 1" + Environment.NewLine + Environment.NewLine + "Show" + Environment.NewLine + " ItemLevel > 5" + Environment.NewLine + "Show" + Environment.NewLine + @@ -194,7 +194,7 @@ namespace Filtration.Parser.Tests.Services script.ItemFilterBlocks.Add(block1); script.ItemFilterBlocks.Add(block2); - var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + Environment.NewLine + + var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + Environment.NewLine + Environment.NewLine + "# Test script description" + Environment.NewLine + "# This is a really great script!" + Environment.NewLine + "# Multiple line script descriptions are fun!" + Environment.NewLine + @@ -228,7 +228,7 @@ namespace Filtration.Parser.Tests.Services }; var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + - Environment.NewLine + + Environment.NewLine + Environment.NewLine + "# Test script description" + Environment.NewLine + Environment.NewLine; var translator = CreateItemFilterScriptTranslator(); From 2230b8125754db58862bb4d21cf977ac1e3c9c9d Mon Sep 17 00:00:00 2001 From: azakhi Date: Fri, 10 Aug 2018 17:27:43 +0300 Subject: [PATCH 05/33] Fix test --- .../Services/TestItemFilterScriptTranslator.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs index 8f197a2..e6510bf 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs @@ -155,8 +155,8 @@ namespace Filtration.Parser.Tests.Services 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 + Environment.NewLine + + var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + Environment.NewLine + Environment.NewLine + + "# Test Filter 1" + Environment.NewLine + "Show" + Environment.NewLine + " ItemLevel > 5" + Environment.NewLine + "Show" + Environment.NewLine + From f03e37602dd957e4e2328e608f8f38406494b4c5 Mon Sep 17 00:00:00 2001 From: azakhi Date: Sat, 11 Aug 2018 12:28:13 +0300 Subject: [PATCH 06/33] Fix script desc bug in a better way --- .../Services/TestItemFilterScriptTranslator.cs | 4 ++-- Filtration.Parser/Services/ItemFilterScriptTranslator.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs index e6510bf..869d297 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterScriptTranslator.cs @@ -194,7 +194,7 @@ namespace Filtration.Parser.Tests.Services script.ItemFilterBlocks.Add(block1); script.ItemFilterBlocks.Add(block2); - var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + Environment.NewLine + Environment.NewLine + + var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + Environment.NewLine + "# Test script description" + Environment.NewLine + "# This is a really great script!" + Environment.NewLine + "# Multiple line script descriptions are fun!" + Environment.NewLine + @@ -228,7 +228,7 @@ namespace Filtration.Parser.Tests.Services }; var expectedOutput = "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + - Environment.NewLine + Environment.NewLine + + Environment.NewLine + "# Test script description" + Environment.NewLine + Environment.NewLine; var translator = CreateItemFilterScriptTranslator(); diff --git a/Filtration.Parser/Services/ItemFilterScriptTranslator.cs b/Filtration.Parser/Services/ItemFilterScriptTranslator.cs index 3b61dcb..392f3e3 100644 --- a/Filtration.Parser/Services/ItemFilterScriptTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterScriptTranslator.cs @@ -234,7 +234,7 @@ namespace Filtration.Parser.Services var outputString = string.Empty; outputString += "# Script edited with Filtration - https://github.com/ben-wallis/Filtration" + - Environment.NewLine + Environment.NewLine; + Environment.NewLine; if (script.ItemFilterScriptSettings.BlockGroupsEnabled) { @@ -251,8 +251,8 @@ namespace Filtration.Parser.Services outputString += "# " + line + Environment.NewLine; } } - outputString += Environment.NewLine; } + outputString += Environment.NewLine; // ReSharper disable once LoopCanBeConvertedToQuery foreach (var block in script.ItemFilterBlocks) From 738415f10a854cb3c3e3df3e790fdaead71941d6 Mon Sep 17 00:00:00 2001 From: azakhi Date: Sun, 12 Aug 2018 11:15:45 +0300 Subject: [PATCH 07/33] Add ElderMap block type --- .../BackgroundColorBlockItem.cs | 2 +- .../BlockItemTypes/BaseTypeBlockItem.cs | 2 +- .../BlockItemTypes/BorderColorBlockItem.cs | 2 +- .../BlockItemTypes/ClassBlockItem.cs | 2 +- .../BlockItemTypes/DropLevelBlockItem.cs | 2 +- .../BlockItemTypes/ElderMapBlockItem.cs | 23 +++++++++++++++++++ .../BlockItemTypes/FontSizeBlockItem.cs | 2 +- .../BlockItemTypes/GemLevelBlockItem.cs | 2 +- .../BlockItemTypes/HasExplicitModBlockItem.cs | 2 +- .../BlockItemTypes/HeightBlockItem.cs | 2 +- .../BlockItemTypes/ItemLevelBlockItem.cs | 2 +- .../PositionalSoundBlockItem.cs | 2 +- .../BlockItemTypes/RarityBlockItem.cs | 2 +- .../BlockItemTypes/SocketGroupBlockItem.cs | 2 +- .../BlockItemTypes/SoundBlockItem.cs | 2 +- .../BlockItemTypes/StackSizeBlockItem.cs | 2 +- .../BlockItemTypes/TextColorBlockItem.cs | 2 +- .../BlockItemTypes/WidthBlockItem.cs | 2 +- .../Filtration.ObjectModel.csproj | 1 + .../Services/TestItemFilterBlockTranslator.cs | 23 +++++++++++++++++++ .../Services/ItemFilterBlockTranslator.cs | 5 ++++ .../ViewModels/ItemFilterBlockViewModel.cs | 1 + 22 files changed, 70 insertions(+), 17 deletions(-) create mode 100644 Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs diff --git a/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs index 2e4bacd..3f3ea11 100644 --- a/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs @@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "SetBackgroundColor"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Background Color"; - public override int SortOrder => 21; + public override int SortOrder => 22; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs index 3eb1bf0..e51188b 100644 --- a/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs @@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override Color SummaryBackgroundColor => Colors.MediumTurquoise; public override Color SummaryTextColor => Colors.Black; - public override int SortOrder => 18; + public override int SortOrder => 19; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs index d308521..842e37b 100644 --- a/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs @@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "SetBorderColor"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Border Color"; - public override int SortOrder => 22; + public override int SortOrder => 23; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs index ef5d250..e46882c 100644 --- a/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs @@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override Color SummaryBackgroundColor => Colors.MediumSeaGreen; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 17; + public override int SortOrder => 18; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs index a9f77c7..a53108c 100644 --- a/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs @@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string SummaryText => "Drop Level " + FilterPredicate; public override Color SummaryBackgroundColor => Colors.DodgerBlue; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 13; + public override int SortOrder => 14; public override int Minimum => 0; public override int Maximum => 100; } diff --git a/Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs new file mode 100644 index 0000000..a98cf6a --- /dev/null +++ b/Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs @@ -0,0 +1,23 @@ +using System.Windows.Media; +using Filtration.ObjectModel.BlockItemBaseTypes; + +namespace Filtration.ObjectModel.BlockItemTypes +{ + public sealed class ElderMapBlockItem : BooleanBlockItem + { + public ElderMapBlockItem() + { + } + + public ElderMapBlockItem(bool booleanValue) : base(booleanValue) + { + } + + public override string PrefixText => "ElderMap"; + public override string DisplayHeading => "Elder Map"; + public override Color SummaryBackgroundColor => Colors.DarkGoldenrod; + public override Color SummaryTextColor => Colors.White; + public override int SortOrder => 9; + + } +} diff --git a/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs index dcd47bf..2e3d9e0 100644 --- a/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs @@ -16,7 +16,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "SetFontSize"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Font Size"; - public override int SortOrder => 23; + public override int SortOrder => 24; public override int Minimum => 11; public override int Maximum => 45; } diff --git a/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs index 50f3f6e..35bc632 100644 --- a/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs @@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string SummaryText => "Gem Level " + FilterPredicate; public override Color SummaryBackgroundColor => Colors.DarkSlateGray; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 14; + public override int SortOrder => 15; public override int Minimum => 0; public override int Maximum => 40; } diff --git a/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs index 363c571..9070f73 100644 --- a/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs @@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override Color SummaryBackgroundColor => Colors.MidnightBlue; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 19; + public override int SortOrder => 20; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs index cd06ae0..2f16a13 100644 --- a/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs @@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string SummaryText => "Height " + FilterPredicate; public override Color SummaryBackgroundColor => Colors.LightBlue; public override Color SummaryTextColor => Colors.Black; - public override int SortOrder => 10; + public override int SortOrder => 11; public override int Minimum => 0; public override int Maximum => 6; } diff --git a/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs index ace3d69..638d6d2 100644 --- a/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs @@ -20,7 +20,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string SummaryText => "Item Level " + FilterPredicate; public override Color SummaryBackgroundColor => Colors.DarkSlateGray; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 12; + public override int SortOrder => 13; public override int Minimum => 0; public override int Maximum => 100; } diff --git a/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs index bccabb5..8c60200 100644 --- a/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs @@ -17,6 +17,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "PlayAlertSoundPositional"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Play Positional Alert Sound"; - public override int SortOrder => 25; + public override int SortOrder => 26; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs index eb9203a..da72e69 100644 --- a/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs @@ -30,7 +30,7 @@ namespace Filtration.ObjectModel.BlockItemTypes ((ItemRarity) FilterPredicate.PredicateOperand).GetAttributeDescription(); public override Color SummaryBackgroundColor => Colors.LightCoral; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 16; + public override int SortOrder => 17; public override int Minimum => 0; public override int Maximum => (int)ItemRarity.Unique; } diff --git a/Filtration.ObjectModel/BlockItemTypes/SocketGroupBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/SocketGroupBlockItem.cs index 932d264..d654f34 100644 --- a/Filtration.ObjectModel/BlockItemTypes/SocketGroupBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/SocketGroupBlockItem.cs @@ -39,7 +39,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override Color SummaryBackgroundColor => Colors.GhostWhite; public override Color SummaryTextColor => Colors.Black; - public override int SortOrder => 9; + public override int SortOrder => 10; private SocketColor StringToSocketColor(char socketColorString) { diff --git a/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs index bd1776f..4642047 100644 --- a/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs @@ -17,6 +17,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "PlayAlertSound"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Play Alert Sound"; - public override int SortOrder => 24; + public override int SortOrder => 25; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs index dc36b76..9b15ea1 100644 --- a/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs @@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string SummaryText => "Stack Size " + FilterPredicate; public override Color SummaryBackgroundColor => Colors.DarkSlateGray; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 15; + public override int SortOrder => 16; public override int Minimum => 0; public override int Maximum => 1000; } diff --git a/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs index 2b7cc5d..3ac02c5 100644 --- a/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs @@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "SetTextColor"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Text Color"; - public override int SortOrder => 20; + public override int SortOrder => 21; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs index b646547..0bb960d 100644 --- a/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs @@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string SummaryText => "Width " + FilterPredicate; public override Color SummaryBackgroundColor => Colors.MediumPurple; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 11; + public override int SortOrder => 12; public override int Minimum => 0; public override int Maximum => 2; } diff --git a/Filtration.ObjectModel/Filtration.ObjectModel.csproj b/Filtration.ObjectModel/Filtration.ObjectModel.csproj index 81baa3b..72601b3 100644 --- a/Filtration.ObjectModel/Filtration.ObjectModel.csproj +++ b/Filtration.ObjectModel/Filtration.ObjectModel.csproj @@ -61,6 +61,7 @@ + diff --git a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs index 70e5d06..2b73cd3 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs @@ -422,6 +422,23 @@ namespace Filtration.Parser.Tests.Services Assert.IsFalse(blockItem.BooleanValue); } + [Test] + public void TranslateStringToItemFilterBlock_ElderMap_ReturnsCorrectObject() + { + // Arrange + var inputString = "Show" + Environment.NewLine + + " ElderMap false"; + + // Act + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript); + + // Assert + + Assert.AreEqual(1, result.BlockItems.Count(b => b is ElderMapBlockItem)); + var blockItem = result.BlockItems.OfType().First(); + Assert.IsFalse(blockItem.BooleanValue); + } + [Test] public void TranslateStringToItemFilterBlock_Identified_ReturnsCorrectObject() { @@ -877,6 +894,7 @@ namespace Filtration.Parser.Tests.Services " ElderItem true" + Environment.NewLine + " ShaperItem False" + Environment.NewLine + " ShapedMap TRUE" + Environment.NewLine + + " ElderMap False" + Environment.NewLine + @" Class ""My Item Class"" AnotherClass ""AndAnotherClass""" + Environment.NewLine + @" BaseType MyBaseType ""Another BaseType""" + Environment.NewLine + @" HasExplicitMod MyMod ""Another Mod""" + Environment.NewLine + @@ -915,6 +933,9 @@ namespace Filtration.Parser.Tests.Services var shapedMapBlockItem = result.BlockItems.OfType().First(); Assert.IsTrue(shapedMapBlockItem.BooleanValue); + var elderMapBlockItem = result.BlockItems.OfType().First(); + Assert.IsFalse(elderMapBlockItem.BooleanValue); + var dropLevelblockItem = result.BlockItems.OfType().First(); Assert.AreEqual(FilterPredicateOperator.LessThan, dropLevelblockItem.FilterPredicate.PredicateOperator); Assert.AreEqual(70, dropLevelblockItem.FilterPredicate.PredicateOperand); @@ -1823,6 +1844,7 @@ namespace Filtration.Parser.Tests.Services " ElderItem True" + Environment.NewLine + " ShaperItem False" + Environment.NewLine + " ShapedMap True" + Environment.NewLine + + " ElderMap True" + Environment.NewLine + " Height <= 6" + Environment.NewLine + " Height >= 2" + Environment.NewLine + " Width = 3" + Environment.NewLine + @@ -1881,6 +1903,7 @@ namespace Filtration.Parser.Tests.Services _testUtility.TestBlock.BlockItems.Add(new ElderItemBlockItem(true)); _testUtility.TestBlock.BlockItems.Add(new ShaperItemBlockItem(false)); _testUtility.TestBlock.BlockItems.Add(new ShapedMapBlockItem(true)); + _testUtility.TestBlock.BlockItems.Add(new ElderMapBlockItem(true)); // Act var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock); diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index 5e30f47..81b4b17 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -281,6 +281,11 @@ namespace Filtration.Parser.Services AddStringListItemToBlockItems(block, trimmedLine); break; } + case "ElderMap": + { + AddBooleanItemToBlockItems(block, trimmedLine); + break; + } } } diff --git a/Filtration/ViewModels/ItemFilterBlockViewModel.cs b/Filtration/ViewModels/ItemFilterBlockViewModel.cs index 396190d..7aaca8e 100644 --- a/Filtration/ViewModels/ItemFilterBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterBlockViewModel.cs @@ -160,6 +160,7 @@ namespace Filtration.ViewModels typeof (ElderItemBlockItem), typeof (ShaperItemBlockItem), typeof (ShapedMapBlockItem), + typeof (ElderMapBlockItem), typeof (GemLevelBlockItem), typeof (StackSizeBlockItem), typeof (HasExplicitModBlockItem) From 2c4096ff2c37a464e861462934b787d356df1ddf Mon Sep 17 00:00:00 2001 From: azakhi Date: Mon, 20 Aug 2018 21:19:18 +0300 Subject: [PATCH 08/33] Add DisableDropSound block type --- .../DisableDropSoundBlockItem.cs | 23 +++++++++++++++ .../Filtration.ObjectModel.csproj | 1 + .../Services/TestItemFilterBlockTranslator.cs | 29 +++++++++++++++++-- .../Services/ItemFilterBlockTranslator.cs | 8 +++++ .../ViewModels/ItemFilterBlockViewModel.cs | 3 +- 5 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 Filtration.ObjectModel/BlockItemTypes/DisableDropSoundBlockItem.cs diff --git a/Filtration.ObjectModel/BlockItemTypes/DisableDropSoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/DisableDropSoundBlockItem.cs new file mode 100644 index 0000000..73ed861 --- /dev/null +++ b/Filtration.ObjectModel/BlockItemTypes/DisableDropSoundBlockItem.cs @@ -0,0 +1,23 @@ +using System.Windows.Media; +using Filtration.ObjectModel.BlockItemBaseTypes; + +namespace Filtration.ObjectModel.BlockItemTypes +{ + public sealed class DisableDropSoundBlockItem : BooleanBlockItem, IAudioVisualBlockItem + { + public DisableDropSoundBlockItem() + { + } + + public DisableDropSoundBlockItem(bool booleanValue) : base(booleanValue) + { + } + + public override string PrefixText => "DisableDropSound"; + public override string DisplayHeading => "Disable Drop Sound"; + public override Color SummaryBackgroundColor => Colors.Transparent; + public override Color SummaryTextColor => Colors.Transparent; + public override int SortOrder => 27; + + } +} diff --git a/Filtration.ObjectModel/Filtration.ObjectModel.csproj b/Filtration.ObjectModel/Filtration.ObjectModel.csproj index 72601b3..6d7ae71 100644 --- a/Filtration.ObjectModel/Filtration.ObjectModel.csproj +++ b/Filtration.ObjectModel/Filtration.ObjectModel.csproj @@ -61,6 +61,7 @@ + diff --git a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs index 2b73cd3..7c1d148 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs @@ -874,7 +874,24 @@ namespace Filtration.Parser.Tests.Services Assert.AreEqual("7", blockItem.Value); Assert.AreEqual(95, blockItem.SecondValue); } - + + [Test] + public void TranslateStringToItemFilterBlock_DisableDropSound_ReturnsCorrectObject() + { + // Arrange + var inputString = "Show" + Environment.NewLine + + " DisableDropSound True"; + + // Act + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript); + + // Assert + + Assert.AreEqual(1, result.BlockItems.Count(b => b is DisableDropSoundBlockItem)); + var blockItem = result.BlockItems.OfType().First(); + Assert.IsTrue(blockItem.BooleanValue); + } + [Test] public void TranslateStringToItemFilterBlock_Everything_ReturnsCorrectObject() { @@ -907,7 +924,8 @@ namespace Filtration.Parser.Tests.Services " SetBackgroundColor 255 100 5" + Environment.NewLine + " SetBorderColor 0 0 0" + Environment.NewLine + " SetFontSize 50" + Environment.NewLine + - " PlayAlertSound 3" + Environment.NewLine; + " PlayAlertSound 3" + Environment.NewLine + + " DisableDropSound False" + Environment.NewLine; // Act var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript); @@ -1009,6 +1027,9 @@ namespace Filtration.Parser.Tests.Services var soundblockItem = result.BlockItems.OfType().First(); Assert.AreEqual("3", soundblockItem.Value); Assert.AreEqual(79, soundblockItem.SecondValue); + + var disableDropSoundBlockItem = result.BlockItems.OfType().First(); + Assert.IsFalse(disableDropSoundBlockItem.BooleanValue); } [Test] @@ -1861,7 +1882,8 @@ namespace Filtration.Parser.Tests.Services " SetBackgroundColor 0 0 0" + Environment.NewLine + " SetBorderColor 255 1 254" + Environment.NewLine + " SetFontSize 50" + Environment.NewLine + - " PlayAlertSound 6 90"; + " PlayAlertSound 6 90" + Environment.NewLine + + " DisableDropSound True"; _testUtility.TestBlock.BlockItems.Add(new ActionBlockItem(BlockAction.Show)); _testUtility.TestBlock.BlockItems.Add(new IdentifiedBlockItem(true)); @@ -1904,6 +1926,7 @@ namespace Filtration.Parser.Tests.Services _testUtility.TestBlock.BlockItems.Add(new ShaperItemBlockItem(false)); _testUtility.TestBlock.BlockItems.Add(new ShapedMapBlockItem(true)); _testUtility.TestBlock.BlockItems.Add(new ElderMapBlockItem(true)); + _testUtility.TestBlock.BlockItems.Add(new DisableDropSoundBlockItem(true)); // Act var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock); diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index 81b4b17..a568ed7 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -286,6 +286,14 @@ namespace Filtration.Parser.Services AddBooleanItemToBlockItems(block, trimmedLine); break; } + case "DisableDropSound": + { + // Only ever use the last DisableDropSound item encountered as multiples aren't valid. + RemoveExistingBlockItemsOfType(block); + + AddBooleanItemToBlockItems(block, trimmedLine); + break; + } } } diff --git a/Filtration/ViewModels/ItemFilterBlockViewModel.cs b/Filtration/ViewModels/ItemFilterBlockViewModel.cs index 7aaca8e..62b43b2 100644 --- a/Filtration/ViewModels/ItemFilterBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterBlockViewModel.cs @@ -173,7 +173,8 @@ namespace Filtration.ViewModels typeof (BorderColorBlockItem), typeof (FontSizeBlockItem), typeof (SoundBlockItem), - typeof (PositionalSoundBlockItem) + typeof (PositionalSoundBlockItem), + typeof (DisableDropSoundBlockItem) }; public bool BlockEnabled From bd730dd518d65267bca6afb9021f8dc66f2cead4 Mon Sep 17 00:00:00 2001 From: azakhi Date: Fri, 10 Aug 2018 16:02:12 +0300 Subject: [PATCH 09/33] Add section features --- .../MoveSectionToIndexCommand.cs | 49 +++ .../ItemFilterScript/PasteSectionCommand.cs | 49 +++ .../ItemFilterScript/RemoveSectionCommand.cs | 42 ++ .../Filtration.ObjectModel.csproj | 3 + .../ItemFilterBlockViewModelBase.cs | 16 +- .../ItemFilterCommentBlockViewModel.cs | 37 +- .../ViewModels/ItemFilterScriptViewModel.cs | 379 +++++++++++++++++- Filtration/ViewModels/MainWindowViewModel.cs | 31 ++ Filtration/Views/ItemFilterBlockView.xaml | 2 +- .../Views/ItemFilterCommentBlockView.xaml | 22 + Filtration/Views/MainWindow.xaml | 4 + 11 files changed, 616 insertions(+), 18 deletions(-) create mode 100644 Filtration.ObjectModel/Commands/ItemFilterScript/MoveSectionToIndexCommand.cs create mode 100644 Filtration.ObjectModel/Commands/ItemFilterScript/PasteSectionCommand.cs create mode 100644 Filtration.ObjectModel/Commands/ItemFilterScript/RemoveSectionCommand.cs diff --git a/Filtration.ObjectModel/Commands/ItemFilterScript/MoveSectionToIndexCommand.cs b/Filtration.ObjectModel/Commands/ItemFilterScript/MoveSectionToIndexCommand.cs new file mode 100644 index 0000000..40d0bae --- /dev/null +++ b/Filtration.ObjectModel/Commands/ItemFilterScript/MoveSectionToIndexCommand.cs @@ -0,0 +1,49 @@ +using System.Collections.Generic; + +namespace Filtration.ObjectModel.Commands.ItemFilterScript +{ + public class MoveSectionToIndexCommand : IUndoableCommand + { + private readonly IItemFilterScript _itemFilterScript; + private int _sectionStart; + private int _sectionSize; + private int _index; + + public MoveSectionToIndexCommand(IItemFilterScript itemFilterScript, int sectionStart, int sectionSize, int index) + { + _itemFilterScript = itemFilterScript; + _sectionStart = sectionStart; + _sectionSize = sectionSize; + _index = index; + } + public void Execute() + { + List blocksToMove = new List(); + for(var i = 0; i < _sectionSize; i++) + { + blocksToMove.Add(_itemFilterScript.ItemFilterBlocks[_sectionStart]); + _itemFilterScript.ItemFilterBlocks.RemoveAt(_sectionStart); + } + for (var i = 0; i < _sectionSize; i++) + { + _itemFilterScript.ItemFilterBlocks.Insert(_index + i, blocksToMove[i]); + } + } + + public void Undo() + { + List blocksToMove = new List(); + for (var i = 0; i < _sectionSize; i++) + { + blocksToMove.Add(_itemFilterScript.ItemFilterBlocks[_index]); + _itemFilterScript.ItemFilterBlocks.RemoveAt(_index); + } + for (var i = 0; i < _sectionSize; i++) + { + _itemFilterScript.ItemFilterBlocks.Insert(_sectionStart + i, blocksToMove[i]); + } + } + + public void Redo() => Execute(); + } +} \ No newline at end of file diff --git a/Filtration.ObjectModel/Commands/ItemFilterScript/PasteSectionCommand.cs b/Filtration.ObjectModel/Commands/ItemFilterScript/PasteSectionCommand.cs new file mode 100644 index 0000000..52458c6 --- /dev/null +++ b/Filtration.ObjectModel/Commands/ItemFilterScript/PasteSectionCommand.cs @@ -0,0 +1,49 @@ +using System; +using System.Collections.Generic; + +namespace Filtration.ObjectModel.Commands.ItemFilterScript +{ + public class PasteSectionCommand : IUndoableCommand + { + private readonly IItemFilterScript _itemFilterScript; + private readonly List _pastedItemFilterBlocks; + private readonly IItemFilterBlockBase _addAfterItemFilterBlock; + + public PasteSectionCommand(IItemFilterScript itemFilterScript, List pastedItemFilterBlocks, IItemFilterBlockBase addAfterItemFilterBlock) + { + _itemFilterScript = itemFilterScript; + _pastedItemFilterBlocks = pastedItemFilterBlocks; + _addAfterItemFilterBlock = addAfterItemFilterBlock; + } + + public void Execute() + { + if (_addAfterItemFilterBlock != null) + { + var lastAddedBlock = _addAfterItemFilterBlock; + foreach(var block in _pastedItemFilterBlocks) + { + _itemFilterScript.ItemFilterBlocks.Insert(_itemFilterScript.ItemFilterBlocks.IndexOf(lastAddedBlock) + 1, block); + lastAddedBlock = block; + } + } + else + { + foreach (var block in _pastedItemFilterBlocks) + { + _itemFilterScript.ItemFilterBlocks.Add(block); + } + } + } + + public void Undo() + { + foreach (var block in _pastedItemFilterBlocks) + { + _itemFilterScript.ItemFilterBlocks.Remove(block); + } + } + + public void Redo() => Execute(); + } +} \ No newline at end of file diff --git a/Filtration.ObjectModel/Commands/ItemFilterScript/RemoveSectionCommand.cs b/Filtration.ObjectModel/Commands/ItemFilterScript/RemoveSectionCommand.cs new file mode 100644 index 0000000..2718eb3 --- /dev/null +++ b/Filtration.ObjectModel/Commands/ItemFilterScript/RemoveSectionCommand.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; + +namespace Filtration.ObjectModel.Commands.ItemFilterScript +{ + public class RemoveSectionCommand : IUndoableCommand + { + private readonly IItemFilterScript _itemFilterScript; + private List _removedItemFilterBlocks; + private int _sectionStart; + private int _sectionSize; + + public RemoveSectionCommand(IItemFilterScript itemFilterScript, int sectionStart, int sectionSize) + { + _itemFilterScript = itemFilterScript; + _sectionStart = sectionStart; + _sectionSize = sectionSize; + _removedItemFilterBlocks = new List(); + for(var i = 0; i < _sectionSize; i++) + { + _removedItemFilterBlocks.Add(_itemFilterScript.ItemFilterBlocks[_sectionStart + i]); + } + } + public void Execute() + { + for (var i = 0; i < _sectionSize; i++) + { + _itemFilterScript.ItemFilterBlocks.RemoveAt(_sectionStart); + } + } + + public void Undo() + { + for (var i = 0; i < _sectionSize; i++) + { + _itemFilterScript.ItemFilterBlocks.Insert(_sectionStart + i, _removedItemFilterBlocks[i]); + } + } + + public void Redo() => Execute(); + } +} diff --git a/Filtration.ObjectModel/Filtration.ObjectModel.csproj b/Filtration.ObjectModel/Filtration.ObjectModel.csproj index 6d7ae71..8db75c7 100644 --- a/Filtration.ObjectModel/Filtration.ObjectModel.csproj +++ b/Filtration.ObjectModel/Filtration.ObjectModel.csproj @@ -86,12 +86,15 @@ + + + diff --git a/Filtration/ViewModels/ItemFilterBlockViewModelBase.cs b/Filtration/ViewModels/ItemFilterBlockViewModelBase.cs index 86dcfcb..395bbe1 100644 --- a/Filtration/ViewModels/ItemFilterBlockViewModelBase.cs +++ b/Filtration/ViewModels/ItemFilterBlockViewModelBase.cs @@ -9,13 +9,15 @@ namespace Filtration.ViewModels { void Initialise(IItemFilterBlockBase itemfilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel); IItemFilterBlockBase BaseBlock { get; } - bool IsDirty { get; set; } + bool IsDirty { get; set; } + bool IsVisible { get; set; } event EventHandler BlockBecameDirty; } internal abstract class ItemFilterBlockViewModelBase : ViewModelBase, IItemFilterBlockViewModelBase { private bool _isDirty; + private bool _isVisible; public ItemFilterBlockViewModelBase() { @@ -28,6 +30,8 @@ namespace Filtration.ViewModels MoveBlockDownCommand = new RelayCommand(OnMoveBlockDownCommand); MoveBlockToTopCommand = new RelayCommand(OnMoveBlockToTopCommand); MoveBlockToBottomCommand = new RelayCommand(OnMoveBlockToBottomCommand); + + _isVisible = true; } @@ -64,6 +68,16 @@ namespace Filtration.ViewModels BlockBecameDirty?.Invoke(this, EventArgs.Empty); } } + } + + public bool IsVisible + { + get => _isVisible; + set + { + _isVisible = value; + RaisePropertyChanged(); + } } private void OnCopyBlockCommand() diff --git a/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs b/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs index 08f5f23..3516348 100644 --- a/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterCommentBlockViewModel.cs @@ -1,15 +1,26 @@ -using Filtration.ObjectModel; +using Filtration.ObjectModel; +using GalaSoft.MvvmLight.CommandWpf; namespace Filtration.ViewModels { internal interface IItemFilterCommentBlockViewModel : IItemFilterBlockViewModelBase { IItemFilterCommentBlock ItemFilterCommentBlock { get; } - string Comment { get; } + string Comment { get; } + bool IsExpanded { get; set; } } internal class ItemFilterCommentBlockViewModel : ItemFilterBlockViewModelBase, IItemFilterCommentBlockViewModel - { + { + private bool _isExpanded; + + public ItemFilterCommentBlockViewModel() + { + _isExpanded = true; + + ToggleSectionCommand = new RelayCommand(OnToggleSectionCommand); + } + public override void Initialise(IItemFilterBlockBase itemfilterBlock, IItemFilterScriptViewModel itemFilterScriptViewModel) { _parentScriptViewModel = itemFilterScriptViewModel; @@ -17,7 +28,9 @@ namespace Filtration.ViewModels BaseBlock = ItemFilterCommentBlock; base.Initialise(itemfilterBlock, itemFilterScriptViewModel); - } + } + + public RelayCommand ToggleSectionCommand { get; } public IItemFilterCommentBlock ItemFilterCommentBlock { get; private set; } @@ -36,6 +49,22 @@ namespace Filtration.ViewModels RaisePropertyChanged(); } } + } + + + public bool IsExpanded + { + get => _isExpanded; + set + { + _isExpanded = value; + RaisePropertyChanged(); + } + } + + private void OnToggleSectionCommand() + { + _parentScriptViewModel.ToggleSection(this); } } } \ No newline at end of file diff --git a/Filtration/ViewModels/ItemFilterScriptViewModel.cs b/Filtration/ViewModels/ItemFilterScriptViewModel.cs index e76f10f..4cf2522 100644 --- a/Filtration/ViewModels/ItemFilterScriptViewModel.cs +++ b/Filtration/ViewModels/ItemFilterScriptViewModel.cs @@ -44,11 +44,16 @@ namespace Filtration.ViewModels void SetDirtyFlag(); bool HasSelectedEnabledBlock(); bool HasSelectedDisabledBlock(); + bool HasSelectedCommentBlock(); RelayCommand AddBlockCommand { get; } RelayCommand AddSectionCommand { get; } RelayCommand DisableBlockCommand { get; } RelayCommand EnableBlockCommand { get; } + RelayCommand DisableSectionCommand { get; } + RelayCommand EnableSectionCommand { get; } + RelayCommand ExpandSectionCommand { get; } + RelayCommand CollapseSectionCommand { get; } RelayCommand DeleteBlockCommand { get; } RelayCommand MoveBlockUpCommand { get; } RelayCommand MoveBlockDownCommand { get; } @@ -74,6 +79,7 @@ namespace Filtration.ViewModels void MoveBlockUp(IItemFilterBlockViewModelBase targetBlockViewModelBase); void MoveBlockDown(IItemFilterBlockViewModelBase targetBlockViewModelBase); void MoveBlockToBottom(IItemFilterBlockViewModelBase targetBlockViewModelBase); + void ToggleSection(IItemFilterCommentBlockViewModel targetCommentBlockViewModelBase); } internal class ItemFilterScriptViewModel : PaneViewModel, IItemFilterScriptViewModel @@ -131,6 +137,10 @@ namespace Filtration.ViewModels AddSectionCommand = new RelayCommand(OnAddCommentBlockCommand, () => SelectedBlockViewModel != null); DisableBlockCommand = new RelayCommand(OnDisableBlockCommand, HasSelectedEnabledBlock); EnableBlockCommand = new RelayCommand(OnEnableBlockCommand, HasSelectedDisabledBlock); + DisableSectionCommand = new RelayCommand(OnDisableSectionCommand, HasSelectedCommentBlock); + EnableSectionCommand = new RelayCommand(OnEnableSectionCommand, HasSelectedCommentBlock); + ExpandSectionCommand = new RelayCommand(OnExpandSectionCommand, HasSelectedCommentBlock); + CollapseSectionCommand = new RelayCommand(OnCollapseSectionCommand, HasSelectedCommentBlock); CopyBlockCommand = new RelayCommand(OnCopyBlockCommand, () => SelectedBlockViewModel != null); CopyBlockStyleCommand = new RelayCommand(OnCopyBlockStyleCommand, () => SelectedBlockViewModel != null); PasteBlockCommand = new RelayCommand(OnPasteBlockCommand, () => SelectedBlockViewModel != null); @@ -245,6 +255,10 @@ namespace Filtration.ViewModels public RelayCommand AddSectionCommand { get; } public RelayCommand EnableBlockCommand { get; } public RelayCommand DisableBlockCommand { get; } + public RelayCommand DisableSectionCommand { get; } + public RelayCommand EnableSectionCommand { get; } + public RelayCommand ExpandSectionCommand { get; } + public RelayCommand CollapseSectionCommand { get; } public RelayCommand CopyBlockCommand { get; } public RelayCommand CopyBlockStyleCommand { get; } public RelayCommand PasteBlockCommand { get; } @@ -359,6 +373,13 @@ namespace Filtration.ViewModels return SelectedBlockViewModel != null; } + public bool HasSelectedCommentBlock() + { + var selectedBlockViewModel = SelectedBlockViewModel as IItemFilterCommentBlockViewModel; + + return selectedBlockViewModel != null; + } + public IItemFilterBlockViewModelBase SelectedBlockViewModel { get => _selectedBlockViewModel; @@ -634,7 +655,15 @@ namespace Filtration.ViewModels private void OnCopyBlockCommand() { - CopyBlock(SelectedBlockViewModel); + var commentBlockViewModel = SelectedBlockViewModel as IItemFilterCommentBlockViewModel; + if (commentBlockViewModel == null || commentBlockViewModel.IsExpanded) + { + CopyBlock(SelectedBlockViewModel); + } + else + { + CopySection(commentBlockViewModel); + } } public void CopyBlock(IItemFilterBlockViewModelBase targetBlockViewModel) @@ -649,6 +678,26 @@ namespace Filtration.ViewModels } } + public void CopySection(IItemFilterCommentBlockViewModel targetCommentBlockViewModel) + { + var sectionStart = ItemFilterBlockViewModels.IndexOf(targetCommentBlockViewModel) + 1; + var copyText = _blockTranslator.TranslateItemFilterBlockBaseToString(targetCommentBlockViewModel.BaseBlock); + while (sectionStart < ItemFilterBlockViewModels.Count && ItemFilterBlockViewModels[sectionStart] as IItemFilterCommentBlockViewModel == null) + { + copyText += Environment.NewLine + "##CopySection##" + Environment.NewLine + _blockTranslator.TranslateItemFilterBlockBaseToString(ItemFilterBlockViewModels[sectionStart].BaseBlock); + sectionStart++; + } + + try + { + _clipboardService.SetClipboardText(copyText); + } + catch + { + _messageBoxService.Show("Clipboard Error", "Failed to access the clipboard, copy command not completed.", MessageBoxButton.OK, MessageBoxImage.Error); + } + } + private void OnCopyBlockStyleCommand() { var selectedBlockViewModel = SelectedBlockViewModel as IItemFilterBlockViewModel; @@ -713,11 +762,78 @@ namespace Filtration.ViewModels { var clipboardText = _clipboardService.GetClipboardText(); if (string.IsNullOrEmpty(clipboardText)) return; - - var translatedBlock = _blockTranslator.TranslateStringToItemFilterBlock(clipboardText, Script, true); // TODO: Doesn't handle pasting comment blocks? - if (translatedBlock == null) return; - _scriptCommandManager.ExecuteCommand(new PasteBlockCommand(Script, translatedBlock, targetBlockViewModelBase.BaseBlock)); + string[] blockTexts = clipboardText.Split(new string[] { Environment.NewLine + "##CopySection##" + Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries); + + var previousBlock = targetBlockViewModelBase.BaseBlock; + var pastedSection = false; + List blocksToPaste = new List(); + List isBlockDisabled = new List(); + foreach (var curBlock in blockTexts) + { + IItemFilterBlockBase translatedBlock; + var pastedDisabledBlock = false; + if (!curBlock.StartsWith(@"#Disabled Block Start") && curBlock.StartsWith(@"#")) + { + translatedBlock = _blockTranslator.TranslateStringToItemFilterCommentBlock(curBlock, Script); + pastedSection = true; + } + else if (curBlock.StartsWith(@"#Disabled Block Start")) + { + pastedDisabledBlock = true; + string[] textLines = curBlock.Split(new[] { Environment.NewLine }, StringSplitOptions.None); + if (textLines.Length < 3) + continue; + + string cleanBlock = textLines[1].Substring(1); + for(int i = 2; i < (textLines.Length - 1); i++) + { + cleanBlock += Environment.NewLine + textLines[i].Substring(1); + } + translatedBlock = _blockTranslator.TranslateStringToItemFilterBlock(cleanBlock, Script, true); + } + else + { + translatedBlock = _blockTranslator.TranslateStringToItemFilterBlock(curBlock, Script, true); + } + + if (translatedBlock == null) continue; + + blocksToPaste.Add(translatedBlock); + + isBlockDisabled.Add(pastedDisabledBlock); + } + + if(pastedSection) + { + var blockIndex = ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase) + 1; + _scriptCommandManager.ExecuteCommand(new PasteSectionCommand(Script, blocksToPaste, targetBlockViewModelBase.BaseBlock)); + SelectedBlockViewModel = ItemFilterBlockViewModels[blockIndex]; + foreach (var isDisabled in isBlockDisabled) + { + var block = ItemFilterBlockViewModels[blockIndex++] as IItemFilterBlockViewModel; + if(block != null) + { + block.BlockEnabled = !isDisabled; + } + } + OnCollapseSectionCommand(); + } + else + { + var blockIndex = ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase) + 1; + for (var i = 0; i < blocksToPaste.Count; i++) + { + _scriptCommandManager.ExecuteCommand(new PasteBlockCommand(Script, blocksToPaste[i], previousBlock)); + previousBlock = blocksToPaste[i]; + + var block = ItemFilterBlockViewModels[blockIndex + i] as IItemFilterBlockViewModel; + if (block != null) + { + block.BlockEnabled = !isBlockDisabled[i]; + } + } + } } catch (Exception e) { @@ -730,32 +846,151 @@ namespace Filtration.ViewModels private void OnMoveBlockToTopCommand() { - MoveBlockToTop(SelectedBlockViewModel); + var commentBlockViewModel = SelectedBlockViewModel as IItemFilterCommentBlockViewModel; + if (commentBlockViewModel == null || commentBlockViewModel.IsExpanded) + { + MoveBlockToTop(SelectedBlockViewModel); + } + else + { + MoveSectionToTop(commentBlockViewModel); + } } private void OnMoveBlockUpCommand() { - MoveBlockUp(SelectedBlockViewModel); + var commentBlockViewModel = SelectedBlockViewModel as IItemFilterCommentBlockViewModel; + if(commentBlockViewModel == null || commentBlockViewModel.IsExpanded) + { + MoveBlockUp(SelectedBlockViewModel); + } + else + { + MoveSectionUp(commentBlockViewModel); + } } public void MoveBlockUp(IItemFilterBlockViewModelBase targetBlockViewModelBase) { - _scriptCommandManager.ExecuteCommand(new MoveBlockUpCommand(Script, targetBlockViewModelBase?.BaseBlock)); + var blockIndex = ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase); + if (ItemFilterBlockViewModels[blockIndex - 1].IsVisible) + { + _scriptCommandManager.ExecuteCommand(new MoveBlockUpCommand(Script, targetBlockViewModelBase?.BaseBlock)); + } + else + { + var aboveSectionStart = blockIndex - 1; + while(ItemFilterBlockViewModels[aboveSectionStart] as IItemFilterCommentBlockViewModel == null) + { + aboveSectionStart--; + } + _scriptCommandManager.ExecuteCommand(new MoveSectionToIndexCommand(Script, blockIndex, 1, aboveSectionStart)); + } + } + + public void MoveSectionUp(IItemFilterCommentBlockViewModel targetCommentBlockViewModel) + { + var sectionStart = ItemFilterBlockViewModels.IndexOf(targetCommentBlockViewModel); + var sectionEnd = sectionStart + 1; + while(sectionEnd < ItemFilterBlockViewModels.Count && ItemFilterBlockViewModels[sectionEnd] as IItemFilterCommentBlockViewModel == null) + { + sectionEnd++; + } + + var newLocation = sectionStart - 1; + if (ItemFilterBlockViewModels[newLocation].IsVisible) + { + _scriptCommandManager.ExecuteCommand(new MoveSectionToIndexCommand(Script, sectionStart, sectionEnd - sectionStart, newLocation)); + } + else + { + while (ItemFilterBlockViewModels[newLocation] as IItemFilterCommentBlockViewModel == null) + { + newLocation--; + } + _scriptCommandManager.ExecuteCommand(new MoveSectionToIndexCommand(Script, sectionStart, sectionEnd - sectionStart, newLocation)); + } + + ToggleSection(ItemFilterBlockViewModels[newLocation] as IItemFilterCommentBlockViewModel); + SelectedBlockViewModel = ItemFilterBlockViewModels[newLocation]; } private void OnMoveBlockDownCommand() { - MoveBlockDown(SelectedBlockViewModel); + var commentBlockViewModel = SelectedBlockViewModel as IItemFilterCommentBlockViewModel; + if (commentBlockViewModel == null || commentBlockViewModel.IsExpanded) + { + MoveBlockDown(SelectedBlockViewModel); + } + else + { + MoveSectionDown(commentBlockViewModel); + } } public void MoveBlockDown(IItemFilterBlockViewModelBase targetBlockViewModelBase) { - _scriptCommandManager.ExecuteCommand(new MoveBlockDownCommand(Script, targetBlockViewModelBase?.BaseBlock)); + var blockIndex = ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase); + var beloveBlockAsComment = ItemFilterBlockViewModels[blockIndex + 1] as IItemFilterCommentBlockViewModel; + if (beloveBlockAsComment == null || beloveBlockAsComment.IsExpanded) + { + _scriptCommandManager.ExecuteCommand(new MoveBlockDownCommand(Script, targetBlockViewModelBase?.BaseBlock)); + } + else + { + var beloveSectionEnd = blockIndex + 2; + while (beloveSectionEnd < ItemFilterBlockViewModels.Count && ItemFilterBlockViewModels[beloveSectionEnd] as IItemFilterCommentBlockViewModel == null) + { + beloveSectionEnd++; + } + _scriptCommandManager.ExecuteCommand(new MoveSectionToIndexCommand(Script, blockIndex, 1, beloveSectionEnd - 1)); + } + } + + public void MoveSectionDown(IItemFilterCommentBlockViewModel targetCommentBlockViewModel) + { + var sectionStart = ItemFilterBlockViewModels.IndexOf(targetCommentBlockViewModel); + var sectionEnd = sectionStart + 1; + while (sectionEnd < ItemFilterBlockViewModels.Count && ItemFilterBlockViewModels[sectionEnd] as IItemFilterCommentBlockViewModel == null) + { + sectionEnd++; + } + + if (sectionEnd >= ItemFilterBlockViewModels.Count) + return; + + var sectionSize = sectionEnd - sectionStart; + + var newLocation = sectionStart + 1; + var beloveBlockAsComment = ItemFilterBlockViewModels[sectionEnd] as IItemFilterCommentBlockViewModel; + if (beloveBlockAsComment == null || beloveBlockAsComment.IsExpanded) + { + _scriptCommandManager.ExecuteCommand(new MoveSectionToIndexCommand(Script, sectionStart, sectionSize, newLocation)); + } + else + { + while ((newLocation + sectionSize) < ItemFilterBlockViewModels.Count && ItemFilterBlockViewModels[newLocation + sectionSize] as IItemFilterCommentBlockViewModel == null) + { + newLocation++; + } + _scriptCommandManager.ExecuteCommand(new MoveSectionToIndexCommand(Script, sectionStart, sectionEnd - sectionStart, newLocation)); + } + + ToggleSection(ItemFilterBlockViewModels[newLocation] as IItemFilterCommentBlockViewModel); + SelectedBlockViewModel = ItemFilterBlockViewModels[newLocation]; } private void OnMoveBlockToBottomCommand() { - MoveBlockToBottom(SelectedBlockViewModel); + var commentBlockViewModel = SelectedBlockViewModel as IItemFilterCommentBlockViewModel; + if (commentBlockViewModel == null || commentBlockViewModel.IsExpanded) + { + MoveBlockToBottom(SelectedBlockViewModel); + } + else + { + MoveSectionToBottom(commentBlockViewModel); + } } private void OnAddBlockCommand() @@ -776,7 +1011,22 @@ namespace Filtration.ViewModels public void DeleteBlock(IItemFilterBlockViewModelBase targetBlockViewModelBase) { - _scriptCommandManager.ExecuteCommand(new RemoveBlockCommand(Script, targetBlockViewModelBase.BaseBlock)); + var commentBlockViewModel = SelectedBlockViewModel as IItemFilterCommentBlockViewModel; + if (commentBlockViewModel == null || commentBlockViewModel.IsExpanded) + { + _scriptCommandManager.ExecuteCommand(new RemoveBlockCommand(Script, targetBlockViewModelBase.BaseBlock)); + } + else + { + var sectionStart = ItemFilterBlockViewModels.IndexOf(targetBlockViewModelBase); + var sectionEnd = sectionStart + 1; + while (sectionEnd < ItemFilterBlockViewModels.Count && ItemFilterBlockViewModels[sectionEnd] as IItemFilterCommentBlockViewModel == null) + { + sectionEnd++; + } + + _scriptCommandManager.ExecuteCommand(new RemoveSectionCommand(Script, sectionStart, sectionEnd - sectionStart)); + } } public void MoveBlockToBottom(IItemFilterBlockViewModelBase targetBlockViewModelBase) @@ -784,11 +1034,43 @@ namespace Filtration.ViewModels _scriptCommandManager.ExecuteCommand(new MoveBlockToBottomCommand(Script, targetBlockViewModelBase.BaseBlock)); } + public void MoveSectionToBottom(IItemFilterCommentBlockViewModel targetCommentBlockViewModel) + { + var sectionStart = ItemFilterBlockViewModels.IndexOf(targetCommentBlockViewModel); + var sectionEnd = sectionStart + 1; + while (sectionEnd < ItemFilterBlockViewModels.Count && ItemFilterBlockViewModels[sectionEnd] as IItemFilterCommentBlockViewModel == null) + { + sectionEnd++; + } + + var newLocation = ItemFilterBlockViewModels.Count - (sectionEnd - sectionStart); + _scriptCommandManager.ExecuteCommand(new MoveSectionToIndexCommand(Script, sectionStart, sectionEnd - sectionStart, newLocation)); + + ToggleSection(ItemFilterBlockViewModels[newLocation] as IItemFilterCommentBlockViewModel); + SelectedBlockViewModel = ItemFilterBlockViewModels[newLocation]; + } + public void MoveBlockToTop(IItemFilterBlockViewModelBase targetBlockViewModelBase) { _scriptCommandManager.ExecuteCommand(new MoveBlockToTopCommand(Script, targetBlockViewModelBase.BaseBlock)); } + public void MoveSectionToTop(IItemFilterCommentBlockViewModel targetCommentBlockViewModel) + { + var sectionStart = ItemFilterBlockViewModels.IndexOf(targetCommentBlockViewModel); + var sectionEnd = sectionStart + 1; + while (sectionEnd < ItemFilterBlockViewModels.Count && ItemFilterBlockViewModels[sectionEnd] as IItemFilterCommentBlockViewModel == null) + { + sectionEnd++; + } + + var newLocation = 0; + _scriptCommandManager.ExecuteCommand(new MoveSectionToIndexCommand(Script, sectionStart, sectionEnd - sectionStart, newLocation)); + + ToggleSection(ItemFilterBlockViewModels[newLocation] as IItemFilterCommentBlockViewModel); + SelectedBlockViewModel = ItemFilterBlockViewModels[newLocation]; + } + private void OnBlockBecameDirty(object sender, EventArgs e) { SetDirtyFlag(); @@ -837,5 +1119,78 @@ namespace Filtration.ViewModels selectedBlockViewModel.BlockEnabled = true; } } + + private void OnDisableSectionCommand() + { + var selectedBlockViewModel = SelectedBlockViewModel as IItemFilterCommentBlockViewModel; + if (selectedBlockViewModel != null) + { + var sectionIndex = ItemFilterBlockViewModels.IndexOf(selectedBlockViewModel); + for (int i = sectionIndex + 1; i < ItemFilterBlockViewModels.Count; i++) + { + var block = ItemFilterBlockViewModels[i] as IItemFilterBlockViewModel; + if (block != null) + { + block.BlockEnabled = false; + } + else + break; + } + } + } + + private void OnEnableSectionCommand() + { + var selectedBlockViewModel = SelectedBlockViewModel as IItemFilterCommentBlockViewModel; + if (selectedBlockViewModel != null) + { + var sectionIndex = ItemFilterBlockViewModels.IndexOf(selectedBlockViewModel); + for (int i = sectionIndex + 1; i < ItemFilterBlockViewModels.Count; i++) + { + var block = ItemFilterBlockViewModels[i] as IItemFilterBlockViewModel; + if (block != null) + { + block.BlockEnabled = true; + } + else + break; + } + } + } + + private void OnExpandSectionCommand() + { + var selectedBlockViewModel = SelectedBlockViewModel as IItemFilterCommentBlockViewModel; + if (selectedBlockViewModel != null && !selectedBlockViewModel.IsExpanded) + { + ToggleSection(selectedBlockViewModel); + } + } + + private void OnCollapseSectionCommand() + { + var selectedBlockViewModel = SelectedBlockViewModel as IItemFilterCommentBlockViewModel; + if (selectedBlockViewModel != null && selectedBlockViewModel.IsExpanded) + { + ToggleSection(selectedBlockViewModel); + } + } + + public void ToggleSection(IItemFilterCommentBlockViewModel targetCommentBlockViewModelBase) + { + var newState = !targetCommentBlockViewModelBase.IsExpanded; + targetCommentBlockViewModelBase.IsExpanded = newState; + var sectionIndex = ItemFilterBlockViewModels.IndexOf(targetCommentBlockViewModelBase); + for (int i = sectionIndex + 1; i < ItemFilterBlockViewModels.Count; i++) + { + var block = ItemFilterBlockViewModels[i] as IItemFilterBlockViewModel; + if (block != null) + { + block.IsVisible = newState; + } + else + break; + } + } } } diff --git a/Filtration/ViewModels/MainWindowViewModel.cs b/Filtration/ViewModels/MainWindowViewModel.cs index 7fe247c..bd77aea 100644 --- a/Filtration/ViewModels/MainWindowViewModel.cs +++ b/Filtration/ViewModels/MainWindowViewModel.cs @@ -100,6 +100,10 @@ namespace Filtration.ViewModels DeleteBlockCommand = new RelayCommand(OnDeleteBlockCommand, () => ActiveDocumentIsScript && ActiveScriptHasSelectedBlock); DisableBlockCommand = new RelayCommand(OnDisableBlockCommand, () => ActiveDocumentIsScript && ActiveScriptHasSelectedEnabledBlock); EnableBlockCommand = new RelayCommand(OnEnableBlockCommand, () => ActiveDocumentIsScript && ActiveScriptHasSelectedDisabledBlock); + DisableSectionCommand = new RelayCommand(OnDisableSectionCommand, () => ActiveDocumentIsScript && ActiveScriptHasSelectedCommentBlock); + EnableSectionCommand = new RelayCommand(OnEnableSectionCommand, () => ActiveDocumentIsScript && ActiveScriptHasSelectedCommentBlock); + ExpandSectionCommand = new RelayCommand(OnExpandSectionCommand, () => ActiveDocumentIsScript && ActiveScriptHasSelectedCommentBlock); + CollapseSectionCommand = new RelayCommand(OnCollapseSectionCommand, () => ActiveDocumentIsScript && ActiveScriptHasSelectedCommentBlock); OpenAboutWindowCommand = new RelayCommand(OnOpenAboutWindowCommand); ReplaceColorsCommand = new RelayCommand(OnReplaceColorsCommand, () => ActiveDocumentIsScript); @@ -213,6 +217,10 @@ namespace Filtration.ViewModels public RelayCommand DeleteBlockCommand { get; } public RelayCommand DisableBlockCommand { get; } public RelayCommand EnableBlockCommand { get; } + public RelayCommand DisableSectionCommand { get; } + public RelayCommand EnableSectionCommand { get; } + public RelayCommand ExpandSectionCommand { get; } + public RelayCommand CollapseSectionCommand { get; } public RelayCommand MoveBlockUpCommand { get; } public RelayCommand MoveBlockDownCommand { get; } @@ -260,6 +268,9 @@ namespace Filtration.ViewModels public bool ActiveScriptHasSelectedDisabledBlock => AvalonDockWorkspaceViewModel.ActiveScriptViewModel.HasSelectedDisabledBlock(); + public bool ActiveScriptHasSelectedCommentBlock => AvalonDockWorkspaceViewModel.ActiveScriptViewModel.HasSelectedCommentBlock(); + + public bool ActiveThemeIsEditable => AvalonDockWorkspaceViewModel.ActiveThemeViewModel.IsMasterTheme; private bool ActiveDocumentIsEditable() @@ -595,6 +606,26 @@ namespace Filtration.ViewModels _avalonDockWorkspaceViewModel.ActiveScriptViewModel.EnableBlockCommand.Execute(null); } + private void OnDisableSectionCommand() + { + _avalonDockWorkspaceViewModel.ActiveScriptViewModel.DisableSectionCommand.Execute(null); + } + + private void OnEnableSectionCommand() + { + _avalonDockWorkspaceViewModel.ActiveScriptViewModel.EnableSectionCommand.Execute(null); + } + + private void OnExpandSectionCommand() + { + _avalonDockWorkspaceViewModel.ActiveScriptViewModel.ExpandSectionCommand.Execute(null); + } + + private void OnCollapseSectionCommand() + { + _avalonDockWorkspaceViewModel.ActiveScriptViewModel.CollapseSectionCommand.Execute(null); + } + private void OnExpandAllBlocksCommand() { _avalonDockWorkspaceViewModel.ActiveScriptViewModel.ExpandAllBlocksCommand.Execute(null); diff --git a/Filtration/Views/ItemFilterBlockView.xaml b/Filtration/Views/ItemFilterBlockView.xaml index 98b941c..816cc71 100644 --- a/Filtration/Views/ItemFilterBlockView.xaml +++ b/Filtration/Views/ItemFilterBlockView.xaml @@ -11,7 +11,7 @@ xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=WindowsBase" mc:Ignorable="d" d:DataContext="{d:DesignInstance Type=viewModels:ItemFilterBlockViewModel}" - d:DesignHeight="200" d:DesignWidth="800"> + d:DesignHeight="200" d:DesignWidth="800" Visibility="{Binding IsVisible, Converter={StaticResource BooleanVisibilityConverter}}"> diff --git a/Filtration/Views/ItemFilterCommentBlockView.xaml b/Filtration/Views/ItemFilterCommentBlockView.xaml index 8846a50..2e561c8 100644 --- a/Filtration/Views/ItemFilterCommentBlockView.xaml +++ b/Filtration/Views/ItemFilterCommentBlockView.xaml @@ -77,6 +77,28 @@ + + diff --git a/Filtration/Views/MainWindow.xaml b/Filtration/Views/MainWindow.xaml index 1d9aa46..ec8e882 100644 --- a/Filtration/Views/MainWindow.xaml +++ b/Filtration/Views/MainWindow.xaml @@ -101,6 +101,10 @@ + + + + From 38053666a06102f0374142018189530f0aaf9e46 Mon Sep 17 00:00:00 2001 From: azakhi Date: Fri, 10 Aug 2018 22:22:25 +0300 Subject: [PATCH 10/33] Fix collapsed section height --- .../BooleanToBlockMarginConverter.cs | 27 +++++++++++++++++++ Filtration/Filtration.csproj | 1 + Filtration/Views/ItemFilterBlockView.xaml | 3 ++- .../Views/ItemFilterCommentBlockView.xaml | 2 +- Filtration/Views/ItemFilterScriptView.xaml | 2 +- 5 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 Filtration/Converters/BooleanToBlockMarginConverter.cs diff --git a/Filtration/Converters/BooleanToBlockMarginConverter.cs b/Filtration/Converters/BooleanToBlockMarginConverter.cs new file mode 100644 index 0000000..416d4c2 --- /dev/null +++ b/Filtration/Converters/BooleanToBlockMarginConverter.cs @@ -0,0 +1,27 @@ +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace Filtration.Converters +{ + public class BooleanToBlockMarginConverter : IValueConverter + { + public double Length { get; set; } + + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + var item = (bool)value; + + if (!item) + return new Thickness(2, 0, 2, 0); + + return new Thickness(2, 2, 2, 2); + } + + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + return ((Thickness)value) == new Thickness(0, 0, 0, 0); + } + } +} diff --git a/Filtration/Filtration.csproj b/Filtration/Filtration.csproj index 4e0f402..fc275ee 100644 --- a/Filtration/Filtration.csproj +++ b/Filtration/Filtration.csproj @@ -167,6 +167,7 @@ + diff --git a/Filtration/Views/ItemFilterBlockView.xaml b/Filtration/Views/ItemFilterBlockView.xaml index 816cc71..ce00d76 100644 --- a/Filtration/Views/ItemFilterBlockView.xaml +++ b/Filtration/Views/ItemFilterBlockView.xaml @@ -18,6 +18,7 @@ + - + + + + + + + + diff --git a/Filtration/App.xaml.cs b/Filtration/App.xaml.cs index 6690e58..61ab85d 100644 --- a/Filtration/App.xaml.cs +++ b/Filtration/App.xaml.cs @@ -46,6 +46,7 @@ namespace Filtration cfg.ConstructServicesUsing(_container.Resolve); cfg.CreateMap().ConstructUsingServiceLocator(); cfg.CreateMap().ReverseMap(); + cfg.CreateMap().ReverseMap(); cfg.CreateMap(); }); diff --git a/Filtration/UserControls/BlockItemControl.xaml.cs b/Filtration/UserControls/BlockItemControl.xaml.cs index 70d9d0d..43a9ca7 100644 --- a/Filtration/UserControls/BlockItemControl.xaml.cs +++ b/Filtration/UserControls/BlockItemControl.xaml.cs @@ -6,6 +6,7 @@ using System.Windows; using Filtration.Annotations; using Filtration.ObjectModel; using Filtration.ObjectModel.BlockItemBaseTypes; +using Filtration.ObjectModel.ThemeEditor; using Filtration.Views; using GalaSoft.MvvmLight.CommandWpf; using Xceed.Wpf.Toolkit; @@ -97,7 +98,7 @@ namespace Filtration.UserControls var blockItem = BlockItem as ColorBlockItem; if (blockItem?.ThemeComponent == null) return; - blockItem.Color = blockItem.ThemeComponent.Color; + blockItem.Color = ((ColorThemeComponent)blockItem.ThemeComponent).Color; } public event PropertyChangedEventHandler PropertyChanged; From bc5a005ee7ddbedb4a40ebe46fc55ae0319bda23 Mon Sep 17 00:00:00 2001 From: azakhi Date: Sat, 25 Aug 2018 15:52:16 +0300 Subject: [PATCH 29/33] Add font size theme support & improve theme system --- .../BlockItemBaseTypes/ColorBlockItem.cs | 2 +- .../BlockItemBaseTypes/IntegerBlockItem.cs | 42 ++++++++++- .../Enums/ThemeComponentType.cs | 4 +- .../Filtration.ObjectModel.csproj | 2 + Filtration.ObjectModel/IBlockItemWithTheme.cs | 9 +++ .../ThemeEditor/ColorThemeComponent.cs | 4 - .../ThemeEditor/IntegerThemeComponent.cs | 35 +++++++++ Filtration.ObjectModel/ThemeEditor/Theme.cs | 5 ++ .../ThemeEditor/ThemeComponentCollection.cs | 19 +++-- .../Services/ItemFilterBlockTranslator.cs | 12 ++- .../ThemeComponentTypeToStringConverter.cs | 4 + .../Filtration.ThemeEditor.csproj | 1 + .../Providers/ThemeProvider.cs | 3 + .../Services/ThemeService.cs | 23 ++++++ .../ColorThemeComponentViewModel.cs | 1 - .../IntegerThemeComponentViewModel.cs | 7 ++ .../ViewModels/ThemeEditorViewModel.cs | 3 + .../Views/ThemeComponentControl.xaml | 5 ++ Filtration/App.xaml.cs | 1 + .../AvailableThemeComponentsConverter.cs | 6 +- Filtration/UserControls/BlockItemControl.xaml | 18 ++++- .../UserControls/BlockItemControl.xaml.cs | 28 +++++-- .../ThemeComponentSelectionControl.xaml | 73 +++++++++---------- .../ViewModels/ItemFilterScriptViewModel.cs | 2 +- Filtration/ViewModels/MainWindowViewModel.cs | 7 ++ Filtration/Views/MainWindow.xaml | 1 + 26 files changed, 247 insertions(+), 70 deletions(-) create mode 100644 Filtration.ObjectModel/IBlockItemWithTheme.cs create mode 100644 Filtration.ObjectModel/ThemeEditor/IntegerThemeComponent.cs create mode 100644 Filtration.ThemeEditor/ViewModels/IntegerThemeComponentViewModel.cs diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/ColorBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/ColorBlockItem.cs index 7f6efc9..7592642 100644 --- a/Filtration.ObjectModel/BlockItemBaseTypes/ColorBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemBaseTypes/ColorBlockItem.cs @@ -4,7 +4,7 @@ using Filtration.ObjectModel.ThemeEditor; namespace Filtration.ObjectModel.BlockItemBaseTypes { - public abstract class ColorBlockItem : BlockItemBase, IAudioVisualBlockItem + public abstract class ColorBlockItem : BlockItemBase, IAudioVisualBlockItem, IBlockItemWithTheme { private Color _color; private ThemeComponent _themeComponent; diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/IntegerBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/IntegerBlockItem.cs index 6beb767..2299140 100644 --- a/Filtration.ObjectModel/BlockItemBaseTypes/IntegerBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemBaseTypes/IntegerBlockItem.cs @@ -1,10 +1,13 @@ -using System.Windows.Media; +using System; +using System.Windows.Media; +using Filtration.ObjectModel.ThemeEditor; namespace Filtration.ObjectModel.BlockItemBaseTypes { - public abstract class IntegerBlockItem : BlockItemBase, IAudioVisualBlockItem + public abstract class IntegerBlockItem : BlockItemBase, IAudioVisualBlockItem, IBlockItemWithTheme { private int _value; + private ThemeComponent _themeComponent; protected IntegerBlockItem() { @@ -15,7 +18,7 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes Value = value; } - public override string OutputText => PrefixText + " " + Value; + public override string OutputText => PrefixText + " " + Value + (ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty); public override string SummaryText => string.Empty; public override Color SummaryBackgroundColor => Colors.Transparent; @@ -24,6 +27,29 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes public abstract int Minimum { get; } public abstract int Maximum { get; } + public ThemeComponent ThemeComponent + { + get { return _themeComponent; } + set + { + if (_themeComponent == value) { return; } + + if (_themeComponent != null) + { + _themeComponent.ThemeComponentUpdated -= OnThemeComponentUpdated; + _themeComponent.ThemeComponentDeleted -= OnThemeComponentDeleted; + } + if (value != null) + { + value.ThemeComponentUpdated += OnThemeComponentUpdated; + value.ThemeComponentDeleted += OnThemeComponentDeleted; + } + + _themeComponent = value; + OnPropertyChanged(); + } + } + public int Value { get { return _value; } @@ -34,5 +60,15 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes OnPropertyChanged(); } } + + private void OnThemeComponentUpdated(object sender, EventArgs e) + { + Value = ((IntegerBlockItem)sender).Value; + } + + private void OnThemeComponentDeleted(object sender, EventArgs e) + { + ThemeComponent = null; + } } } diff --git a/Filtration.ObjectModel/Enums/ThemeComponentType.cs b/Filtration.ObjectModel/Enums/ThemeComponentType.cs index 4f17dc5..48c20a0 100644 --- a/Filtration.ObjectModel/Enums/ThemeComponentType.cs +++ b/Filtration.ObjectModel/Enums/ThemeComponentType.cs @@ -9,6 +9,8 @@ namespace Filtration.ObjectModel.Enums [Description("Background")] BackgroundColor, [Description("Border")] - BorderColor + BorderColor, + [Description("Font Size")] + FontSize } } diff --git a/Filtration.ObjectModel/Filtration.ObjectModel.csproj b/Filtration.ObjectModel/Filtration.ObjectModel.csproj index 89582ac..bcc1cef 100644 --- a/Filtration.ObjectModel/Filtration.ObjectModel.csproj +++ b/Filtration.ObjectModel/Filtration.ObjectModel.csproj @@ -115,6 +115,7 @@ + @@ -130,6 +131,7 @@ + diff --git a/Filtration.ObjectModel/IBlockItemWithTheme.cs b/Filtration.ObjectModel/IBlockItemWithTheme.cs new file mode 100644 index 0000000..5971eb0 --- /dev/null +++ b/Filtration.ObjectModel/IBlockItemWithTheme.cs @@ -0,0 +1,9 @@ +using Filtration.ObjectModel.ThemeEditor; + +namespace Filtration.ObjectModel +{ + public interface IBlockItemWithTheme : IItemFilterBlockItem + { + ThemeComponent ThemeComponent { get; } + } +} diff --git a/Filtration.ObjectModel/ThemeEditor/ColorThemeComponent.cs b/Filtration.ObjectModel/ThemeEditor/ColorThemeComponent.cs index de1ae3d..044f468 100644 --- a/Filtration.ObjectModel/ThemeEditor/ColorThemeComponent.cs +++ b/Filtration.ObjectModel/ThemeEditor/ColorThemeComponent.cs @@ -1,8 +1,5 @@ using System; -using System.ComponentModel; -using System.Runtime.CompilerServices; using System.Windows.Media; -using Filtration.ObjectModel.Annotations; using Filtration.ObjectModel.Enums; namespace Filtration.ObjectModel.ThemeEditor @@ -11,7 +8,6 @@ namespace Filtration.ObjectModel.ThemeEditor public class ColorThemeComponent : ThemeComponent { private Color _color; - private readonly object _eventLock = new object(); public ColorThemeComponent(ThemeComponentType componentType, string componentName, Color componentColor) { diff --git a/Filtration.ObjectModel/ThemeEditor/IntegerThemeComponent.cs b/Filtration.ObjectModel/ThemeEditor/IntegerThemeComponent.cs new file mode 100644 index 0000000..a72d822 --- /dev/null +++ b/Filtration.ObjectModel/ThemeEditor/IntegerThemeComponent.cs @@ -0,0 +1,35 @@ +using System; +using System.Windows.Media; +using Filtration.ObjectModel.Enums; + +namespace Filtration.ObjectModel.ThemeEditor +{ + [Serializable] + public class IntegerThemeComponent : ThemeComponent + { + private int _value; + + public IntegerThemeComponent(ThemeComponentType componentType, string componentName, int componentValue) + { + if (componentName == null) + { + throw new ArgumentException("Null parameters not allowed in IntegerThemeComponent constructor"); + } + + ComponentType = componentType; + Value = componentValue; + ComponentName = componentName; + } + + public int Value + { + get { return _value; } + set + { + _value = value; + OnPropertyChanged(); + _themeComponentUpdatedEventHandler?.Invoke(this, EventArgs.Empty); + } + } + } +} diff --git a/Filtration.ObjectModel/ThemeEditor/Theme.cs b/Filtration.ObjectModel/ThemeEditor/Theme.cs index 34b8cbc..a765e30 100644 --- a/Filtration.ObjectModel/ThemeEditor/Theme.cs +++ b/Filtration.ObjectModel/ThemeEditor/Theme.cs @@ -34,5 +34,10 @@ namespace Filtration.ObjectModel.ThemeEditor { _components.Add(new ColorThemeComponent(componentType, componentName, componentColor)); } + + public void AddComponent(ThemeComponentType componentType, string componentName, int componentValue) + { + _components.Add(new IntegerThemeComponent(componentType, componentName, componentValue)); + } } } diff --git a/Filtration.ObjectModel/ThemeEditor/ThemeComponentCollection.cs b/Filtration.ObjectModel/ThemeEditor/ThemeComponentCollection.cs index d2d88fe..605a62c 100644 --- a/Filtration.ObjectModel/ThemeEditor/ThemeComponentCollection.cs +++ b/Filtration.ObjectModel/ThemeEditor/ThemeComponentCollection.cs @@ -16,15 +16,20 @@ namespace Filtration.ObjectModel.ThemeEditor return Items.FirstOrDefault(t => t.ComponentName == componentName && t.ComponentType == componentType); } - ThemeComponent component = null; - switch(componentType) + var component = new ColorThemeComponent(componentType, componentName, componentColor); + Items.Add(component); + + return component; + } + + public ThemeComponent AddComponent(ThemeComponentType componentType, string componentName, int componentValue) + { + if (ComponentExists(componentType, componentName)) { - case ThemeComponentType.BackgroundColor: - case ThemeComponentType.BorderColor: - case ThemeComponentType.TextColor: - component = new ColorThemeComponent(componentType, componentName, componentColor); - break; + return Items.FirstOrDefault(t => t.ComponentName == componentName && t.ComponentType == componentType); } + + var component = new IntegerThemeComponent(componentType, componentName, componentValue); Items.Add(component); return component; diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index 3545227..fb1d755 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -217,11 +217,15 @@ namespace Filtration.Parser.Services // Only ever use the last SetFontSize item encountered as multiples aren't valid. RemoveExistingBlockItemsOfType(block); - var match = Regex.Match(trimmedLine, @"\s+(\d+)"); - if (match.Success) + var match = Regex.Matches(trimmedLine, @"(\s+(\d+)\s*)([#]?)(.*)"); + if (match.Count > 0) { - var blockItemValue = new FontSizeBlockItem(Convert.ToInt16(match.Value)); - block.BlockItems.Add(blockItemValue); + var blockItem = new FontSizeBlockItem(Convert.ToInt16(match[0].Groups[2].Value)); + if(match[0].Groups[3].Value == "#" && !string.IsNullOrWhiteSpace(match[0].Groups[4].Value)) + { + blockItem.ThemeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.FontSize, match[0].Groups[4].Value.Trim(), blockItem.Value); + } + block.BlockItems.Add(blockItem); } break; } diff --git a/Filtration.ThemeEditor/Converters/ThemeComponentTypeToStringConverter.cs b/Filtration.ThemeEditor/Converters/ThemeComponentTypeToStringConverter.cs index 37c9829..2ae7c2d 100644 --- a/Filtration.ThemeEditor/Converters/ThemeComponentTypeToStringConverter.cs +++ b/Filtration.ThemeEditor/Converters/ThemeComponentTypeToStringConverter.cs @@ -31,6 +31,10 @@ namespace Filtration.ThemeEditor.Converters { return "Background Color Theme Components"; } + case "Font Size": + { + return "Font Size Theme Components"; + } } return type.GetAttributeDescription(); diff --git a/Filtration.ThemeEditor/Filtration.ThemeEditor.csproj b/Filtration.ThemeEditor/Filtration.ThemeEditor.csproj index 4a5d93d..d64952d 100644 --- a/Filtration.ThemeEditor/Filtration.ThemeEditor.csproj +++ b/Filtration.ThemeEditor/Filtration.ThemeEditor.csproj @@ -109,6 +109,7 @@ + diff --git a/Filtration.ThemeEditor/Providers/ThemeProvider.cs b/Filtration.ThemeEditor/Providers/ThemeProvider.cs index 18fb0ed..2c9bec3 100644 --- a/Filtration.ThemeEditor/Providers/ThemeProvider.cs +++ b/Filtration.ThemeEditor/Providers/ThemeProvider.cs @@ -42,6 +42,9 @@ namespace Filtration.ThemeEditor.Providers case ThemeComponentType.TextColor: c.Add(new ColorThemeComponent(component.ComponentType, component.ComponentName, ((ColorThemeComponent)component).Color)); break; + case ThemeComponentType.FontSize: + c.Add(new IntegerThemeComponent(component.ComponentType, component.ComponentName, ((IntegerThemeComponent)component).Value)); + break; } return c; }); diff --git a/Filtration.ThemeEditor/Services/ThemeService.cs b/Filtration.ThemeEditor/Services/ThemeService.cs index 4e3e23d..2885dd0 100644 --- a/Filtration.ThemeEditor/Services/ThemeService.cs +++ b/Filtration.ThemeEditor/Services/ThemeService.cs @@ -42,6 +42,9 @@ namespace Filtration.ThemeEditor.Services case ThemeComponentType.BorderColor: mismatchedComponents = ApplyColorTheme(blocks, typeof(BorderColorBlockItem), component); break; + case ThemeComponentType.FontSize: + mismatchedComponents = ApplyIntegerTheme(blocks, typeof(FontSizeBlockItem), component); + break; } } @@ -72,5 +75,25 @@ namespace Filtration.ThemeEditor.Services return !componentMatched; } + + private bool ApplyIntegerTheme(IEnumerable blocks, Type type, ThemeComponent component) + { + var componentMatched = false; + foreach (var block in blocks) + { + foreach (var blockItem in block.BlockItems.Where(i => i.GetType() == type)) + { + var colorBlockItem = (IntegerBlockItem)blockItem; + if (colorBlockItem.ThemeComponent != null && + colorBlockItem.ThemeComponent.ComponentName == component.ComponentName) + { + colorBlockItem.Value = ((IntegerThemeComponent)component).Value; + componentMatched = true; + } + } + } + + return !componentMatched; + } } } diff --git a/Filtration.ThemeEditor/ViewModels/ColorThemeComponentViewModel.cs b/Filtration.ThemeEditor/ViewModels/ColorThemeComponentViewModel.cs index 81c196b..849d61d 100644 --- a/Filtration.ThemeEditor/ViewModels/ColorThemeComponentViewModel.cs +++ b/Filtration.ThemeEditor/ViewModels/ColorThemeComponentViewModel.cs @@ -1,5 +1,4 @@ using System.Windows.Media; -using Filtration.ObjectModel.Enums; namespace Filtration.ThemeEditor.ViewModels { diff --git a/Filtration.ThemeEditor/ViewModels/IntegerThemeComponentViewModel.cs b/Filtration.ThemeEditor/ViewModels/IntegerThemeComponentViewModel.cs new file mode 100644 index 0000000..64d71e4 --- /dev/null +++ b/Filtration.ThemeEditor/ViewModels/IntegerThemeComponentViewModel.cs @@ -0,0 +1,7 @@ +namespace Filtration.ThemeEditor.ViewModels +{ + public class IntegerThemeComponentViewModel : ThemeComponentViewModel + { + public int Value { get; set; } + } +} diff --git a/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs b/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs index 9552e32..b342082 100644 --- a/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs +++ b/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs @@ -202,6 +202,9 @@ namespace Filtration.ThemeEditor.ViewModels Components.Add(new ColorThemeComponent(themeComponentType, "Untitled Component", new Color { A = 255, R = 255, G = 255, B = 255 })); break; + case ThemeComponentType.FontSize: + Components.Add(new IntegerThemeComponent(themeComponentType, "Untitled Component", 35)); + break; } } diff --git a/Filtration.ThemeEditor/Views/ThemeComponentControl.xaml b/Filtration.ThemeEditor/Views/ThemeComponentControl.xaml index bcd5453..231561b 100644 --- a/Filtration.ThemeEditor/Views/ThemeComponentControl.xaml +++ b/Filtration.ThemeEditor/Views/ThemeComponentControl.xaml @@ -64,6 +64,11 @@ + + + + + diff --git a/Filtration/App.xaml.cs b/Filtration/App.xaml.cs index 61ab85d..192f000 100644 --- a/Filtration/App.xaml.cs +++ b/Filtration/App.xaml.cs @@ -47,6 +47,7 @@ namespace Filtration cfg.CreateMap().ConstructUsingServiceLocator(); cfg.CreateMap().ReverseMap(); cfg.CreateMap().ReverseMap(); + cfg.CreateMap().ReverseMap(); cfg.CreateMap(); }); diff --git a/Filtration/Converters/AvailableThemeComponentsConverter.cs b/Filtration/Converters/AvailableThemeComponentsConverter.cs index 0d4b3f3..33a1a2b 100644 --- a/Filtration/Converters/AvailableThemeComponentsConverter.cs +++ b/Filtration/Converters/AvailableThemeComponentsConverter.cs @@ -16,7 +16,7 @@ namespace Filtration.Converters var themeComponentsList = values[0] as ThemeComponentCollection; if (themeComponentsList == null || themeComponentsList.Count == 0) return null; - var blockItem = values[1] as ColorBlockItem; + var blockItem = values[1] as BlockItemBase; if (blockItem == null) return null; ThemeComponentType themeComponentType; @@ -33,6 +33,10 @@ namespace Filtration.Converters { themeComponentType = ThemeComponentType.BorderColor; } + else if (blockItem.GetType() == typeof(FontSizeBlockItem)) + { + themeComponentType = ThemeComponentType.FontSize; + } else { return null; diff --git a/Filtration/UserControls/BlockItemControl.xaml b/Filtration/UserControls/BlockItemControl.xaml index 18ae6ac..abf7363 100644 --- a/Filtration/UserControls/BlockItemControl.xaml +++ b/Filtration/UserControls/BlockItemControl.xaml @@ -116,9 +116,21 @@ - - - + + + + + + + + + + + + + + + diff --git a/Filtration/UserControls/BlockItemControl.xaml.cs b/Filtration/UserControls/BlockItemControl.xaml.cs index 43a9ca7..e312c3d 100644 --- a/Filtration/UserControls/BlockItemControl.xaml.cs +++ b/Filtration/UserControls/BlockItemControl.xaml.cs @@ -6,6 +6,7 @@ using System.Windows; using Filtration.Annotations; using Filtration.ObjectModel; using Filtration.ObjectModel.BlockItemBaseTypes; +using Filtration.ObjectModel.Enums; using Filtration.ObjectModel.ThemeEditor; using Filtration.Views; using GalaSoft.MvvmLight.CommandWpf; @@ -21,10 +22,10 @@ namespace Filtration.UserControls // ReSharper disable once PossibleNullReferenceException (Content as FrameworkElement).DataContext = this; - SetBlockColorCommand = new RelayCommand(OnSetBlockColorCommmand); + SetBlockValueCommand = new RelayCommand(OnSetBlockValueCommmand); } - public RelayCommand SetBlockColorCommand { get; private set; } + public RelayCommand SetBlockValueCommand { get; private set; } public static readonly DependencyProperty BlockItemProperty = DependencyProperty.Register( "BlockItem", @@ -93,12 +94,25 @@ namespace Filtration.UserControls "Icon1", "Icon2", "Icon3", "Icon4", "Icon5", "Icon6" }; - private void OnSetBlockColorCommmand() - { - var blockItem = BlockItem as ColorBlockItem; - if (blockItem?.ThemeComponent == null) return; + private void OnSetBlockValueCommmand() + { + var blockItemWithTheme = BlockItem as IBlockItemWithTheme; + if (blockItemWithTheme?.ThemeComponent == null) return; - blockItem.Color = ((ColorThemeComponent)blockItem.ThemeComponent).Color; + var componentType = ((IBlockItemWithTheme)BlockItem).ThemeComponent.ComponentType; + switch(componentType) + { + case ThemeComponentType.BackgroundColor: + case ThemeComponentType.BorderColor: + case ThemeComponentType.TextColor: + var colorBlockItem = BlockItem as ColorBlockItem; + colorBlockItem.Color = ((ColorThemeComponent)colorBlockItem.ThemeComponent).Color; + break; + case ThemeComponentType.FontSize: + var integerBlockItem = BlockItem as IntegerBlockItem; + integerBlockItem.Value = ((IntegerThemeComponent)integerBlockItem.ThemeComponent).Value; + break; + } } public event PropertyChangedEventHandler PropertyChanged; diff --git a/Filtration/UserControls/ThemeComponentSelectionControl.xaml b/Filtration/UserControls/ThemeComponentSelectionControl.xaml index 19d17ab..97ac25b 100644 --- a/Filtration/UserControls/ThemeComponentSelectionControl.xaml +++ b/Filtration/UserControls/ThemeComponentSelectionControl.xaml @@ -4,6 +4,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:userControls="clr-namespace:Filtration.UserControls" + xmlns:themeEditor="clr-namespace:Filtration.ObjectModel.ThemeEditor;assembly=Filtration.ObjectModel" xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity" mc:Ignorable="d" d:DataContext="{d:DesignInstance Type=userControls:ThemeComponentSelectionControl}" @@ -21,7 +22,7 @@ - + @@ -32,44 +33,42 @@ Visibility="{Binding ShowThemeComponentComboBox, Converter={StaticResource BooleanToVisibilityConverter}}"> - + - - - - - - - - - + + + + + + + + + diff --git a/Filtration/ViewModels/ItemFilterScriptViewModel.cs b/Filtration/ViewModels/ItemFilterScriptViewModel.cs index b6cc5d2..01564a4 100644 --- a/Filtration/ViewModels/ItemFilterScriptViewModel.cs +++ b/Filtration/ViewModels/ItemFilterScriptViewModel.cs @@ -563,7 +563,7 @@ namespace Filtration.ViewModels Script.ThemeComponents.Where( t => Script.ItemFilterBlocks.OfType().Count( - b => b.BlockItems.OfType().Count(i => i.ThemeComponent == t) > 0) == 0).ToList(); + b => b.BlockItems.OfType().Count(i => i.ThemeComponent == t) > 0) == 0).ToList(); if (unusedThemeComponents.Count <= 0) return true; diff --git a/Filtration/ViewModels/MainWindowViewModel.cs b/Filtration/ViewModels/MainWindowViewModel.cs index 358e797..168f006 100644 --- a/Filtration/ViewModels/MainWindowViewModel.cs +++ b/Filtration/ViewModels/MainWindowViewModel.cs @@ -114,6 +114,7 @@ namespace Filtration.ViewModels AddTextColorThemeComponentCommand = new RelayCommand(OnAddTextColorThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); AddBackgroundColorThemeComponentCommand = new RelayCommand(OnAddBackgroundColorThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); AddBorderColorThemeComponentCommand = new RelayCommand(OnAddBorderColorThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); + AddFontSizeThemeComponentCommand = new RelayCommand(OnAddFontSizeThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); DeleteThemeComponentCommand = new RelayCommand(OnDeleteThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable && _avalonDockWorkspaceViewModel.ActiveThemeViewModel.SelectedThemeComponent != null); ExpandAllBlocksCommand = new RelayCommand(OnExpandAllBlocksCommand, () => ActiveDocumentIsScript); @@ -213,6 +214,7 @@ namespace Filtration.ViewModels public RelayCommand AddTextColorThemeComponentCommand { get; } public RelayCommand AddBackgroundColorThemeComponentCommand { get; } public RelayCommand AddBorderColorThemeComponentCommand { get; } + public RelayCommand AddFontSizeThemeComponentCommand { get; } public RelayCommand DeleteThemeComponentCommand { get; } public RelayCommand AddBlockCommand { get; } @@ -677,6 +679,11 @@ namespace Filtration.ViewModels _avalonDockWorkspaceViewModel.ActiveThemeViewModel.AddThemeComponentCommand.Execute(ThemeComponentType.BorderColor); } + private void OnAddFontSizeThemeComponentCommand() + { + _avalonDockWorkspaceViewModel.ActiveThemeViewModel.AddThemeComponentCommand.Execute(ThemeComponentType.FontSize); + } + private void OnDeleteThemeComponentCommand() { _avalonDockWorkspaceViewModel.ActiveThemeViewModel.DeleteThemeComponentCommand.Execute( diff --git a/Filtration/Views/MainWindow.xaml b/Filtration/Views/MainWindow.xaml index 6120def..2fd013b 100644 --- a/Filtration/Views/MainWindow.xaml +++ b/Filtration/Views/MainWindow.xaml @@ -129,6 +129,7 @@ + From d92d34af05c3d71ffcb7bb644ba9ef95c7ce7cff Mon Sep 17 00:00:00 2001 From: azakhi Date: Sun, 26 Aug 2018 20:24:13 +0300 Subject: [PATCH 30/33] Add alert sound theme support --- .../BlockItemBaseTypes/StrIntBlockItem.cs | 87 +++++++++++++++++++ .../BlockItemBaseTypes/StringIntBlockItem.cs | 50 ----------- .../Enums/ThemeComponentType.cs | 4 +- .../Filtration.ObjectModel.csproj | 3 +- .../ThemeEditor/StrIntThemeComponent.cs | 48 ++++++++++ Filtration.ObjectModel/ThemeEditor/Theme.cs | 5 ++ .../ThemeEditor/ThemeComponentCollection.cs | 13 +++ .../Services/ItemFilterBlockTranslator.cs | 10 ++- .../ThemeComponentTypeToStringConverter.cs | 4 + .../Filtration.ThemeEditor.csproj | 1 + .../Providers/ThemeProvider.cs | 3 + .../Services/ThemeService.cs | 25 ++++++ .../StrIntThemeComponentViewModel.cs | 8 ++ .../ViewModels/ThemeEditorViewModel.cs | 3 + .../Views/ThemeComponentControl.xaml | 12 +++ Filtration/App.xaml.cs | 1 + .../AvailableThemeComponentsConverter.cs | 4 + Filtration/UserControls/BlockItemControl.xaml | 16 ++++ .../UserControls/BlockItemControl.xaml.cs | 5 ++ .../ThemeComponentSelectionControl.xaml | 5 ++ Filtration/ViewModels/MainWindowViewModel.cs | 7 ++ Filtration/Views/MainWindow.xaml | 1 + 22 files changed, 262 insertions(+), 53 deletions(-) create mode 100644 Filtration.ObjectModel/BlockItemBaseTypes/StrIntBlockItem.cs delete mode 100644 Filtration.ObjectModel/BlockItemBaseTypes/StringIntBlockItem.cs create mode 100644 Filtration.ObjectModel/ThemeEditor/StrIntThemeComponent.cs create mode 100644 Filtration.ThemeEditor/ViewModels/StrIntThemeComponentViewModel.cs diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/StrIntBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/StrIntBlockItem.cs new file mode 100644 index 0000000..2f66db2 --- /dev/null +++ b/Filtration.ObjectModel/BlockItemBaseTypes/StrIntBlockItem.cs @@ -0,0 +1,87 @@ +using System; +using System.Windows.Media; +using Filtration.ObjectModel.ThemeEditor; + +namespace Filtration.ObjectModel.BlockItemBaseTypes +{ + public abstract class StrIntBlockItem : BlockItemBase, IAudioVisualBlockItem, IBlockItemWithTheme + { + private string _value; + private int _secondValue; + private ThemeComponent _themeComponent; + + protected StrIntBlockItem() + { + } + + protected StrIntBlockItem(string value, int secondValue) + { + Value = value; + SecondValue = secondValue; + Value = value; + SecondValue = secondValue; + } + + public override string OutputText => PrefixText + " " + Value + " " + SecondValue + (ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty); + + public override string SummaryText => string.Empty; + public override Color SummaryBackgroundColor => Colors.Transparent; + public override Color SummaryTextColor => Colors.Transparent; + + public ThemeComponent ThemeComponent + { + get { return _themeComponent; } + set + { + if (_themeComponent == value) { return; } + + if (_themeComponent != null) + { + _themeComponent.ThemeComponentUpdated -= OnThemeComponentUpdated; + _themeComponent.ThemeComponentDeleted -= OnThemeComponentDeleted; + } + if (value != null) + { + value.ThemeComponentUpdated += OnThemeComponentUpdated; + value.ThemeComponentDeleted += OnThemeComponentDeleted; + } + + _themeComponent = value; + OnPropertyChanged(); + } + } + + public string Value + { + get { return _value; } + set + { + _value = value; + IsDirty = true; + OnPropertyChanged(); + } + } + + public int SecondValue + { + get { return _secondValue; } + set + { + _secondValue = value; + IsDirty = true; + OnPropertyChanged(); + } + } + + private void OnThemeComponentUpdated(object sender, EventArgs e) + { + Value = ((StrIntBlockItem)sender).Value; + SecondValue = ((StrIntBlockItem)sender).SecondValue; + } + + private void OnThemeComponentDeleted(object sender, EventArgs e) + { + ThemeComponent = null; + } + } +} \ No newline at end of file diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/StringIntBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/StringIntBlockItem.cs deleted file mode 100644 index 405879c..0000000 --- a/Filtration.ObjectModel/BlockItemBaseTypes/StringIntBlockItem.cs +++ /dev/null @@ -1,50 +0,0 @@ -using System.Windows.Media; - -namespace Filtration.ObjectModel.BlockItemBaseTypes -{ - public abstract class StrIntBlockItem : BlockItemBase, IAudioVisualBlockItem - { - private string _value; - private int _secondValue; - - protected StrIntBlockItem() - { - } - - protected StrIntBlockItem(string value, int secondValue) - { - Value = value; - SecondValue = secondValue; - Value = value; - SecondValue = secondValue; - } - - public override string OutputText => PrefixText + " " + Value + " " + SecondValue; - - public override string SummaryText => string.Empty; - public override Color SummaryBackgroundColor => Colors.Transparent; - public override Color SummaryTextColor => Colors.Transparent; - - public string Value - { - get { return _value; } - set - { - _value = value; - IsDirty = true; - OnPropertyChanged(); - } - } - - public int SecondValue - { - get { return _secondValue; } - set - { - _secondValue = value; - IsDirty = true; - OnPropertyChanged(); - } - } - } -} \ No newline at end of file diff --git a/Filtration.ObjectModel/Enums/ThemeComponentType.cs b/Filtration.ObjectModel/Enums/ThemeComponentType.cs index 48c20a0..ac3b70b 100644 --- a/Filtration.ObjectModel/Enums/ThemeComponentType.cs +++ b/Filtration.ObjectModel/Enums/ThemeComponentType.cs @@ -11,6 +11,8 @@ namespace Filtration.ObjectModel.Enums [Description("Border")] BorderColor, [Description("Font Size")] - FontSize + FontSize, + [Description("Alert Sound")] + AlertSound } } diff --git a/Filtration.ObjectModel/Filtration.ObjectModel.csproj b/Filtration.ObjectModel/Filtration.ObjectModel.csproj index bcc1cef..b7f55d5 100644 --- a/Filtration.ObjectModel/Filtration.ObjectModel.csproj +++ b/Filtration.ObjectModel/Filtration.ObjectModel.csproj @@ -55,7 +55,7 @@ - + @@ -131,6 +131,7 @@ + diff --git a/Filtration.ObjectModel/ThemeEditor/StrIntThemeComponent.cs b/Filtration.ObjectModel/ThemeEditor/StrIntThemeComponent.cs new file mode 100644 index 0000000..a959d70 --- /dev/null +++ b/Filtration.ObjectModel/ThemeEditor/StrIntThemeComponent.cs @@ -0,0 +1,48 @@ +using System; +using System.Windows.Media; +using Filtration.ObjectModel.Enums; + +namespace Filtration.ObjectModel.ThemeEditor +{ + [Serializable] + public class StrIntThemeComponent : ThemeComponent + { + private string _value; + private int _secondValue; + + public StrIntThemeComponent(ThemeComponentType componentType, string componentName, string componentValue, int componentSecondValue) + { + if (componentName == null || componentValue == null) + { + throw new ArgumentException("Null parameters not allowed in StrIntThemeComponent constructor"); + } + + ComponentType = componentType; + Value = componentValue; + SecondValue = componentSecondValue; + ComponentName = componentName; + } + + public string Value + { + get { return _value; } + set + { + _value = value; + OnPropertyChanged(); + _themeComponentUpdatedEventHandler?.Invoke(this, EventArgs.Empty); + } + } + + public int SecondValue + { + get { return _secondValue; } + set + { + _secondValue = value; + OnPropertyChanged(); + _themeComponentUpdatedEventHandler?.Invoke(this, EventArgs.Empty); + } + } + } +} diff --git a/Filtration.ObjectModel/ThemeEditor/Theme.cs b/Filtration.ObjectModel/ThemeEditor/Theme.cs index a765e30..7d9d3fc 100644 --- a/Filtration.ObjectModel/ThemeEditor/Theme.cs +++ b/Filtration.ObjectModel/ThemeEditor/Theme.cs @@ -39,5 +39,10 @@ namespace Filtration.ObjectModel.ThemeEditor { _components.Add(new IntegerThemeComponent(componentType, componentName, componentValue)); } + + public void AddComponent(ThemeComponentType componentType, string componentName, string componentValue, int componentSecondValue) + { + _components.Add(new StrIntThemeComponent(componentType, componentName, componentValue, componentSecondValue)); + } } } diff --git a/Filtration.ObjectModel/ThemeEditor/ThemeComponentCollection.cs b/Filtration.ObjectModel/ThemeEditor/ThemeComponentCollection.cs index 605a62c..50510e0 100644 --- a/Filtration.ObjectModel/ThemeEditor/ThemeComponentCollection.cs +++ b/Filtration.ObjectModel/ThemeEditor/ThemeComponentCollection.cs @@ -35,6 +35,19 @@ namespace Filtration.ObjectModel.ThemeEditor return component; } + public ThemeComponent AddComponent(ThemeComponentType componentType, string componentName, string componentValue, int componentSecondValue) + { + if (ComponentExists(componentType, componentName)) + { + return Items.FirstOrDefault(t => t.ComponentName == componentName && t.ComponentType == componentType); + } + + var component = new StrIntThemeComponent(componentType, componentName, componentValue, componentSecondValue); + Items.Add(component); + + return component; + } + private bool ComponentExists(ThemeComponentType componentType, string componentName) { var componentCount = diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index fb1d755..ee1ff18 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -236,7 +236,7 @@ namespace Filtration.Parser.Services RemoveExistingBlockItemsOfType(block); RemoveExistingBlockItemsOfType(block); - var match = Regex.Match(trimmedLine, @"\S+\s+(\S+)\s?(\d+)?"); + var match = Regex.Match(trimmedLine, @"\S+\s+(\S+)\s?(\d+)?\s*([#]?)(.*)"); if (match.Success) { @@ -250,6 +250,12 @@ namespace Filtration.Parser.Services else { secondValue = 79; + } + + ThemeComponent themeComponent = null; + if(match.Groups[3].Value == "#" && !string.IsNullOrWhiteSpace(match.Groups[4].Value)) + { + themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.AlertSound, match.Groups[4].Value.Trim(), firstValue, secondValue); } if (lineOption == "PlayAlertSound") @@ -259,6 +265,7 @@ namespace Filtration.Parser.Services Value = firstValue, SecondValue = secondValue }; + blockItemValue.ThemeComponent = themeComponent; block.BlockItems.Add(blockItemValue); } else @@ -268,6 +275,7 @@ namespace Filtration.Parser.Services Value = firstValue, SecondValue = secondValue }; + blockItemValue.ThemeComponent = themeComponent; block.BlockItems.Add(blockItemValue); } } diff --git a/Filtration.ThemeEditor/Converters/ThemeComponentTypeToStringConverter.cs b/Filtration.ThemeEditor/Converters/ThemeComponentTypeToStringConverter.cs index 2ae7c2d..a3fe4f4 100644 --- a/Filtration.ThemeEditor/Converters/ThemeComponentTypeToStringConverter.cs +++ b/Filtration.ThemeEditor/Converters/ThemeComponentTypeToStringConverter.cs @@ -35,6 +35,10 @@ namespace Filtration.ThemeEditor.Converters { return "Font Size Theme Components"; } + case "Alert Sound": + { + return "Alert Sound Theme Components"; + } } return type.GetAttributeDescription(); diff --git a/Filtration.ThemeEditor/Filtration.ThemeEditor.csproj b/Filtration.ThemeEditor/Filtration.ThemeEditor.csproj index d64952d..8644cd7 100644 --- a/Filtration.ThemeEditor/Filtration.ThemeEditor.csproj +++ b/Filtration.ThemeEditor/Filtration.ThemeEditor.csproj @@ -109,6 +109,7 @@ + diff --git a/Filtration.ThemeEditor/Providers/ThemeProvider.cs b/Filtration.ThemeEditor/Providers/ThemeProvider.cs index 2c9bec3..4e8fe20 100644 --- a/Filtration.ThemeEditor/Providers/ThemeProvider.cs +++ b/Filtration.ThemeEditor/Providers/ThemeProvider.cs @@ -45,6 +45,9 @@ namespace Filtration.ThemeEditor.Providers case ThemeComponentType.FontSize: c.Add(new IntegerThemeComponent(component.ComponentType, component.ComponentName, ((IntegerThemeComponent)component).Value)); break; + case ThemeComponentType.AlertSound: + c.Add(new StrIntThemeComponent(component.ComponentType, component.ComponentName, ((StrIntThemeComponent)component).Value, ((StrIntThemeComponent)component).SecondValue)); + break; } return c; }); diff --git a/Filtration.ThemeEditor/Services/ThemeService.cs b/Filtration.ThemeEditor/Services/ThemeService.cs index 2885dd0..392abcd 100644 --- a/Filtration.ThemeEditor/Services/ThemeService.cs +++ b/Filtration.ThemeEditor/Services/ThemeService.cs @@ -45,6 +45,10 @@ namespace Filtration.ThemeEditor.Services case ThemeComponentType.FontSize: mismatchedComponents = ApplyIntegerTheme(blocks, typeof(FontSizeBlockItem), component); break; + case ThemeComponentType.AlertSound: + mismatchedComponents = ApplyStrIntTheme(blocks, typeof(SoundBlockItem), component); + mismatchedComponents = ApplyStrIntTheme(blocks, typeof(PositionalSoundBlockItem), component); + break; } } @@ -95,5 +99,26 @@ namespace Filtration.ThemeEditor.Services return !componentMatched; } + + private bool ApplyStrIntTheme(IEnumerable blocks, Type type, ThemeComponent component) + { + var componentMatched = false; + foreach (var block in blocks) + { + foreach (var blockItem in block.BlockItems.Where(i => i.GetType() == type)) + { + var colorBlockItem = (StrIntBlockItem)blockItem; + if (colorBlockItem.ThemeComponent != null && + colorBlockItem.ThemeComponent.ComponentName == component.ComponentName) + { + colorBlockItem.Value = ((StrIntThemeComponent)component).Value; + colorBlockItem.SecondValue = ((StrIntThemeComponent)component).SecondValue; + componentMatched = true; + } + } + } + + return !componentMatched; + } } } diff --git a/Filtration.ThemeEditor/ViewModels/StrIntThemeComponentViewModel.cs b/Filtration.ThemeEditor/ViewModels/StrIntThemeComponentViewModel.cs new file mode 100644 index 0000000..a1bfe6d --- /dev/null +++ b/Filtration.ThemeEditor/ViewModels/StrIntThemeComponentViewModel.cs @@ -0,0 +1,8 @@ +namespace Filtration.ThemeEditor.ViewModels +{ + public class StrIntThemeComponentViewModel : ThemeComponentViewModel + { + public int Value { get; set; } + public int SecondValue { get; set; } + } +} diff --git a/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs b/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs index b342082..18e5657 100644 --- a/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs +++ b/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs @@ -205,6 +205,9 @@ namespace Filtration.ThemeEditor.ViewModels case ThemeComponentType.FontSize: Components.Add(new IntegerThemeComponent(themeComponentType, "Untitled Component", 35)); break; + case ThemeComponentType.AlertSound: + Components.Add(new StrIntThemeComponent(themeComponentType, "Untitled Component", "1", 100)); + break; } } diff --git a/Filtration.ThemeEditor/Views/ThemeComponentControl.xaml b/Filtration.ThemeEditor/Views/ThemeComponentControl.xaml index 231561b..0065087 100644 --- a/Filtration.ThemeEditor/Views/ThemeComponentControl.xaml +++ b/Filtration.ThemeEditor/Views/ThemeComponentControl.xaml @@ -69,6 +69,18 @@ + + + + + + + + + + + + diff --git a/Filtration/App.xaml.cs b/Filtration/App.xaml.cs index 192f000..e5cb90a 100644 --- a/Filtration/App.xaml.cs +++ b/Filtration/App.xaml.cs @@ -48,6 +48,7 @@ namespace Filtration cfg.CreateMap().ReverseMap(); cfg.CreateMap().ReverseMap(); cfg.CreateMap().ReverseMap(); + cfg.CreateMap().ReverseMap(); cfg.CreateMap(); }); diff --git a/Filtration/Converters/AvailableThemeComponentsConverter.cs b/Filtration/Converters/AvailableThemeComponentsConverter.cs index 33a1a2b..537ba56 100644 --- a/Filtration/Converters/AvailableThemeComponentsConverter.cs +++ b/Filtration/Converters/AvailableThemeComponentsConverter.cs @@ -37,6 +37,10 @@ namespace Filtration.Converters { themeComponentType = ThemeComponentType.FontSize; } + else if (blockItem.GetType() == typeof(SoundBlockItem) || blockItem.GetType() == typeof(PositionalSoundBlockItem)) + { + themeComponentType = ThemeComponentType.AlertSound; + } else { return null; diff --git a/Filtration/UserControls/BlockItemControl.xaml b/Filtration/UserControls/BlockItemControl.xaml index abf7363..606e780 100644 --- a/Filtration/UserControls/BlockItemControl.xaml +++ b/Filtration/UserControls/BlockItemControl.xaml @@ -141,6 +141,14 @@ + + + + + + + + @@ -152,6 +160,14 @@ + + + + + + + + diff --git a/Filtration/UserControls/BlockItemControl.xaml.cs b/Filtration/UserControls/BlockItemControl.xaml.cs index e312c3d..bb90bd1 100644 --- a/Filtration/UserControls/BlockItemControl.xaml.cs +++ b/Filtration/UserControls/BlockItemControl.xaml.cs @@ -112,6 +112,11 @@ namespace Filtration.UserControls var integerBlockItem = BlockItem as IntegerBlockItem; integerBlockItem.Value = ((IntegerThemeComponent)integerBlockItem.ThemeComponent).Value; break; + case ThemeComponentType.AlertSound: + var strIntBlockItem = BlockItem as StrIntBlockItem; + strIntBlockItem.Value = ((StrIntThemeComponent)strIntBlockItem.ThemeComponent).Value; + strIntBlockItem.SecondValue = ((StrIntThemeComponent)strIntBlockItem.ThemeComponent).SecondValue; + break; } } diff --git a/Filtration/UserControls/ThemeComponentSelectionControl.xaml b/Filtration/UserControls/ThemeComponentSelectionControl.xaml index 97ac25b..862390f 100644 --- a/Filtration/UserControls/ThemeComponentSelectionControl.xaml +++ b/Filtration/UserControls/ThemeComponentSelectionControl.xaml @@ -55,9 +55,14 @@ + + + + + diff --git a/Filtration/ViewModels/MainWindowViewModel.cs b/Filtration/ViewModels/MainWindowViewModel.cs index 168f006..6e4fcce 100644 --- a/Filtration/ViewModels/MainWindowViewModel.cs +++ b/Filtration/ViewModels/MainWindowViewModel.cs @@ -115,6 +115,7 @@ namespace Filtration.ViewModels AddBackgroundColorThemeComponentCommand = new RelayCommand(OnAddBackgroundColorThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); AddBorderColorThemeComponentCommand = new RelayCommand(OnAddBorderColorThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); AddFontSizeThemeComponentCommand = new RelayCommand(OnAddFontSizeThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); + AddAlertSoundThemeComponentCommand = new RelayCommand(OnAddAlertSoundThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); DeleteThemeComponentCommand = new RelayCommand(OnDeleteThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable && _avalonDockWorkspaceViewModel.ActiveThemeViewModel.SelectedThemeComponent != null); ExpandAllBlocksCommand = new RelayCommand(OnExpandAllBlocksCommand, () => ActiveDocumentIsScript); @@ -215,6 +216,7 @@ namespace Filtration.ViewModels public RelayCommand AddBackgroundColorThemeComponentCommand { get; } public RelayCommand AddBorderColorThemeComponentCommand { get; } public RelayCommand AddFontSizeThemeComponentCommand { get; } + public RelayCommand AddAlertSoundThemeComponentCommand { get; } public RelayCommand DeleteThemeComponentCommand { get; } public RelayCommand AddBlockCommand { get; } @@ -684,6 +686,11 @@ namespace Filtration.ViewModels _avalonDockWorkspaceViewModel.ActiveThemeViewModel.AddThemeComponentCommand.Execute(ThemeComponentType.FontSize); } + private void OnAddAlertSoundThemeComponentCommand() + { + _avalonDockWorkspaceViewModel.ActiveThemeViewModel.AddThemeComponentCommand.Execute(ThemeComponentType.AlertSound); + } + private void OnDeleteThemeComponentCommand() { _avalonDockWorkspaceViewModel.ActiveThemeViewModel.DeleteThemeComponentCommand.Execute( diff --git a/Filtration/Views/MainWindow.xaml b/Filtration/Views/MainWindow.xaml index 2fd013b..ed97dc0 100644 --- a/Filtration/Views/MainWindow.xaml +++ b/Filtration/Views/MainWindow.xaml @@ -130,6 +130,7 @@ + From 2958d93b33261e72c777098fe7cc423b69df02cb Mon Sep 17 00:00:00 2001 From: azakhi Date: Mon, 27 Aug 2018 22:43:01 +0300 Subject: [PATCH 31/33] Add Custom Sound block --- .../BlockItemBaseTypes/StringBlockItem.cs | 2 +- .../BlockItemTypes/CustomSoundBlockItem.cs | 21 +++++ .../Filtration.ObjectModel.csproj | 1 + .../Services/ItemFilterBlockTranslator.cs | 22 ++++- Filtration/UserControls/BlockItemControl.xaml | 19 +++++ .../ViewModels/ItemFilterBlockViewModel.cs | 82 ++++++++++++++++++- Filtration/Views/ItemFilterBlockView.xaml | 12 +++ 7 files changed, 154 insertions(+), 5 deletions(-) create mode 100644 Filtration.ObjectModel/BlockItemTypes/CustomSoundBlockItem.cs diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/StringBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/StringBlockItem.cs index 3d3f879..162916d 100644 --- a/Filtration.ObjectModel/BlockItemBaseTypes/StringBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemBaseTypes/StringBlockItem.cs @@ -15,7 +15,7 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes Value = value; } - public override string OutputText => PrefixText + " " + Value; + public override string OutputText => PrefixText + " \"" + Value + "\""; public override string SummaryText => string.Empty; public override Color SummaryBackgroundColor => Colors.Transparent; diff --git a/Filtration.ObjectModel/BlockItemTypes/CustomSoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/CustomSoundBlockItem.cs new file mode 100644 index 0000000..9aafd01 --- /dev/null +++ b/Filtration.ObjectModel/BlockItemTypes/CustomSoundBlockItem.cs @@ -0,0 +1,21 @@ +using Filtration.ObjectModel.BlockItemBaseTypes; + +namespace Filtration.ObjectModel.BlockItemTypes +{ + public class CustomSoundBlockItem : StringBlockItem + { + public CustomSoundBlockItem() + { + Value = ""; + } + + public CustomSoundBlockItem(string value) : base(value) + { + } + + public override string PrefixText => "CustomAlertSound"; + public override int MaximumAllowed => 1; + public override string DisplayHeading => "Custom Alert Sound"; + public override int SortOrder => 30; + } +} diff --git a/Filtration.ObjectModel/Filtration.ObjectModel.csproj b/Filtration.ObjectModel/Filtration.ObjectModel.csproj index b7f55d5..04edeca 100644 --- a/Filtration.ObjectModel/Filtration.ObjectModel.csproj +++ b/Filtration.ObjectModel/Filtration.ObjectModel.csproj @@ -64,6 +64,7 @@ + diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index ee1ff18..8e53093 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -235,6 +235,7 @@ namespace Filtration.Parser.Services // Only ever use the last PlayAlertSound item encountered as multiples aren't valid. RemoveExistingBlockItemsOfType(block); RemoveExistingBlockItemsOfType(block); + RemoveExistingBlockItemsOfType(block); var match = Regex.Match(trimmedLine, @"\S+\s+(\S+)\s?(\d+)?\s*([#]?)(.*)"); @@ -314,7 +315,7 @@ namespace Filtration.Parser.Services // Only ever use the last Icon item encountered as multiples aren't valid. RemoveExistingBlockItemsOfType(block); - var match = Regex.Match(trimmedLine, @"\S+\s+(\S+)"); + var match = Regex.Match(trimmedLine, @"\S+\s+""(\S+)"""); if (match.Success) { @@ -341,6 +342,25 @@ namespace Filtration.Parser.Services block.BlockItems.Add(beamBlockItem); break; } + case "CustomAlertSound": + { + // Only ever use the last CustomSoundBlockItem item encountered as multiples aren't valid. + RemoveExistingBlockItemsOfType(block); + RemoveExistingBlockItemsOfType(block); + RemoveExistingBlockItemsOfType(block); + + var match = Regex.Match(trimmedLine, @"\S+\s+""(\S+)"""); + + if (match.Success) + { + var blockItemValue = new CustomSoundBlockItem + { + Value = match.Groups[1].Value + }; + block.BlockItems.Add(blockItemValue); + } + break; + } } } diff --git a/Filtration/UserControls/BlockItemControl.xaml b/Filtration/UserControls/BlockItemControl.xaml index 606e780..7a401b8 100644 --- a/Filtration/UserControls/BlockItemControl.xaml +++ b/Filtration/UserControls/BlockItemControl.xaml @@ -177,6 +177,25 @@ + + + + + + + + + + + + + diff --git a/Filtration/ViewModels/ItemFilterBlockViewModel.cs b/Filtration/ViewModels/ItemFilterBlockViewModel.cs index 8396902..fc74038 100644 --- a/Filtration/ViewModels/ItemFilterBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterBlockViewModel.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Collections.ObjectModel; using System.Collections.Specialized; +using System.IO; using System.Linq; using System.Windows.Media; using Filtration.ObjectModel; @@ -10,6 +11,7 @@ using Filtration.ObjectModel.BlockItemTypes; using Filtration.Services; using Filtration.Views; using GalaSoft.MvvmLight.CommandWpf; +using Microsoft.Win32; using Xceed.Wpf.Toolkit; namespace Filtration.ViewModels @@ -28,6 +30,7 @@ namespace Filtration.ViewModels private readonly IStaticDataService _staticDataService; private readonly IReplaceColorsViewModel _replaceColorsViewModel; private readonly MediaPlayer _mediaPlayer = new MediaPlayer(); + public static ObservableCollection _customSoundsAvailable; private bool _displaySettingsPopupOpen; private bool _isExpanded; @@ -47,6 +50,16 @@ namespace Filtration.ViewModels SwitchBlockItemsViewCommand = new RelayCommand(OnSwitchBlockItemsViewCommand); PlaySoundCommand = new RelayCommand(OnPlaySoundCommand, () => HasSound); PlayPositionalSoundCommand = new RelayCommand(OnPlayPositionalSoundCommand, () => HasPositionalSound); + PlayCustomSoundCommand = new RelayCommand(OnPlayCustomSoundCommand, () => HasCustomSound); + CustomSoundFileDialogCommand = new RelayCommand(OnCustomSoundFileDialog); + + if(_customSoundsAvailable == null || _customSoundsAvailable.Count < 1) + { + _customSoundsAvailable = new ObservableCollection { + "1maybevaluable.mp3", "2currency.mp3", "3uniques.mp3", "4maps.mp3", "5highmaps.mp3", + "6veryvaluable.mp3", "7chancing.mp3", "12leveling.mp3", "placeholder.mp3" + }; + } } public override void Initialise(IItemFilterBlockBase itemFilterBlockBase, IItemFilterScriptViewModel parentScriptViewModel) @@ -66,9 +79,16 @@ namespace Filtration.ViewModels foreach (var blockItem in itemFilterBlock.BlockItems) { blockItem.PropertyChanged += OnBlockItemChanged; + + var customSoundBlockItem = blockItem as CustomSoundBlockItem; + if (customSoundBlockItem != null) + { + if (_customSoundsAvailable.IndexOf(customSoundBlockItem.Value) < 0) + { + _customSoundsAvailable.Add(customSoundBlockItem.Value); + } + } } - - base.Initialise(itemFilterBlock, parentScriptViewModel); } @@ -81,6 +101,8 @@ namespace Filtration.ViewModels public RelayCommand PlaySoundCommand { get; } public RelayCommand PlayPositionalSoundCommand { get; } public RelayCommand SwitchBlockItemsViewCommand { get; } + public RelayCommand CustomSoundFileDialogCommand { get; } + public RelayCommand PlayCustomSoundCommand { get; } public IItemFilterBlock Block { get; private set; } @@ -176,7 +198,8 @@ namespace Filtration.ViewModels typeof (PositionalSoundBlockItem), typeof (DisableDropSoundBlockItem), typeof (IconBlockItem), - typeof (BeamBlockItem) + typeof (BeamBlockItem), + typeof (CustomSoundBlockItem) }; public bool BlockEnabled @@ -212,6 +235,8 @@ namespace Filtration.ViewModels public ObservableCollection AvailableColors => PathOfExileColors.DefaultColors; + public ObservableCollection CustomSoundsAvailable => _customSoundsAvailable; + public Color DisplayTextColor => Block.DisplayTextColor; public Color DisplayBackgroundColor => Block.DisplayBackgroundColor; public Color DisplayBorderColor => Block.DisplayBorderColor; @@ -221,6 +246,7 @@ namespace Filtration.ViewModels public bool HasSound => Block.HasBlockItemOfType(); public bool HasPositionalSound => Block.HasBlockItemOfType(); + public bool HasCustomSound => Block.HasBlockItemOfType(); public bool HasAudioVisualBlockItems => AudioVisualBlockItems.Any(); @@ -444,6 +470,8 @@ namespace Filtration.ViewModels RaisePropertyChanged(nameof(DisplayIcon)); RaisePropertyChanged(nameof(DisplayBeamColor)); RaisePropertyChanged(nameof(HasSound)); + RaisePropertyChanged(nameof(HasPositionalSound)); + RaisePropertyChanged(nameof(HasCustomSound)); } private void OnBlockItemsCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) @@ -453,5 +481,53 @@ namespace Filtration.ViewModels RaisePropertyChanged(nameof(AudioVisualBlockItems)); RaisePropertyChanged(nameof(HasAudioVisualBlockItems)); } + + private void OnCustomSoundFileDialog() + { + OpenFileDialog fileDialog = new OpenFileDialog(); + fileDialog.DefaultExt = ".mp3"; + var poePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).ToString() + @"\My Games\Path of Exile\"; + fileDialog.InitialDirectory = poePath; + + Nullable result = fileDialog.ShowDialog(); + if (result == true) + { + var fileName = fileDialog.FileName; + if(fileName.StartsWith(poePath)) + { + fileName = fileName.Replace(poePath, ""); + } + + var customSoundBlockItem = BlockItems.First(b => b.GetType() == typeof(CustomSoundBlockItem)) as CustomSoundBlockItem; + + if (CustomSoundsAvailable.IndexOf(fileName) < 0) + { + CustomSoundsAvailable.Add(fileName); + RaisePropertyChanged(nameof(CustomSoundsAvailable)); + } + customSoundBlockItem.Value = fileName; + } + } + + private void OnPlayCustomSoundCommand() + { + var poePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).ToString() + @"\My Games\Path of Exile\"; + var identifier = BlockItems.OfType().First().Value; + + if(!Path.IsPathRooted(identifier)) + { + identifier = poePath + identifier; + } + + try + { + _mediaPlayer.Open(new Uri(identifier, UriKind.Absolute)); + _mediaPlayer.Play(); + } + catch + { + MessageBox.Show("Couldn't play the file. Please be sure it is a valid audio file."); + } + } } } diff --git a/Filtration/Views/ItemFilterBlockView.xaml b/Filtration/Views/ItemFilterBlockView.xaml index f4bbeac..8716b2c 100644 --- a/Filtration/Views/ItemFilterBlockView.xaml +++ b/Filtration/Views/ItemFilterBlockView.xaml @@ -161,6 +161,18 @@ ToolTip="Click to preview drop sound"> + Date: Wed, 29 Aug 2018 13:11:41 +0300 Subject: [PATCH 32/33] Add custom sound theme support --- .../BlockItemBaseTypes/StringBlockItem.cs | 43 ++++++++- .../BlockItemTypes/CustomSoundBlockItem.cs | 2 +- .../Enums/ThemeComponentType.cs | 4 +- .../Filtration.ObjectModel.csproj | 20 +++++ .../ThemeEditor/StrIntThemeComponent.cs | 1 - .../ThemeEditor/StringThemeComponent.cs | 82 ++++++++++++++++++ .../ThemeEditor/ThemeComponentCollection.cs | 13 +++ Filtration.ObjectModel/packages.config | 2 + .../Services/ItemFilterBlockTranslator.cs | 10 ++- .../ThemeComponentTypeToStringConverter.cs | 4 + .../Filtration.ThemeEditor.csproj | 6 +- .../Resources/open_icon.png | Bin 0 -> 411 bytes .../Resources/speaker_icon.png | Bin 0 -> 1619 bytes .../StringThemeComponentViewModel.cs | 9 ++ .../ViewModels/ThemeEditorViewModel.cs | 3 + .../Views/ThemeComponentControl.xaml | 18 ++++ Filtration/App.xaml.cs | 1 + .../AvailableThemeComponentsConverter.cs | 4 + Filtration/UserControls/BlockItemControl.xaml | 20 ++++- .../UserControls/BlockItemControl.xaml.cs | 4 + .../ThemeComponentSelectionControl.xaml | 4 + .../ViewModels/ItemFilterBlockViewModel.cs | 11 ++- Filtration/ViewModels/MainWindowViewModel.cs | 7 ++ Filtration/Views/MainWindow.xaml | 1 + 24 files changed, 255 insertions(+), 14 deletions(-) create mode 100644 Filtration.ObjectModel/ThemeEditor/StringThemeComponent.cs create mode 100644 Filtration.ThemeEditor/Resources/open_icon.png create mode 100644 Filtration.ThemeEditor/Resources/speaker_icon.png create mode 100644 Filtration.ThemeEditor/ViewModels/StringThemeComponentViewModel.cs diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/StringBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/StringBlockItem.cs index 162916d..fd70174 100644 --- a/Filtration.ObjectModel/BlockItemBaseTypes/StringBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemBaseTypes/StringBlockItem.cs @@ -1,10 +1,13 @@ -using System.Windows.Media; +using System; +using System.Windows.Media; +using Filtration.ObjectModel.ThemeEditor; namespace Filtration.ObjectModel.BlockItemBaseTypes { - public abstract class StringBlockItem : BlockItemBase, IAudioVisualBlockItem + public abstract class StringBlockItem : BlockItemBase, IAudioVisualBlockItem, IBlockItemWithTheme { private string _value; + private ThemeComponent _themeComponent; protected StringBlockItem() { @@ -15,12 +18,36 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes Value = value; } - public override string OutputText => PrefixText + " \"" + Value + "\""; + public override string OutputText => PrefixText + " \"" + Value + "\"" + + (ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty); public override string SummaryText => string.Empty; public override Color SummaryBackgroundColor => Colors.Transparent; public override Color SummaryTextColor => Colors.Transparent; + public ThemeComponent ThemeComponent + { + get { return _themeComponent; } + set + { + if (_themeComponent == value) { return; } + + if (_themeComponent != null) + { + _themeComponent.ThemeComponentUpdated -= OnThemeComponentUpdated; + _themeComponent.ThemeComponentDeleted -= OnThemeComponentDeleted; + } + if (value != null) + { + value.ThemeComponentUpdated += OnThemeComponentUpdated; + value.ThemeComponentDeleted += OnThemeComponentDeleted; + } + + _themeComponent = value; + OnPropertyChanged(); + } + } + public string Value { get { return _value; } @@ -31,5 +58,15 @@ namespace Filtration.ObjectModel.BlockItemBaseTypes OnPropertyChanged(); } } + + private void OnThemeComponentUpdated(object sender, EventArgs e) + { + Value = ((StringThemeComponent)sender).Value; + } + + private void OnThemeComponentDeleted(object sender, EventArgs e) + { + ThemeComponent = null; + } } } \ No newline at end of file diff --git a/Filtration.ObjectModel/BlockItemTypes/CustomSoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/CustomSoundBlockItem.cs index 9aafd01..93768a8 100644 --- a/Filtration.ObjectModel/BlockItemTypes/CustomSoundBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/CustomSoundBlockItem.cs @@ -6,7 +6,7 @@ namespace Filtration.ObjectModel.BlockItemTypes { public CustomSoundBlockItem() { - Value = ""; + Value = "placeholder.mp3"; } public CustomSoundBlockItem(string value) : base(value) diff --git a/Filtration.ObjectModel/Enums/ThemeComponentType.cs b/Filtration.ObjectModel/Enums/ThemeComponentType.cs index ac3b70b..a48299c 100644 --- a/Filtration.ObjectModel/Enums/ThemeComponentType.cs +++ b/Filtration.ObjectModel/Enums/ThemeComponentType.cs @@ -13,6 +13,8 @@ namespace Filtration.ObjectModel.Enums [Description("Font Size")] FontSize, [Description("Alert Sound")] - AlertSound + AlertSound, + [Description("Custom Sound")] + CustomSound } } diff --git a/Filtration.ObjectModel/Filtration.ObjectModel.csproj b/Filtration.ObjectModel/Filtration.ObjectModel.csproj index 04edeca..8022791 100644 --- a/Filtration.ObjectModel/Filtration.ObjectModel.csproj +++ b/Filtration.ObjectModel/Filtration.ObjectModel.csproj @@ -37,10 +37,26 @@ ..\packages\Castle.Windsor.3.4.0\lib\net45\Castle.Windsor.dll + + ..\packages\CommonServiceLocator.2.0.2\lib\net45\CommonServiceLocator.dll + + + ..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.dll + + + ..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.Extras.dll + + + ..\packages\MvvmLightLibs.5.3.0.0\lib\net45\GalaSoft.MvvmLight.Platform.dll + + + + ..\packages\MvvmLightLibs.5.3.0.0\lib\net45\System.Windows.Interactivity.dll + @@ -132,6 +148,7 @@ + @@ -141,6 +158,9 @@ + + + + + + + + + + + + diff --git a/Filtration/App.xaml.cs b/Filtration/App.xaml.cs index e5cb90a..a123909 100644 --- a/Filtration/App.xaml.cs +++ b/Filtration/App.xaml.cs @@ -49,6 +49,7 @@ namespace Filtration cfg.CreateMap().ReverseMap(); cfg.CreateMap().ReverseMap(); cfg.CreateMap().ReverseMap(); + cfg.CreateMap().ReverseMap(); cfg.CreateMap(); }); diff --git a/Filtration/Converters/AvailableThemeComponentsConverter.cs b/Filtration/Converters/AvailableThemeComponentsConverter.cs index 537ba56..77a6803 100644 --- a/Filtration/Converters/AvailableThemeComponentsConverter.cs +++ b/Filtration/Converters/AvailableThemeComponentsConverter.cs @@ -41,6 +41,10 @@ namespace Filtration.Converters { themeComponentType = ThemeComponentType.AlertSound; } + else if (blockItem.GetType() == typeof(CustomSoundBlockItem)) + { + themeComponentType = ThemeComponentType.CustomSound; + } else { return null; diff --git a/Filtration/UserControls/BlockItemControl.xaml b/Filtration/UserControls/BlockItemControl.xaml index 7a401b8..b8d42a4 100644 --- a/Filtration/UserControls/BlockItemControl.xaml +++ b/Filtration/UserControls/BlockItemControl.xaml @@ -185,15 +185,27 @@ - - - + + + + + + + + diff --git a/Filtration/UserControls/BlockItemControl.xaml.cs b/Filtration/UserControls/BlockItemControl.xaml.cs index bb90bd1..7679d1f 100644 --- a/Filtration/UserControls/BlockItemControl.xaml.cs +++ b/Filtration/UserControls/BlockItemControl.xaml.cs @@ -117,6 +117,10 @@ namespace Filtration.UserControls strIntBlockItem.Value = ((StrIntThemeComponent)strIntBlockItem.ThemeComponent).Value; strIntBlockItem.SecondValue = ((StrIntThemeComponent)strIntBlockItem.ThemeComponent).SecondValue; break; + case ThemeComponentType.CustomSound: + var stringBlockItem = BlockItem as StringBlockItem; + stringBlockItem.Value = ((StringThemeComponent)stringBlockItem.ThemeComponent).Value; + break; } } diff --git a/Filtration/UserControls/ThemeComponentSelectionControl.xaml b/Filtration/UserControls/ThemeComponentSelectionControl.xaml index 862390f..bd68cac 100644 --- a/Filtration/UserControls/ThemeComponentSelectionControl.xaml +++ b/Filtration/UserControls/ThemeComponentSelectionControl.xaml @@ -63,6 +63,10 @@ + + + + diff --git a/Filtration/ViewModels/ItemFilterBlockViewModel.cs b/Filtration/ViewModels/ItemFilterBlockViewModel.cs index fc74038..7284af5 100644 --- a/Filtration/ViewModels/ItemFilterBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterBlockViewModel.cs @@ -83,7 +83,7 @@ namespace Filtration.ViewModels var customSoundBlockItem = blockItem as CustomSoundBlockItem; if (customSoundBlockItem != null) { - if (_customSoundsAvailable.IndexOf(customSoundBlockItem.Value) < 0) + if (!string.IsNullOrWhiteSpace(customSoundBlockItem.Value) && _customSoundsAvailable.IndexOf(customSoundBlockItem.Value) < 0) { _customSoundsAvailable.Add(customSoundBlockItem.Value); } @@ -454,6 +454,15 @@ namespace Filtration.ViewModels { IsDirty = true; } + var customSoundBlockItem = sender as CustomSoundBlockItem; + if (customSoundBlockItem != null) + { + if (!string.IsNullOrWhiteSpace(customSoundBlockItem.Value) && _customSoundsAvailable.IndexOf(customSoundBlockItem.Value) < 0) + { + _customSoundsAvailable.Add(customSoundBlockItem.Value); + } + RaisePropertyChanged(nameof(CustomSoundsAvailable)); + } Block.IsEdited = true; //if (sender is IAudioVisualBlockItem) //{ diff --git a/Filtration/ViewModels/MainWindowViewModel.cs b/Filtration/ViewModels/MainWindowViewModel.cs index 6e4fcce..8651c46 100644 --- a/Filtration/ViewModels/MainWindowViewModel.cs +++ b/Filtration/ViewModels/MainWindowViewModel.cs @@ -116,6 +116,7 @@ namespace Filtration.ViewModels AddBorderColorThemeComponentCommand = new RelayCommand(OnAddBorderColorThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); AddFontSizeThemeComponentCommand = new RelayCommand(OnAddFontSizeThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); AddAlertSoundThemeComponentCommand = new RelayCommand(OnAddAlertSoundThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); + AddCustomSoundThemeComponentCommand = new RelayCommand(OnAddCustomSoundThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); DeleteThemeComponentCommand = new RelayCommand(OnDeleteThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable && _avalonDockWorkspaceViewModel.ActiveThemeViewModel.SelectedThemeComponent != null); ExpandAllBlocksCommand = new RelayCommand(OnExpandAllBlocksCommand, () => ActiveDocumentIsScript); @@ -217,6 +218,7 @@ namespace Filtration.ViewModels public RelayCommand AddBorderColorThemeComponentCommand { get; } public RelayCommand AddFontSizeThemeComponentCommand { get; } public RelayCommand AddAlertSoundThemeComponentCommand { get; } + public RelayCommand AddCustomSoundThemeComponentCommand { get; } public RelayCommand DeleteThemeComponentCommand { get; } public RelayCommand AddBlockCommand { get; } @@ -691,6 +693,11 @@ namespace Filtration.ViewModels _avalonDockWorkspaceViewModel.ActiveThemeViewModel.AddThemeComponentCommand.Execute(ThemeComponentType.AlertSound); } + private void OnAddCustomSoundThemeComponentCommand() + { + _avalonDockWorkspaceViewModel.ActiveThemeViewModel.AddThemeComponentCommand.Execute(ThemeComponentType.CustomSound); + } + private void OnDeleteThemeComponentCommand() { _avalonDockWorkspaceViewModel.ActiveThemeViewModel.DeleteThemeComponentCommand.Execute( diff --git a/Filtration/Views/MainWindow.xaml b/Filtration/Views/MainWindow.xaml index ed97dc0..0c4c1d9 100644 --- a/Filtration/Views/MainWindow.xaml +++ b/Filtration/Views/MainWindow.xaml @@ -131,6 +131,7 @@ + From 78b4ddc862cf6fa282ad8277995650a8d439c91c Mon Sep 17 00:00:00 2001 From: azakhi Date: Wed, 29 Aug 2018 20:12:02 +0300 Subject: [PATCH 33/33] Add new filter fuatures --- .../Extensions/EnumerationExtension.cs | 4 +- .../Extensions/HyperlinkExtensions.cs | 2 +- Filtration.Common/Filtration.Common.csproj | 2 + .../EffectColorBlockItem.cs | 90 +++++++++++++++ .../BlockItemBaseTypes/IconBlockItem.cs | 103 ++++++++++++++++++ .../BackgroundColorBlockItem.cs | 2 +- .../BlockItemTypes/BaseTypeBlockItem.cs | 2 +- .../BlockItemTypes/BeamBlockItem.cs | 21 ---- .../BlockItemTypes/BorderColorBlockItem.cs | 2 +- .../BlockItemTypes/ClassBlockItem.cs | 2 +- .../BlockItemTypes/CustomSoundBlockItem.cs | 2 +- .../DisableDropSoundBlockItem.cs | 2 +- .../BlockItemTypes/DropLevelBlockItem.cs | 2 +- .../BlockItemTypes/ElderMapBlockItem.cs | 2 +- .../BlockItemTypes/FontSizeBlockItem.cs | 2 +- .../BlockItemTypes/GemLevelBlockItem.cs | 2 +- .../BlockItemTypes/HasExplicitModBlockItem.cs | 2 +- .../BlockItemTypes/HeightBlockItem.cs | 2 +- .../BlockItemTypes/IconBlockItem.cs | 21 ---- .../BlockItemTypes/ItemLevelBlockItem.cs | 2 +- .../BlockItemTypes/MapIconBlockItem.cs | 24 ++++ .../BlockItemTypes/MapTierBlockItem.cs | 18 +++ .../BlockItemTypes/PlayEffectBlockItem.cs | 23 ++++ .../PositionalSoundBlockItem.cs | 2 +- .../BlockItemTypes/RarityBlockItem.cs | 2 +- .../BlockItemTypes/ShapedMapBlockItem.cs | 2 +- .../BlockItemTypes/SocketGroupBlockItem.cs | 2 +- .../BlockItemTypes/SoundBlockItem.cs | 2 +- .../BlockItemTypes/StackSizeBlockItem.cs | 2 +- .../BlockItemTypes/TextColorBlockItem.cs | 2 +- .../BlockItemTypes/WidthBlockItem.cs | 2 +- Filtration.ObjectModel/Enums/EffectColor.cs | 20 ++++ Filtration.ObjectModel/Enums/IconColor.cs | 20 ++++ Filtration.ObjectModel/Enums/IconShape.cs | 20 ++++ Filtration.ObjectModel/Enums/IconSize.cs | 14 +++ .../Enums/ThemeComponentType.cs | 6 +- .../Filtration.ObjectModel.csproj | 13 ++- Filtration.ObjectModel/ItemFilterBlock.cs | 65 +++++++++-- .../ThemeEditor/EffectColorThemeComponent.cs | 47 ++++++++ .../ThemeEditor/IconThemeComponent.cs | 60 ++++++++++ .../ThemeEditor/ThemeComponentCollection.cs | 26 +++++ .../Services/TestItemFilterBlockTranslator.cs | 72 +----------- .../Services/ItemFilterBlockTranslator.cs | 66 +++++++---- .../Filtration.ThemeEditor.csproj | 2 + .../EffectColorThemeComponentViewModel.cs | 10 ++ .../ViewModels/IconThemeComponentViewModel.cs | 11 ++ .../ViewModels/ThemeEditorViewModel.cs | 6 + .../Views/ThemeComponentControl.xaml | 37 ++++++- Filtration/App.xaml.cs | 2 + .../AvailableThemeComponentsConverter.cs | 8 ++ ...erter.cs => IconShapeToSourceConverter.cs} | 33 +++--- .../Converters/SizeColorToRectConverter.cs | 33 ++++++ Filtration/Filtration.csproj | 17 ++- Filtration/Resources/DropIcons/Circle.png | Bin 0 -> 102472 bytes Filtration/Resources/DropIcons/Diamond.png | Bin 0 -> 82074 bytes Filtration/Resources/DropIcons/Hexagon.png | Bin 0 -> 101447 bytes Filtration/Resources/DropIcons/Icon1.png | Bin 9436 -> 0 bytes Filtration/Resources/DropIcons/Icon2.png | Bin 8037 -> 0 bytes Filtration/Resources/DropIcons/Icon3.png | Bin 6402 -> 0 bytes Filtration/Resources/DropIcons/Icon4.png | Bin 7424 -> 0 bytes Filtration/Resources/DropIcons/Icon5.png | Bin 6178 -> 0 bytes Filtration/Resources/DropIcons/Icon6.png | Bin 8934 -> 0 bytes Filtration/Resources/DropIcons/Square.png | Bin 0 -> 86704 bytes Filtration/Resources/DropIcons/Star.png | Bin 0 -> 82355 bytes Filtration/Resources/DropIcons/Triangle.png | Bin 0 -> 77169 bytes Filtration/Resources/ItemBaseTypes.txt | 55 +++++++++- Filtration/Resources/ItemClasses.txt | 1 + Filtration/UserControls/BlockItemControl.xaml | 52 +++++++-- .../UserControls/BlockItemControl.xaml.cs | 15 ++- .../UserControls/ImageComboBoxControl.xaml | 2 +- .../UserControls/ItemPreviewControl.xaml | 2 +- .../NumericFilterPredicateControl.xaml | 2 +- .../ThemeComponentSelectionControl.xaml | 8 ++ .../ViewModels/ItemFilterBlockViewModel.cs | 18 ++- Filtration/ViewModels/MainWindowViewModel.cs | 14 +++ Filtration/Views/AboutWindow.xaml | 2 +- Filtration/Views/ItemFilterBlockView.xaml | 31 ++++-- Filtration/Views/MainWindow.xaml | 2 + 78 files changed, 911 insertions(+), 231 deletions(-) rename {Filtration => Filtration.Common}/Extensions/EnumerationExtension.cs (94%) rename {Filtration => Filtration.Common}/Extensions/HyperlinkExtensions.cs (97%) create mode 100644 Filtration.ObjectModel/BlockItemBaseTypes/EffectColorBlockItem.cs create mode 100644 Filtration.ObjectModel/BlockItemBaseTypes/IconBlockItem.cs delete mode 100644 Filtration.ObjectModel/BlockItemTypes/BeamBlockItem.cs delete mode 100644 Filtration.ObjectModel/BlockItemTypes/IconBlockItem.cs create mode 100644 Filtration.ObjectModel/BlockItemTypes/MapIconBlockItem.cs create mode 100644 Filtration.ObjectModel/BlockItemTypes/MapTierBlockItem.cs create mode 100644 Filtration.ObjectModel/BlockItemTypes/PlayEffectBlockItem.cs create mode 100644 Filtration.ObjectModel/Enums/EffectColor.cs create mode 100644 Filtration.ObjectModel/Enums/IconColor.cs create mode 100644 Filtration.ObjectModel/Enums/IconShape.cs create mode 100644 Filtration.ObjectModel/Enums/IconSize.cs create mode 100644 Filtration.ObjectModel/ThemeEditor/EffectColorThemeComponent.cs create mode 100644 Filtration.ObjectModel/ThemeEditor/IconThemeComponent.cs create mode 100644 Filtration.ThemeEditor/ViewModels/EffectColorThemeComponentViewModel.cs create mode 100644 Filtration.ThemeEditor/ViewModels/IconThemeComponentViewModel.cs rename Filtration/Converters/{DropIconConverter.cs => IconShapeToSourceConverter.cs} (61%) create mode 100644 Filtration/Converters/SizeColorToRectConverter.cs create mode 100644 Filtration/Resources/DropIcons/Circle.png create mode 100644 Filtration/Resources/DropIcons/Diamond.png create mode 100644 Filtration/Resources/DropIcons/Hexagon.png delete mode 100644 Filtration/Resources/DropIcons/Icon1.png delete mode 100644 Filtration/Resources/DropIcons/Icon2.png delete mode 100644 Filtration/Resources/DropIcons/Icon3.png delete mode 100644 Filtration/Resources/DropIcons/Icon4.png delete mode 100644 Filtration/Resources/DropIcons/Icon5.png delete mode 100644 Filtration/Resources/DropIcons/Icon6.png create mode 100644 Filtration/Resources/DropIcons/Square.png create mode 100644 Filtration/Resources/DropIcons/Star.png create mode 100644 Filtration/Resources/DropIcons/Triangle.png diff --git a/Filtration/Extensions/EnumerationExtension.cs b/Filtration.Common/Extensions/EnumerationExtension.cs similarity index 94% rename from Filtration/Extensions/EnumerationExtension.cs rename to Filtration.Common/Extensions/EnumerationExtension.cs index 3498157..93630bd 100644 --- a/Filtration/Extensions/EnumerationExtension.cs +++ b/Filtration.Common/Extensions/EnumerationExtension.cs @@ -3,9 +3,9 @@ using System.ComponentModel; using System.Linq; using System.Windows.Markup; -namespace Filtration.Extensions +namespace Filtration.Common.Extensions { - internal class EnumerationExtension : MarkupExtension + public class EnumerationExtension : MarkupExtension { private Type _enumType; diff --git a/Filtration/Extensions/HyperlinkExtensions.cs b/Filtration.Common/Extensions/HyperlinkExtensions.cs similarity index 97% rename from Filtration/Extensions/HyperlinkExtensions.cs rename to Filtration.Common/Extensions/HyperlinkExtensions.cs index fd46841..140236c 100644 --- a/Filtration/Extensions/HyperlinkExtensions.cs +++ b/Filtration.Common/Extensions/HyperlinkExtensions.cs @@ -4,7 +4,7 @@ using System.Windows; using System.Windows.Documents; using System.Windows.Navigation; -namespace Filtration.Extensions +namespace Filtration.Common.Extensions { public static class HyperlinkExtensions { diff --git a/Filtration.Common/Filtration.Common.csproj b/Filtration.Common/Filtration.Common.csproj index 13f3165..38b47e8 100644 --- a/Filtration.Common/Filtration.Common.csproj +++ b/Filtration.Common/Filtration.Common.csproj @@ -75,6 +75,8 @@ + + diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/EffectColorBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/EffectColorBlockItem.cs new file mode 100644 index 0000000..df71499 --- /dev/null +++ b/Filtration.ObjectModel/BlockItemBaseTypes/EffectColorBlockItem.cs @@ -0,0 +1,90 @@ +using System; +using System.Windows.Media; +using Filtration.ObjectModel.Enums; +using Filtration.ObjectModel.Extensions; +using Filtration.ObjectModel.ThemeEditor; + +namespace Filtration.ObjectModel.BlockItemBaseTypes +{ + public abstract class EffectColorBlockItem : BlockItemBase, IAudioVisualBlockItem, IBlockItemWithTheme + { + private EffectColor _color; + private bool _temporary; + private ThemeComponent _themeComponent; + + protected EffectColorBlockItem() + { + } + + protected EffectColorBlockItem(EffectColor color, bool temporary) + { + Color = color; + Temporary = temporary; + } + + public override string OutputText => PrefixText + " " + Color.GetAttributeDescription() + + (Temporary ? " " + "Temp" : string.Empty) + + (ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty); + + public override string SummaryText => string.Empty; + + public ThemeComponent ThemeComponent + { + get { return _themeComponent; } + set + { + if (_themeComponent == value) { return; } + + if (_themeComponent != null) + { + _themeComponent.ThemeComponentUpdated -= OnThemeComponentUpdated; + _themeComponent.ThemeComponentDeleted -= OnThemeComponentDeleted; + } + if (value != null) + { + value.ThemeComponentUpdated += OnThemeComponentUpdated; + value.ThemeComponentDeleted += OnThemeComponentDeleted; + } + + _themeComponent = value; + OnPropertyChanged(); + } + } + + public override Color SummaryBackgroundColor => Colors.Transparent; + public override Color SummaryTextColor => Colors.Transparent; + + public EffectColor Color + { + get { return _color; } + set + { + _color = value; + IsDirty = true; + OnPropertyChanged(); + } + } + + public bool Temporary + { + get { return _temporary; } + set + { + _temporary = value; + IsDirty = true; + OnPropertyChanged(); + } + } + + private void OnThemeComponentUpdated(object sender, EventArgs e) + { + Color = ((EffectColorThemeComponent)sender).EffectColor; + Temporary = ((EffectColorThemeComponent)sender).Temporary; + } + + private void OnThemeComponentDeleted(object sender, EventArgs e) + { + ThemeComponent = null; + } + } +} diff --git a/Filtration.ObjectModel/BlockItemBaseTypes/IconBlockItem.cs b/Filtration.ObjectModel/BlockItemBaseTypes/IconBlockItem.cs new file mode 100644 index 0000000..d6b92d5 --- /dev/null +++ b/Filtration.ObjectModel/BlockItemBaseTypes/IconBlockItem.cs @@ -0,0 +1,103 @@ +using System; +using System.Windows.Media; +using Filtration.ObjectModel.Enums; +using Filtration.ObjectModel.Extensions; +using Filtration.ObjectModel.ThemeEditor; + +namespace Filtration.ObjectModel.BlockItemBaseTypes +{ + public abstract class IconBlockItem : BlockItemBase, IAudioVisualBlockItem, IBlockItemWithTheme + { + private IconSize _size; + private IconColor _color; + private IconShape _shape; + private ThemeComponent _themeComponent; + + protected IconBlockItem() + { + } + + protected IconBlockItem(IconSize size, IconColor color, IconShape shape) + { + Size = size; + Color = color; + Shape = shape; + } + + public override string OutputText => PrefixText + " " + (int)Size + " " + Color.GetAttributeDescription() + " " + Shape.GetAttributeDescription() + + (ThemeComponent != null ? " # " + ThemeComponent.ComponentName : string.Empty); + + public override string SummaryText => string.Empty; + + public ThemeComponent ThemeComponent + { + get { return _themeComponent; } + set + { + if (_themeComponent == value) { return; } + + if (_themeComponent != null) + { + _themeComponent.ThemeComponentUpdated -= OnThemeComponentUpdated; + _themeComponent.ThemeComponentDeleted -= OnThemeComponentDeleted; + } + if (value != null) + { + value.ThemeComponentUpdated += OnThemeComponentUpdated; + value.ThemeComponentDeleted += OnThemeComponentDeleted; + } + + _themeComponent = value; + OnPropertyChanged(); + } + } + + public override Color SummaryBackgroundColor => Colors.Transparent; + public override Color SummaryTextColor => Colors.Transparent; + + public IconSize Size + { + get { return _size; } + set + { + _size = value; + IsDirty = true; + OnPropertyChanged(); + } + } + + public IconColor Color + { + get { return _color; } + set + { + _color = value; + IsDirty = true; + OnPropertyChanged(); + } + } + + public IconShape Shape + { + get { return _shape; } + set + { + _shape = value; + IsDirty = true; + OnPropertyChanged(); + } + } + + private void OnThemeComponentUpdated(object sender, EventArgs e) + { + Size = ((IconThemeComponent)sender).IconSize; + Color = ((IconThemeComponent)sender).IconColor; + Shape = ((IconThemeComponent)sender).IconShape; + } + + private void OnThemeComponentDeleted(object sender, EventArgs e) + { + ThemeComponent = null; + } + } +} diff --git a/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs index 3f3ea11..21b31cf 100644 --- a/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/BackgroundColorBlockItem.cs @@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "SetBackgroundColor"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Background Color"; - public override int SortOrder => 22; + public override int SortOrder => 23; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs index e51188b..1107f6d 100644 --- a/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/BaseTypeBlockItem.cs @@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override Color SummaryBackgroundColor => Colors.MediumTurquoise; public override Color SummaryTextColor => Colors.Black; - public override int SortOrder => 19; + public override int SortOrder => 20; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/BeamBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BeamBlockItem.cs deleted file mode 100644 index ea938cc..0000000 --- a/Filtration.ObjectModel/BlockItemTypes/BeamBlockItem.cs +++ /dev/null @@ -1,21 +0,0 @@ -using System.Windows.Media; -using Filtration.ObjectModel.BlockItemBaseTypes; - -namespace Filtration.ObjectModel.BlockItemTypes -{ - public class BeamBlockItem : ColorBooleanBlockItem - { - public BeamBlockItem() - { - } - - public BeamBlockItem(Color color, bool booleanValue) : base(color, booleanValue) - { - } - - public override string PrefixText => "BeamColor"; - public override int MaximumAllowed => 1; - public override string DisplayHeading => "Beam Color"; - public override int SortOrder => 29; - } -} diff --git a/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs index 842e37b..1b79136 100644 --- a/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/BorderColorBlockItem.cs @@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "SetBorderColor"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Border Color"; - public override int SortOrder => 23; + public override int SortOrder => 24; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs index e46882c..450c914 100644 --- a/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/ClassBlockItem.cs @@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override Color SummaryBackgroundColor => Colors.MediumSeaGreen; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 18; + public override int SortOrder => 19; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/CustomSoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/CustomSoundBlockItem.cs index 93768a8..7e60eb9 100644 --- a/Filtration.ObjectModel/BlockItemTypes/CustomSoundBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/CustomSoundBlockItem.cs @@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "CustomAlertSound"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Custom Alert Sound"; - public override int SortOrder => 30; + public override int SortOrder => 31; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/DisableDropSoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/DisableDropSoundBlockItem.cs index 73ed861..10a1fb5 100644 --- a/Filtration.ObjectModel/BlockItemTypes/DisableDropSoundBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/DisableDropSoundBlockItem.cs @@ -17,7 +17,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string DisplayHeading => "Disable Drop Sound"; public override Color SummaryBackgroundColor => Colors.Transparent; public override Color SummaryTextColor => Colors.Transparent; - public override int SortOrder => 27; + public override int SortOrder => 28; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs index a53108c..6701155 100644 --- a/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/DropLevelBlockItem.cs @@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string SummaryText => "Drop Level " + FilterPredicate; public override Color SummaryBackgroundColor => Colors.DodgerBlue; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 14; + public override int SortOrder => 15; public override int Minimum => 0; public override int Maximum => 100; } diff --git a/Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs index a98cf6a..ec27b42 100644 --- a/Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/ElderMapBlockItem.cs @@ -17,7 +17,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string DisplayHeading => "Elder Map"; public override Color SummaryBackgroundColor => Colors.DarkGoldenrod; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 9; + public override int SortOrder => 10; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs index 2e3d9e0..cb90776 100644 --- a/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/FontSizeBlockItem.cs @@ -16,7 +16,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "SetFontSize"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Font Size"; - public override int SortOrder => 24; + public override int SortOrder => 25; public override int Minimum => 11; public override int Maximum => 45; } diff --git a/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs index f12136d..8825fb5 100644 --- a/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/GemLevelBlockItem.cs @@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string SummaryText => "Gem Level " + FilterPredicate; public override Color SummaryBackgroundColor => Colors.DarkSlateGray; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 15; + public override int SortOrder => 16; public override int Minimum => 0; public override int Maximum => 21; } diff --git a/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs index 9070f73..b47e29b 100644 --- a/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/HasExplicitModBlockItem.cs @@ -33,6 +33,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override Color SummaryBackgroundColor => Colors.MidnightBlue; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 20; + public override int SortOrder => 21; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs index 2f16a13..02c63e0 100644 --- a/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/HeightBlockItem.cs @@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string SummaryText => "Height " + FilterPredicate; public override Color SummaryBackgroundColor => Colors.LightBlue; public override Color SummaryTextColor => Colors.Black; - public override int SortOrder => 11; + public override int SortOrder => 12; public override int Minimum => 0; public override int Maximum => 6; } diff --git a/Filtration.ObjectModel/BlockItemTypes/IconBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/IconBlockItem.cs deleted file mode 100644 index 4d84203..0000000 --- a/Filtration.ObjectModel/BlockItemTypes/IconBlockItem.cs +++ /dev/null @@ -1,21 +0,0 @@ -using Filtration.ObjectModel.BlockItemBaseTypes; - -namespace Filtration.ObjectModel.BlockItemTypes -{ - public class IconBlockItem : StringBlockItem - { - public IconBlockItem() - { - Value = "Icon1"; - } - - public IconBlockItem(string value) : base(value) - { - } - - public override string PrefixText => "Icon"; - public override int MaximumAllowed => 1; - public override string DisplayHeading => "Drop Icon"; - public override int SortOrder => 28; - } -} diff --git a/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs index 638d6d2..c2faccb 100644 --- a/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/ItemLevelBlockItem.cs @@ -20,7 +20,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string SummaryText => "Item Level " + FilterPredicate; public override Color SummaryBackgroundColor => Colors.DarkSlateGray; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 13; + public override int SortOrder => 14; public override int Minimum => 0; public override int Maximum => 100; } diff --git a/Filtration.ObjectModel/BlockItemTypes/MapIconBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/MapIconBlockItem.cs new file mode 100644 index 0000000..a22f644 --- /dev/null +++ b/Filtration.ObjectModel/BlockItemTypes/MapIconBlockItem.cs @@ -0,0 +1,24 @@ +using Filtration.ObjectModel.BlockItemBaseTypes; +using Filtration.ObjectModel.Enums; + +namespace Filtration.ObjectModel.BlockItemTypes +{ + public class MapIconBlockItem : IconBlockItem + { + public MapIconBlockItem() + { + Size = IconSize.Largest; + Color = IconColor.Red; + Shape = IconShape.Circle; + } + + public MapIconBlockItem(IconSize size, IconColor iconColor, IconShape iconShape) : base(size, iconColor, iconShape) + { + } + + public override string PrefixText => "MinimapIcon"; + public override int MaximumAllowed => 1; + public override string DisplayHeading => "Minimap Icon"; + public override int SortOrder => 29; + } +} diff --git a/Filtration.ObjectModel/BlockItemTypes/MapTierBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/MapTierBlockItem.cs new file mode 100644 index 0000000..34e3837 --- /dev/null +++ b/Filtration.ObjectModel/BlockItemTypes/MapTierBlockItem.cs @@ -0,0 +1,18 @@ +using System.Windows.Media; +using Filtration.ObjectModel.BlockItemBaseTypes; + +namespace Filtration.ObjectModel.BlockItemTypes +{ + public class MapTierBlockItem : NumericFilterPredicateBlockItem + { + public override string PrefixText => "MapTier"; + public override int MaximumAllowed => 2; + public override string DisplayHeading => "Map Tier"; + public override string SummaryText => "Map Tier " + FilterPredicate; + public override Color SummaryBackgroundColor => Colors.DarkSlateGray; + public override Color SummaryTextColor => Colors.White; + public override int SortOrder => 8; + public override int Minimum => 1; + public override int Maximum => 16; + } +} diff --git a/Filtration.ObjectModel/BlockItemTypes/PlayEffectBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/PlayEffectBlockItem.cs new file mode 100644 index 0000000..6d5d00a --- /dev/null +++ b/Filtration.ObjectModel/BlockItemTypes/PlayEffectBlockItem.cs @@ -0,0 +1,23 @@ +using Filtration.ObjectModel.BlockItemBaseTypes; +using Filtration.ObjectModel.Enums; + +namespace Filtration.ObjectModel.BlockItemTypes +{ + public class PlayEffectBlockItem : EffectColorBlockItem + { + public PlayEffectBlockItem() + { + Color = EffectColor.Red; + Temporary = false; + } + + public PlayEffectBlockItem(EffectColor effectColor, bool temporary) : base(effectColor, temporary) + { + } + + public override string PrefixText => "PlayEffect"; + public override int MaximumAllowed => 1; + public override string DisplayHeading => "Play Effect"; + public override int SortOrder => 30; + } +} diff --git a/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs index 8c60200..4225f85 100644 --- a/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/PositionalSoundBlockItem.cs @@ -17,6 +17,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "PlayAlertSoundPositional"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Play Positional Alert Sound"; - public override int SortOrder => 26; + public override int SortOrder => 27; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs index da72e69..4346739 100644 --- a/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/RarityBlockItem.cs @@ -30,7 +30,7 @@ namespace Filtration.ObjectModel.BlockItemTypes ((ItemRarity) FilterPredicate.PredicateOperand).GetAttributeDescription(); public override Color SummaryBackgroundColor => Colors.LightCoral; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 17; + public override int SortOrder => 18; public override int Minimum => 0; public override int Maximum => (int)ItemRarity.Unique; } diff --git a/Filtration.ObjectModel/BlockItemTypes/ShapedMapBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/ShapedMapBlockItem.cs index 550a6da..05a20e8 100644 --- a/Filtration.ObjectModel/BlockItemTypes/ShapedMapBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/ShapedMapBlockItem.cs @@ -17,7 +17,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string DisplayHeading => "Shaped Map"; public override Color SummaryBackgroundColor => Colors.DarkGoldenrod; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 8; + public override int SortOrder => 9; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/SocketGroupBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/SocketGroupBlockItem.cs index d654f34..36a6a5f 100644 --- a/Filtration.ObjectModel/BlockItemTypes/SocketGroupBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/SocketGroupBlockItem.cs @@ -39,7 +39,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override Color SummaryBackgroundColor => Colors.GhostWhite; public override Color SummaryTextColor => Colors.Black; - public override int SortOrder => 10; + public override int SortOrder => 11; private SocketColor StringToSocketColor(char socketColorString) { diff --git a/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs index 4642047..a8311f5 100644 --- a/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/SoundBlockItem.cs @@ -17,6 +17,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "PlayAlertSound"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Play Alert Sound"; - public override int SortOrder => 25; + public override int SortOrder => 26; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs index 9b15ea1..43b903a 100644 --- a/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/StackSizeBlockItem.cs @@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string SummaryText => "Stack Size " + FilterPredicate; public override Color SummaryBackgroundColor => Colors.DarkSlateGray; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 16; + public override int SortOrder => 17; public override int Minimum => 0; public override int Maximum => 1000; } diff --git a/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs index 3ac02c5..41161f8 100644 --- a/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/TextColorBlockItem.cs @@ -16,6 +16,6 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string PrefixText => "SetTextColor"; public override int MaximumAllowed => 1; public override string DisplayHeading => "Text Color"; - public override int SortOrder => 21; + public override int SortOrder => 22; } } diff --git a/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs b/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs index 0bb960d..10b8a51 100644 --- a/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs +++ b/Filtration.ObjectModel/BlockItemTypes/WidthBlockItem.cs @@ -21,7 +21,7 @@ namespace Filtration.ObjectModel.BlockItemTypes public override string SummaryText => "Width " + FilterPredicate; public override Color SummaryBackgroundColor => Colors.MediumPurple; public override Color SummaryTextColor => Colors.White; - public override int SortOrder => 12; + public override int SortOrder => 13; public override int Minimum => 0; public override int Maximum => 2; } diff --git a/Filtration.ObjectModel/Enums/EffectColor.cs b/Filtration.ObjectModel/Enums/EffectColor.cs new file mode 100644 index 0000000..8247823 --- /dev/null +++ b/Filtration.ObjectModel/Enums/EffectColor.cs @@ -0,0 +1,20 @@ +using System.ComponentModel; + +namespace Filtration.ObjectModel.Enums +{ + public enum EffectColor + { + [Description("Red")] + Red, + [Description("Green")] + Green, + [Description("Blue")] + Blue, + [Description("Brown")] + Brown, + [Description("White")] + White, + [Description("Yellow")] + Yellow + } +} \ No newline at end of file diff --git a/Filtration.ObjectModel/Enums/IconColor.cs b/Filtration.ObjectModel/Enums/IconColor.cs new file mode 100644 index 0000000..7b143ba --- /dev/null +++ b/Filtration.ObjectModel/Enums/IconColor.cs @@ -0,0 +1,20 @@ +using System.ComponentModel; + +namespace Filtration.ObjectModel.Enums +{ + public enum IconColor + { + [Description("Red")] + Red, + [Description("Green")] + Green, + [Description("Blue")] + Blue, + [Description("Brown")] + Brown, + [Description("White")] + White, + [Description("Yellow")] + Yellow + } +} \ No newline at end of file diff --git a/Filtration.ObjectModel/Enums/IconShape.cs b/Filtration.ObjectModel/Enums/IconShape.cs new file mode 100644 index 0000000..9123d27 --- /dev/null +++ b/Filtration.ObjectModel/Enums/IconShape.cs @@ -0,0 +1,20 @@ +using System.ComponentModel; + +namespace Filtration.ObjectModel.Enums +{ + public enum IconShape + { + [Description("Circle")] + Circle, + [Description("Diamond")] + Diamond, + [Description("Hexagon")] + Hexagon, + [Description("Square")] + Square, + [Description("Star")] + Star, + [Description("Triangle")] + Triangle + } +} \ No newline at end of file diff --git a/Filtration.ObjectModel/Enums/IconSize.cs b/Filtration.ObjectModel/Enums/IconSize.cs new file mode 100644 index 0000000..5cb086b --- /dev/null +++ b/Filtration.ObjectModel/Enums/IconSize.cs @@ -0,0 +1,14 @@ +using System.ComponentModel; + +namespace Filtration.ObjectModel.Enums +{ + public enum IconSize + { + [Description("Largest")] + Largest, + [Description("Medium")] + Medium, + [Description("Small")] + Small + } +} diff --git a/Filtration.ObjectModel/Enums/ThemeComponentType.cs b/Filtration.ObjectModel/Enums/ThemeComponentType.cs index a48299c..74b2498 100644 --- a/Filtration.ObjectModel/Enums/ThemeComponentType.cs +++ b/Filtration.ObjectModel/Enums/ThemeComponentType.cs @@ -15,6 +15,10 @@ namespace Filtration.ObjectModel.Enums [Description("Alert Sound")] AlertSound, [Description("Custom Sound")] - CustomSound + CustomSound, + [Description("Icon")] + Icon, + [Description("Effect")] + Effect } } diff --git a/Filtration.ObjectModel/Filtration.ObjectModel.csproj b/Filtration.ObjectModel/Filtration.ObjectModel.csproj index 8022791..22514bc 100644 --- a/Filtration.ObjectModel/Filtration.ObjectModel.csproj +++ b/Filtration.ObjectModel/Filtration.ObjectModel.csproj @@ -70,6 +70,8 @@ + + @@ -77,7 +79,8 @@ - + + @@ -85,7 +88,7 @@ - + @@ -122,8 +125,12 @@ + + + + @@ -148,6 +155,8 @@ + + diff --git a/Filtration.ObjectModel/ItemFilterBlock.cs b/Filtration.ObjectModel/ItemFilterBlock.cs index 1209677..aa148d9 100644 --- a/Filtration.ObjectModel/ItemFilterBlock.cs +++ b/Filtration.ObjectModel/ItemFilterBlock.cs @@ -23,8 +23,10 @@ namespace Filtration.ObjectModel Color DisplayTextColor { get; } Color DisplayBorderColor { get; } double DisplayFontSize { get; } - string DisplayIcon { get; } - Color DisplayBeamColor { get; } + int DisplayIconSize { get; } + int DisplayIconColor { get; } + int DisplayIconShape { get; } + Color DisplayEffectColor { get; } bool HasBlockItemOfType(); bool HasBlockGroupInParentHierarchy(ItemFilterBlockGroup targetBlockGroup, ItemFilterBlockGroup startingBlockGroup); } @@ -263,21 +265,68 @@ namespace Filtration.ObjectModel } } - public string DisplayIcon + public int DisplayIconSize { get { - var displayIcon = BlockItems.OfType().FirstOrDefault(); - return (displayIcon != null) ? displayIcon.Value : ""; + var mapIconBlockItem = BlockItems.OfType().FirstOrDefault(); + if (mapIconBlockItem != null) + return (int)mapIconBlockItem.Size; + + return -1; } } - public Color DisplayBeamColor + public int DisplayIconColor { get { - var beamBlockItem = BlockItems.OfType().FirstOrDefault(); - return beamBlockItem?.Color ?? new Color { A = 0, R = 0, G = 0, B = 0 }; + var mapIconBlockItem = BlockItems.OfType().FirstOrDefault(); + if (mapIconBlockItem != null) + return (int)mapIconBlockItem.Color; + + return -1; + } + } + + public int DisplayIconShape + { + get + { + var mapIconBlockItem = BlockItems.OfType().FirstOrDefault(); + if (mapIconBlockItem != null) + return (int)mapIconBlockItem.Shape; + + return -1; + } + } + + public Color DisplayEffectColor + { + get + { + var beamBlockItem = BlockItems.OfType().FirstOrDefault(); + + if (beamBlockItem != null) + { + switch (beamBlockItem.Color) + { + case EffectColor.Red: + return Colors.Red; + case EffectColor.Green: + return Colors.Green; + case EffectColor.Blue: + return Colors.Blue; + case EffectColor.Brown: + return Colors.Brown; + case EffectColor.White: + return Colors.White; + case EffectColor.Yellow: + return Colors.Yellow; + } + } + + return Colors.Transparent; } } } diff --git a/Filtration.ObjectModel/ThemeEditor/EffectColorThemeComponent.cs b/Filtration.ObjectModel/ThemeEditor/EffectColorThemeComponent.cs new file mode 100644 index 0000000..ec99fc6 --- /dev/null +++ b/Filtration.ObjectModel/ThemeEditor/EffectColorThemeComponent.cs @@ -0,0 +1,47 @@ +using System; +using Filtration.ObjectModel.Enums; + +namespace Filtration.ObjectModel.ThemeEditor +{ + [Serializable] + public class EffectColorThemeComponent : ThemeComponent + { + private EffectColor _effectColor; + private bool _temporary; + + public EffectColorThemeComponent(ThemeComponentType componentType, string componentName, EffectColor componentEffectColor, bool componentTemporary) + { + if (componentName == null) + { + throw new ArgumentException("Null parameters not allowed in EffectColorThemeComponent constructor"); + } + + ComponentType = componentType; + ComponentName = componentName; + EffectColor = componentEffectColor; + Temporary = componentTemporary; + } + + public EffectColor EffectColor + { + get { return _effectColor; } + set + { + _effectColor = value; + OnPropertyChanged(); + _themeComponentUpdatedEventHandler?.Invoke(this, EventArgs.Empty); + } + } + + public bool Temporary + { + get { return _temporary; } + set + { + _temporary = value; + OnPropertyChanged(); + _themeComponentUpdatedEventHandler?.Invoke(this, EventArgs.Empty); + } + } + } +} diff --git a/Filtration.ObjectModel/ThemeEditor/IconThemeComponent.cs b/Filtration.ObjectModel/ThemeEditor/IconThemeComponent.cs new file mode 100644 index 0000000..fd7f082 --- /dev/null +++ b/Filtration.ObjectModel/ThemeEditor/IconThemeComponent.cs @@ -0,0 +1,60 @@ +using System; +using Filtration.ObjectModel.Enums; + +namespace Filtration.ObjectModel.ThemeEditor +{ + [Serializable] + public class IconThemeComponent : ThemeComponent + { + private IconSize _iconSize; + private IconColor _iconColor; + private IconShape _iconShape; + + public IconThemeComponent(ThemeComponentType componentType, string componentName, IconSize componentIconSize, IconColor componentIconColor, IconShape componentIconShape) + { + if (componentName == null) + { + throw new ArgumentException("Null parameters not allowed in IconThemeComponent constructor"); + } + + ComponentType = componentType; + ComponentName = componentName; + IconSize = componentIconSize; + IconColor = componentIconColor; + IconShape = componentIconShape; + } + + public IconSize IconSize + { + get { return _iconSize; } + set + { + _iconSize = value; + OnPropertyChanged(); + _themeComponentUpdatedEventHandler?.Invoke(this, EventArgs.Empty); + } + } + + public IconColor IconColor + { + get { return _iconColor; } + set + { + _iconColor = value; + OnPropertyChanged(); + _themeComponentUpdatedEventHandler?.Invoke(this, EventArgs.Empty); + } + } + + public IconShape IconShape + { + get { return _iconShape; } + set + { + _iconShape = value; + OnPropertyChanged(); + _themeComponentUpdatedEventHandler?.Invoke(this, EventArgs.Empty); + } + } + } +} diff --git a/Filtration.ObjectModel/ThemeEditor/ThemeComponentCollection.cs b/Filtration.ObjectModel/ThemeEditor/ThemeComponentCollection.cs index 1cdbccc..ef41379 100644 --- a/Filtration.ObjectModel/ThemeEditor/ThemeComponentCollection.cs +++ b/Filtration.ObjectModel/ThemeEditor/ThemeComponentCollection.cs @@ -61,6 +61,32 @@ namespace Filtration.ObjectModel.ThemeEditor return component; } + public ThemeComponent AddComponent(ThemeComponentType componentType, string componentName, IconSize componentIconSize, IconColor componentIconColor, IconShape componentIconShape) + { + if (ComponentExists(componentType, componentName)) + { + return Items.FirstOrDefault(t => t.ComponentName == componentName && t.ComponentType == componentType); + } + + var component = new IconThemeComponent(componentType, componentName, componentIconSize, componentIconColor, componentIconShape); + Items.Add(component); + + return component; + } + + public ThemeComponent AddComponent(ThemeComponentType componentType, string componentName, EffectColor componentEffectColor, bool componentTemporary) + { + if (ComponentExists(componentType, componentName)) + { + return Items.FirstOrDefault(t => t.ComponentName == componentName && t.ComponentType == componentType); + } + + var component = new EffectColorThemeComponent(componentType, componentName, componentEffectColor, componentTemporary); + Items.Add(component); + + return component; + } + private bool ComponentExists(ThemeComponentType componentType, string componentName) { var componentCount = diff --git a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs index cd3a9ae..ca849fe 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs @@ -890,42 +890,6 @@ namespace Filtration.Parser.Tests.Services Assert.AreEqual(1, result.BlockItems.Count(b => b is DisableDropSoundBlockItem)); var blockItem = result.BlockItems.OfType().First(); Assert.IsTrue(blockItem.BooleanValue); - } - - [Test] - public void TranslateStringToItemFilterBlock_DropIcon_ReturnsCorrectObject() - { - // Arrange - var inputString = "Show" + Environment.NewLine + - " Icon Icon1"; - - // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript); - - // Assert - - Assert.AreEqual(1, result.BlockItems.Count(b => b is IconBlockItem)); - var blockItem = result.BlockItems.OfType().First(); - Assert.AreEqual("Icon1", blockItem.Value); - } - - [Test] - public void TranslateStringToItemFilterBlock_BeamColor_ReturnsCorrectObject() - { - // Arrange - var inputString = "Show" + Environment.NewLine + - " BeamColor 255 20 100 True"; - - // Act - var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript); - - // Assert - Assert.AreEqual(1, result.BlockItems.Count(b => b is BeamBlockItem)); - var blockItem = result.BlockItems.OfType().First(); - Assert.AreEqual(255, blockItem.Color.R); - Assert.AreEqual(20, blockItem.Color.G); - Assert.AreEqual(100, blockItem.Color.B); - Assert.IsTrue(blockItem.BooleanValue); } [Test] @@ -961,9 +925,7 @@ namespace Filtration.Parser.Tests.Services " SetBorderColor 0 0 0" + Environment.NewLine + " SetFontSize 50" + Environment.NewLine + " PlayAlertSound 3" + Environment.NewLine + - " DisableDropSound False" + Environment.NewLine + - " Icon Icon2" + Environment.NewLine + - " BeamColor 255 100 5 false" + Environment.NewLine; + " DisableDropSound False" + Environment.NewLine; // Act var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript); @@ -1068,15 +1030,6 @@ namespace Filtration.Parser.Tests.Services var disableDropSoundBlockItem = result.BlockItems.OfType().First(); Assert.IsFalse(disableDropSoundBlockItem.BooleanValue); - - var iconBlockItem = result.BlockItems.OfType().First(); - Assert.AreEqual("Icon2", iconBlockItem.Value); - - var beamBlockItem = result.BlockItems.OfType().First(); - Assert.AreEqual(255, beamBlockItem.Color.R); - Assert.AreEqual(100, beamBlockItem.Color.G); - Assert.AreEqual(5, beamBlockItem.Color.B); - Assert.IsFalse(beamBlockItem.BooleanValue); } [Test] @@ -1903,23 +1856,6 @@ namespace Filtration.Parser.Tests.Services Assert.AreEqual(expectedResult, result); } - [Ignore("Ignore until the new block type is fully implemented")] - [Test] - public void TranslateItemFilterBlockToString_DropIcon_ReturnsCorrectString() - { - // Arrange - var expectedResult = "Show" + Environment.NewLine + - " Icon Icon3"; - - _testUtility.TestBlock.BlockItems.Add(new IconBlockItem("Icon3")); - - // Act - var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock); - - // Assert - Assert.AreEqual(expectedResult, result); - } - [Test] public void TranslateItemFilterBlockToString_Everything_ReturnsCorrectString() { @@ -1951,9 +1887,7 @@ namespace Filtration.Parser.Tests.Services " SetBorderColor 255 1 254" + Environment.NewLine + " SetFontSize 50" + Environment.NewLine + " PlayAlertSound 6 90" + Environment.NewLine + - " DisableDropSound True";/* + Environment.NewLine + - " Icon Icon4"; - " BeamColor 120 130 140 False";*/ + " DisableDropSound True"; _testUtility.TestBlock.BlockItems.Add(new ActionBlockItem(BlockAction.Show)); _testUtility.TestBlock.BlockItems.Add(new IdentifiedBlockItem(true)); @@ -1997,8 +1931,6 @@ namespace Filtration.Parser.Tests.Services _testUtility.TestBlock.BlockItems.Add(new ShapedMapBlockItem(true)); _testUtility.TestBlock.BlockItems.Add(new ElderMapBlockItem(true)); _testUtility.TestBlock.BlockItems.Add(new DisableDropSoundBlockItem(true)); - _testUtility.TestBlock.BlockItems.Add(new IconBlockItem("Icon4")); - _testUtility.TestBlock.BlockItems.Add(new BeamBlockItem(new Color { A = 255, R = 120, G = 130, B = 140 }, false)); // Act var result = _testUtility.Translator.TranslateItemFilterBlockToString(_testUtility.TestBlock); diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index e5b0fb7..aecb295 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -310,36 +310,59 @@ namespace Filtration.Parser.Services AddBooleanItemToBlockItems(block, trimmedLine); break; } - case "Icon": + case "MinimapIcon": { // Only ever use the last Icon item encountered as multiples aren't valid. - RemoveExistingBlockItemsOfType(block); - - var match = Regex.Match(trimmedLine, @"\S+\s+""(\S+)"""); + RemoveExistingBlockItemsOfType(block); + + // TODO: Get size, color, shape values programmatically + var match = Regex.Match(trimmedLine, + @"\S+\s+(0|1|2)\s+(Red|Green|Blue|Brown|White|Yellow)\s+(Circle|Diamond|Hexagon|Square|Star|Triangle)\s*([#]?)(.*)", + RegexOptions.IgnoreCase); if (match.Success) { - var blockItemValue = new IconBlockItem + var blockItemValue = new MapIconBlockItem { - Value = match.Groups[1].Value - }; + Size = (IconSize)Int16.Parse(match.Groups[1].Value), + Color = EnumHelper.GetEnumValueFromDescription(match.Groups[2].Value), + Shape = EnumHelper.GetEnumValueFromDescription(match.Groups[3].Value) + }; + + if(match.Groups[4].Value == "#" && !string.IsNullOrWhiteSpace(match.Groups[5].Value)) + { + ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.Icon, match.Groups[5].Value.Trim(), + blockItemValue.Size, blockItemValue.Color, blockItemValue.Shape); + blockItemValue.ThemeComponent = themeComponent; + } block.BlockItems.Add(blockItemValue); } break; } - case "BeamColor": + case "PlayEffect": { // Only ever use the last BeamColor item encountered as multiples aren't valid. - RemoveExistingBlockItemsOfType(block); + RemoveExistingBlockItemsOfType(block); - var result = Regex.Matches(trimmedLine, @"([\w\s]*)(True|False)[#]?(.*)", RegexOptions.IgnoreCase); - var color = GetColorFromString(result[0].Groups[1].Value); - var beamBlockItem = new BeamBlockItem + // TODO: Get colors programmatically + var match = Regex.Match(trimmedLine, @"\S+\s+(Red|Green|Blue|Brown|White|Yellow)\s+(Temp)?\s*([#]?)(.*)", RegexOptions.IgnoreCase); + + if (match.Success) { - Color = GetColorFromString(result[0].Groups[1].Value), - BooleanValue = result[0].Groups[2].Value.Trim().ToLowerInvariant() == "true" - }; - block.BlockItems.Add(beamBlockItem); + var blockItemValue = new PlayEffectBlockItem + { + Color = EnumHelper.GetEnumValueFromDescription(match.Groups[1].Value), + Temporary = match.Groups[2].Value.Trim().ToLower() == "temp" + }; + + if(match.Groups[3].Value == "#" && !string.IsNullOrWhiteSpace(match.Groups[4].Value)) + { + ThemeComponent themeComponent = _masterComponentCollection.AddComponent(ThemeComponentType.Effect, match.Groups[4].Value.Trim(), + blockItemValue.Color, blockItemValue.Temporary); + blockItemValue.ThemeComponent = themeComponent; + } + block.BlockItems.Add(blockItemValue); + } break; } case "CustomAlertSound": @@ -367,6 +390,11 @@ namespace Filtration.Parser.Services } break; } + case "MapTier": + { + AddNumericFilterPredicateItemToBlockItems(block, trimmedLine); + break; + } } } @@ -640,12 +668,6 @@ namespace Filtration.Parser.Services // ReSharper disable once LoopCanBeConvertedToQuery foreach (var blockItem in block.BlockItems.Where(b => b.GetType() != typeof(ActionBlockItem)).OrderBy(b => b.SortOrder)) { - // Do not save temporary blocks until the new features are fully implemented - if (blockItem is IconBlockItem || blockItem is BeamBlockItem) - { - continue; - } - if (blockItem.OutputText != string.Empty) { outputString += (!block.Enabled ? _disabledNewLine : _newLine) + blockItem.OutputText; diff --git a/Filtration.ThemeEditor/Filtration.ThemeEditor.csproj b/Filtration.ThemeEditor/Filtration.ThemeEditor.csproj index a32ef1f..20cd268 100644 --- a/Filtration.ThemeEditor/Filtration.ThemeEditor.csproj +++ b/Filtration.ThemeEditor/Filtration.ThemeEditor.csproj @@ -109,6 +109,8 @@ + + diff --git a/Filtration.ThemeEditor/ViewModels/EffectColorThemeComponentViewModel.cs b/Filtration.ThemeEditor/ViewModels/EffectColorThemeComponentViewModel.cs new file mode 100644 index 0000000..07d64cf --- /dev/null +++ b/Filtration.ThemeEditor/ViewModels/EffectColorThemeComponentViewModel.cs @@ -0,0 +1,10 @@ +using Filtration.ObjectModel.Enums; + +namespace Filtration.ThemeEditor.ViewModels +{ + public class EffectColorThemeComponentViewModel : ThemeComponentViewModel + { + public EffectColor EffectColor { get; set; } + public bool Temporary { get; set; } + } +} diff --git a/Filtration.ThemeEditor/ViewModels/IconThemeComponentViewModel.cs b/Filtration.ThemeEditor/ViewModels/IconThemeComponentViewModel.cs new file mode 100644 index 0000000..0a61f1f --- /dev/null +++ b/Filtration.ThemeEditor/ViewModels/IconThemeComponentViewModel.cs @@ -0,0 +1,11 @@ +using Filtration.ObjectModel.Enums; + +namespace Filtration.ThemeEditor.ViewModels +{ + public class IconThemeComponentViewModel : ThemeComponentViewModel + { + public IconSize IconSize { get; set; } + public IconColor IconColor { get; set; } + public IconShape IconShape { get; set; } + } +} diff --git a/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs b/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs index d67c8ac..c18a8c9 100644 --- a/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs +++ b/Filtration.ThemeEditor/ViewModels/ThemeEditorViewModel.cs @@ -211,6 +211,12 @@ namespace Filtration.ThemeEditor.ViewModels case ThemeComponentType.CustomSound: Components.Add(new StringThemeComponent(themeComponentType, "Untitled Component", "placeholder.mp3")); break; + case ThemeComponentType.Icon: + Components.Add(new IconThemeComponent(themeComponentType, "Untitled Component", IconSize.Largest, IconColor.Red, IconShape.Circle)); + break; + case ThemeComponentType.Effect: + Components.Add(new EffectColorThemeComponent(themeComponentType, "Untitled Component", EffectColor.Red, false)); + break; } } diff --git a/Filtration.ThemeEditor/Views/ThemeComponentControl.xaml b/Filtration.ThemeEditor/Views/ThemeComponentControl.xaml index 5d06641..2130c90 100644 --- a/Filtration.ThemeEditor/Views/ThemeComponentControl.xaml +++ b/Filtration.ThemeEditor/Views/ThemeComponentControl.xaml @@ -7,7 +7,8 @@ xmlns:commonConverters="clr-namespace:Filtration.Common.Converters;assembly=Filtration.Common" xmlns:themeEditor="clr-namespace:Filtration.ObjectModel.ThemeEditor;assembly=Filtration.ObjectModel" xmlns:views="clr-namespace:Filtration.ThemeEditor.Views" - xmlns:viewModels="clr-namespace:Filtration.ThemeEditor.ViewModels" + xmlns:extensions="clr-namespace:Filtration.Common.Extensions;assembly=Filtration.Common" + xmlns:enums="clr-namespace:Filtration.ObjectModel.Enums;assembly=Filtration.ObjectModel" mc:Ignorable="d" d:DataContext="{d:DesignInstance Type=themeEditor:ThemeComponent}" d:DesignHeight="100" d:DesignWidth="200"> @@ -18,7 +19,7 @@ - + @@ -99,6 +100,38 @@ + + + + + + + + + + + + + + + Permanent + Temporary + + + + diff --git a/Filtration/App.xaml.cs b/Filtration/App.xaml.cs index a123909..624f22e 100644 --- a/Filtration/App.xaml.cs +++ b/Filtration/App.xaml.cs @@ -50,6 +50,8 @@ namespace Filtration cfg.CreateMap().ReverseMap(); cfg.CreateMap().ReverseMap(); cfg.CreateMap().ReverseMap(); + cfg.CreateMap().ReverseMap(); + cfg.CreateMap().ReverseMap(); cfg.CreateMap(); }); diff --git a/Filtration/Converters/AvailableThemeComponentsConverter.cs b/Filtration/Converters/AvailableThemeComponentsConverter.cs index 77a6803..e4c5d61 100644 --- a/Filtration/Converters/AvailableThemeComponentsConverter.cs +++ b/Filtration/Converters/AvailableThemeComponentsConverter.cs @@ -45,6 +45,14 @@ namespace Filtration.Converters { themeComponentType = ThemeComponentType.CustomSound; } + else if (blockItem.GetType() == typeof(MapIconBlockItem)) + { + themeComponentType = ThemeComponentType.Icon; + } + else if (blockItem.GetType() == typeof(PlayEffectBlockItem)) + { + themeComponentType = ThemeComponentType.Effect; + } else { return null; diff --git a/Filtration/Converters/DropIconConverter.cs b/Filtration/Converters/IconShapeToSourceConverter.cs similarity index 61% rename from Filtration/Converters/DropIconConverter.cs rename to Filtration/Converters/IconShapeToSourceConverter.cs index 4caeffa..c727045 100644 --- a/Filtration/Converters/DropIconConverter.cs +++ b/Filtration/Converters/IconShapeToSourceConverter.cs @@ -1,28 +1,29 @@ -using System; +using Filtration.ObjectModel.Enums; +using System; using System.Globalization; using System.Windows.Data; namespace Filtration.Converters { - internal class DropIconConverter : IValueConverter + internal class IconShapeToSourceConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { - var iconString = (string)value; - switch(iconString) + var iconShape = (IconShape)(int)value; + switch (iconShape) { - case "Icon1": - return "/Filtration;component/Resources/DropIcons/Icon1.png"; - case "Icon2": - return "/Filtration;component/Resources/DropIcons/Icon2.png"; - case "Icon3": - return "/Filtration;component/Resources/DropIcons/Icon3.png"; - case "Icon4": - return "/Filtration;component/Resources/DropIcons/Icon4.png"; - case "Icon5": - return "/Filtration;component/Resources/DropIcons/Icon5.png"; - case "Icon6": - return "/Filtration;component/Resources/DropIcons/Icon6.png"; + case IconShape.Circle: + return "/Filtration;component/Resources/DropIcons/Circle.png"; + case IconShape.Diamond: + return "/Filtration;component/Resources/DropIcons/Diamond.png"; + case IconShape.Hexagon: + return "/Filtration;component/Resources/DropIcons/Hexagon.png"; + case IconShape.Square: + return "/Filtration;component/Resources/DropIcons/Square.png"; + case IconShape.Star: + return "/Filtration;component/Resources/DropIcons/Star.png"; + case IconShape.Triangle: + return "/Filtration;component/Resources/DropIcons/Triangle.png"; } return "/Filtration;component/Resources/DropIcons/NoIcon.png"; diff --git a/Filtration/Converters/SizeColorToRectConverter.cs b/Filtration/Converters/SizeColorToRectConverter.cs new file mode 100644 index 0000000..0be1814 --- /dev/null +++ b/Filtration/Converters/SizeColorToRectConverter.cs @@ -0,0 +1,33 @@ +using Filtration.ObjectModel.Enums; +using System; +using System.Globalization; +using System.Windows; +using System.Windows.Data; + +namespace Filtration.Converters +{ + internal class SizeColorToRectConverter : IMultiValueConverter + { + public object Convert(object[] values, Type targetType, object parameter, CultureInfo culture) + { + var size = (int)(values[0]); + var color = (int)(values[1]); + + if (size < 0 || color < 0) + return new Rect(0, 0, 0, 0); + + Rect cropArea = new Rect(); + cropArea.Width = 64; + cropArea.Height = 64; + cropArea.X = 0 + size * 64; + cropArea.Y = 0 + color * 64; + + return cropArea; + } + + public object[] ConvertBack(object value, Type[] targetType, object parameter, CultureInfo culture) + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/Filtration/Filtration.csproj b/Filtration/Filtration.csproj index 9b35e47..6a1ac98 100644 --- a/Filtration/Filtration.csproj +++ b/Filtration/Filtration.csproj @@ -167,12 +167,11 @@ - + + - - @@ -546,13 +545,13 @@ - - - - - - + + + + + + diff --git a/Filtration/Resources/DropIcons/Circle.png b/Filtration/Resources/DropIcons/Circle.png new file mode 100644 index 0000000000000000000000000000000000000000..7b59891dadd400bfbbe18913ad6e20f5c801600e GIT binary patch literal 102472 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 P0}yz+`njxgN@xNALt3fX literal 0 HcmV?d00001 diff --git a/Filtration/Resources/DropIcons/Diamond.png b/Filtration/Resources/DropIcons/Diamond.png new file mode 100644 index 0000000000000000000000000000000000000000..ab917ddc151415db0143e4d889abe56fd0a38c31 GIT binary patch literal 82074 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�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

QRPz54YZ*W_adLRNmBKU{iMamZ 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

7EI#RW?^P+r7TveakO2ikoDO*bA>EXpinb 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 - - + + - Permanent - Temporary + Permanent + Temporary - + + + + + + + + + @@ -171,11 +182,30 @@ - - - - - + + + + + + + + + + + + + + + diff --git a/Filtration/UserControls/BlockItemControl.xaml.cs b/Filtration/UserControls/BlockItemControl.xaml.cs index 7679d1f..db0909c 100644 --- a/Filtration/UserControls/BlockItemControl.xaml.cs +++ b/Filtration/UserControls/BlockItemControl.xaml.cs @@ -90,10 +90,6 @@ namespace Filtration.UserControls "ShFusing", "ShRegal", "ShVaal" }; - public List IconsAvailable => new List { - "Icon1", "Icon2", "Icon3", "Icon4", "Icon5", "Icon6" - }; - private void OnSetBlockValueCommmand() { var blockItemWithTheme = BlockItem as IBlockItemWithTheme; @@ -121,6 +117,17 @@ namespace Filtration.UserControls var stringBlockItem = BlockItem as StringBlockItem; stringBlockItem.Value = ((StringThemeComponent)stringBlockItem.ThemeComponent).Value; break; + case ThemeComponentType.Icon: + var iconBlockItem = BlockItem as IconBlockItem; + iconBlockItem.Size = ((IconThemeComponent)iconBlockItem.ThemeComponent).IconSize; + iconBlockItem.Color = ((IconThemeComponent)iconBlockItem.ThemeComponent).IconColor; + iconBlockItem.Shape = ((IconThemeComponent)iconBlockItem.ThemeComponent).IconShape; + break; + case ThemeComponentType.Effect: + var effectColorBlockItem = BlockItem as EffectColorBlockItem; + effectColorBlockItem.Color = ((EffectColorThemeComponent)effectColorBlockItem.ThemeComponent).EffectColor; + effectColorBlockItem.Temporary = ((EffectColorThemeComponent)effectColorBlockItem.ThemeComponent).Temporary; + break; } } diff --git a/Filtration/UserControls/ImageComboBoxControl.xaml b/Filtration/UserControls/ImageComboBoxControl.xaml index 1494353..88b1726 100644 --- a/Filtration/UserControls/ImageComboBoxControl.xaml +++ b/Filtration/UserControls/ImageComboBoxControl.xaml @@ -8,7 +8,7 @@ mc:Ignorable="d"> - + diff --git a/Filtration/UserControls/ItemPreviewControl.xaml b/Filtration/UserControls/ItemPreviewControl.xaml index f9232fe..0ba9de4 100644 --- a/Filtration/UserControls/ItemPreviewControl.xaml +++ b/Filtration/UserControls/ItemPreviewControl.xaml @@ -8,7 +8,7 @@ d:DataContext="{d:DesignInstance Type=userControls:ItemPreviewControl}" d:DesignHeight="35" d:DesignWidth="170"> - + diff --git a/Filtration/UserControls/NumericFilterPredicateControl.xaml b/Filtration/UserControls/NumericFilterPredicateControl.xaml index 32ce079..8d8d03f 100644 --- a/Filtration/UserControls/NumericFilterPredicateControl.xaml +++ b/Filtration/UserControls/NumericFilterPredicateControl.xaml @@ -5,7 +5,7 @@ xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" - xmlns:extensions="clr-namespace:Filtration.Extensions" + xmlns:extensions="clr-namespace:Filtration.Common.Extensions;assembly=Filtration.Common" xmlns:userControls="clr-namespace:Filtration.UserControls" xmlns:enums="clr-namespace:Filtration.ObjectModel.Enums;assembly=Filtration.ObjectModel" mc:Ignorable="d" diff --git a/Filtration/UserControls/ThemeComponentSelectionControl.xaml b/Filtration/UserControls/ThemeComponentSelectionControl.xaml index bd68cac..ae2f094 100644 --- a/Filtration/UserControls/ThemeComponentSelectionControl.xaml +++ b/Filtration/UserControls/ThemeComponentSelectionControl.xaml @@ -67,6 +67,14 @@ + + + + + + + + diff --git a/Filtration/ViewModels/ItemFilterBlockViewModel.cs b/Filtration/ViewModels/ItemFilterBlockViewModel.cs index 7284af5..ac2411a 100644 --- a/Filtration/ViewModels/ItemFilterBlockViewModel.cs +++ b/Filtration/ViewModels/ItemFilterBlockViewModel.cs @@ -8,6 +8,7 @@ using System.Windows.Media; using Filtration.ObjectModel; using Filtration.ObjectModel.BlockItemBaseTypes; using Filtration.ObjectModel.BlockItemTypes; +using Filtration.ObjectModel.Enums; using Filtration.Services; using Filtration.Views; using GalaSoft.MvvmLight.CommandWpf; @@ -181,6 +182,7 @@ namespace Filtration.ViewModels typeof (CorruptedBlockItem), typeof (ElderItemBlockItem), typeof (ShaperItemBlockItem), + typeof (MapTierBlockItem), typeof (ShapedMapBlockItem), typeof (ElderMapBlockItem), typeof (GemLevelBlockItem), @@ -197,8 +199,8 @@ namespace Filtration.ViewModels typeof (SoundBlockItem), typeof (PositionalSoundBlockItem), typeof (DisableDropSoundBlockItem), - typeof (IconBlockItem), - typeof (BeamBlockItem), + typeof (MapIconBlockItem), + typeof (PlayEffectBlockItem), typeof (CustomSoundBlockItem) }; @@ -241,8 +243,10 @@ namespace Filtration.ViewModels public Color DisplayBackgroundColor => Block.DisplayBackgroundColor; public Color DisplayBorderColor => Block.DisplayBorderColor; public double DisplayFontSize => Block.DisplayFontSize/1.8; - public string DisplayIcon => Block.DisplayIcon; - public Color DisplayBeamColor => Block.DisplayBeamColor; + public int DisplayIconSize => Block.DisplayIconSize; + public int DisplayIconColor => Block.DisplayIconColor; + public int DisplayIconShape => Block.DisplayIconShape; + public Color DisplayEffectColor => Block.DisplayEffectColor; public bool HasSound => Block.HasBlockItemOfType(); public bool HasPositionalSound => Block.HasBlockItemOfType(); @@ -476,8 +480,10 @@ namespace Filtration.ViewModels RaisePropertyChanged(nameof(DisplayBackgroundColor)); RaisePropertyChanged(nameof(DisplayBorderColor)); RaisePropertyChanged(nameof(DisplayFontSize)); - RaisePropertyChanged(nameof(DisplayIcon)); - RaisePropertyChanged(nameof(DisplayBeamColor)); + RaisePropertyChanged(nameof(DisplayIconSize)); + RaisePropertyChanged(nameof(DisplayIconColor)); + RaisePropertyChanged(nameof(DisplayIconShape)); + RaisePropertyChanged(nameof(DisplayEffectColor)); RaisePropertyChanged(nameof(HasSound)); RaisePropertyChanged(nameof(HasPositionalSound)); RaisePropertyChanged(nameof(HasCustomSound)); diff --git a/Filtration/ViewModels/MainWindowViewModel.cs b/Filtration/ViewModels/MainWindowViewModel.cs index 8651c46..74e6534 100644 --- a/Filtration/ViewModels/MainWindowViewModel.cs +++ b/Filtration/ViewModels/MainWindowViewModel.cs @@ -117,6 +117,8 @@ namespace Filtration.ViewModels AddFontSizeThemeComponentCommand = new RelayCommand(OnAddFontSizeThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); AddAlertSoundThemeComponentCommand = new RelayCommand(OnAddAlertSoundThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); AddCustomSoundThemeComponentCommand = new RelayCommand(OnAddCustomSoundThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); + AddIconThemeComponentCommand = new RelayCommand(OnAddIconThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); + AddEffectColorThemeComponentCommand = new RelayCommand(OnAddEffectColorThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable); DeleteThemeComponentCommand = new RelayCommand(OnDeleteThemeComponentCommand, () => ActiveDocumentIsTheme && ActiveThemeIsEditable && _avalonDockWorkspaceViewModel.ActiveThemeViewModel.SelectedThemeComponent != null); ExpandAllBlocksCommand = new RelayCommand(OnExpandAllBlocksCommand, () => ActiveDocumentIsScript); @@ -219,6 +221,8 @@ namespace Filtration.ViewModels public RelayCommand AddFontSizeThemeComponentCommand { get; } public RelayCommand AddAlertSoundThemeComponentCommand { get; } public RelayCommand AddCustomSoundThemeComponentCommand { get; } + public RelayCommand AddIconThemeComponentCommand { get; } + public RelayCommand AddEffectColorThemeComponentCommand { get; } public RelayCommand DeleteThemeComponentCommand { get; } public RelayCommand AddBlockCommand { get; } @@ -698,6 +702,16 @@ namespace Filtration.ViewModels _avalonDockWorkspaceViewModel.ActiveThemeViewModel.AddThemeComponentCommand.Execute(ThemeComponentType.CustomSound); } + private void OnAddIconThemeComponentCommand() + { + _avalonDockWorkspaceViewModel.ActiveThemeViewModel.AddThemeComponentCommand.Execute(ThemeComponentType.Icon); + } + + private void OnAddEffectColorThemeComponentCommand() + { + _avalonDockWorkspaceViewModel.ActiveThemeViewModel.AddThemeComponentCommand.Execute(ThemeComponentType.Effect); + } + private void OnDeleteThemeComponentCommand() { _avalonDockWorkspaceViewModel.ActiveThemeViewModel.DeleteThemeComponentCommand.Execute( diff --git a/Filtration/Views/AboutWindow.xaml b/Filtration/Views/AboutWindow.xaml index 9b8c9ae..9862989 100644 --- a/Filtration/Views/AboutWindow.xaml +++ b/Filtration/Views/AboutWindow.xaml @@ -1,7 +1,7 @@  - + +

ao7d=mSlF!+)|_%=r4+~c;Fcjn zAE63&HBLOXsE2(1$grCaPDuzSa%5v5?Y^PM^f9Jbkd~a7fP-cmc(X#R9hkOD z-MTk$&CLu1Tc%3wbLY%>9%PEdz2KQ>+}R4zy#^i0lRW8S_gUutb$x!vkwX(^)Z7t~ zCkPT8e#Oo4X(wpdq$pVV;6h_g)$r(lf#COfX*P%$xYgYzPoP(w4M*@IZKCEHp5Kx8ZIXfAxk`8#% z5(LtkpC3Gvabpi1Df+2{kMh(piK)6aN4Ll_+IgJ{y74J>Yi|&Bd|Q?Zt?2Ex)E`Ej zmrozH!L9EANhPieYCC^R!m&O}cDDL9;t3k1^zv1^mra+aSujGk;aZ^aX#-}#9MD0o zpD}!)0Ds0_790#fKjN)|cQ5=N0k|Zh2|i_~QJ8L}Z(REx!LeQry@)g+G(PR8aHei> z`Sk5mNWinv&R`bUNsg*2z^Q1q{h0GetT(vRRr|OL&I{6xLm5$~lV)1@Hwch$<5`}k znY-;#w-it}r1EUtwD#O`g@SuaT&?{t6lwJzzgn5i r|MDM?-J72|`f?e?|MLII;x8cGVv)*kI`b7E;6qbgN3C4N`o;eM`fMK( literal 0 HcmV?d00001 diff --git a/Filtration/Resources/DropIcons/Hexagon.png b/Filtration/Resources/DropIcons/Hexagon.png new file mode 100644 index 0000000000000000000000000000000000000000..549fa9430bd828f6e39cf97408ed25bbf621602f GIT binary patch literal 101447 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 literal 0 HcmV?d00001 diff --git a/Filtration/Resources/DropIcons/Icon1.png b/Filtration/Resources/DropIcons/Icon1.png deleted file mode 100644 index 38a43144f5d044ec1785fbbd39583e22d27eec07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9436 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 inmV@*>SJWT|33hLZ?p7Ham7~v0000-UoXC diff --git a/Filtration/Resources/DropIcons/Icon2.png b/Filtration/Resources/DropIcons/Icon2.png deleted file mode 100644 index 8d10d5d8c7a5a4e51f01a61685f96578ecfb946e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8037 zcmV-rADZBaP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z000z_NklFMcdhVg=g9mffv5+#Nx@q--&F+oKbKR^>j zcVjeKyS3R(qS>vio0x1RDNV95Ta~T2Fu~4J zoxVMN&pmy5f4toeqhhJBwSPQSQ>W(k*E!F5KcDwCk|arz1Rsp|IoJmfd;sA8>)`M9 z#?Rh#!;P0;4k)EmtbtfHWUK(o5<-aa`(mxN))SxA8Zep3g#eVIs|I6?F(6h-H56bl z01%>J6|B5)9IX>*4HRt4%84N0oG}0hf*`0zj+1EPh%W>|Lp79?QjS(ft6>Oe9c!h4 zN@cWK3xT>+DpmmJCg&V589mRK$r%F@#7b+x0AnTxq->~I0a|OF0C@W8UqAD^=Z*nD z#taw?NHm}oU|D%9ZvnB6Rjhzm5pX&MkTJ##1_+T8ISwcltA+v^s-d(7a-8!V2ND=C z0GP~R009^4t}cVo@1xZqh@#%!D5^*G2(azEB}7*jOAjE5>QNN+_9jS>pj9mQDK zh?D}PjCG=c9H)aeQk~o~D8VX$e_q^t!p?CSdY zgKO4o*>d$&^z|i6XkNW~S2AG0#g8?Q_B~ojt6p%35&vCGUqN(7LXTo@{@euZ*~FScimXigj04UDjno&Yn%c-F)+j)22-I{Y8tW zOg*8P6PesBSh#-Oh7H@doqcvrFqRW1cQIyigUy~@3+l3=y1HVO=tMhCP6&|`q_Q9h z2T2;OwaIRF3pOBxWeEW^IgVr7K&#i{HamdhG&uze@VsW%vW^3Qq@IA*iH;RXTLQ9C zmIa6uD9fS+joX%Ff=x7-k=j13m9ngcY)GYw#fMfuymsr>uYQ&8nm>PXo9os>%lgb` zdU{TrS}tdbNAu~Y|63d@cB(A^T-R|Nhwf`ie&;VMKiqaK8sfKJw zQsGzu2FNNY)sPvGi3Zx*+S+`d^EGQWY}mf-`s?V*%o*AD=FUCi^cL4(x7@t^s$$V` zTD)f0pEySiweHEZ?ihu1#7wRi$!2^a$y0}Q5=k=pD`0W;TDEVlZs9$+$)aZXN5 zDWD$JqgVrD;aD^l0<|y@B1`Qo0b7ew)Iba3AEO_REm|>iDrx>-nJ*Vx3&2`5Gw+<7Dmxnm`WT- z5VQsiW*{fVHL9V;_j^nLCP)hRiXth2N@X;t1!Sxf0G5>( zmgRY))i8{rVo@ojl)9js-cB+M)WU+Dw>Sqb{^TdlZf^$wQs3Kd`{c!w+upn?&!hQ_ zIpj?jEuwgVG13gJg&+`M^rIPPYYV*8~j!hf4 zZF^?tg%{AfIy-4D7Q4IW&2wE~=8RKMZL+h75%|dLkDl4q2K;&V+4Gv+Y*m?gZ)6cJ~?Y`0Nr4mI3t5$R1@7jt;F2CPc9q zMN!m{mPIfF!<9;4Hx@;alyl|;!Dw|f zm^mxfO2z79XVP1noQci>`1CbbUQsL(Y~(+UH2kn_0O(nE*(Fn_zIkYE&Ry);~oRTk!))VY4$ zqnmf`eER9P-^Jh{&A;DG^Q-;moi}gZoH_mdrizuxcI~3@zq6CVGASuK%xtri?;AkQ z4KUWxv1-+Z4Lf$MTuHyqne*W(yo-t$R&S#(9y?aLL{X05nK0Gvk z{<-JPnRCnMl}dDi-d_4W3#Zr<~f+;kxfN_0JA0 zll+r9v$&Jy%uUUi^VCz%?A*Qk8+YY}5GKojKL!=1ap1tm=AJg&adKkLoR80K@c^Ka z(gQ>;;0=qBsa2wrbn#@VGBt>zEVluGnX{%&DOkYZV7V+MFfF$P#x zPDln^e9@dUd>4Cea$ND&RxWkUhL_rJe> z{h<=@i&fiq93IL-=Z=oLtVeZubUxud0{G+mqNpClYUTBJeB~S8e7Uz^9~yk^P#6NA z{>;S}wYLMEoxYy|mWJSIASwhU>E$xfO#Ai`%|sbZtYRH&puhjM0i}RiSR0EK@XCP$ zuf`fkG!a;n+x^y@0Gb`g;T)(|>yimzq-wBO0lr_43;>gS%gPHNL91^7Fmz5Z2AG_p zh&_9HdxHS@w;ykLtW*N-{lWTmrBb3Nnxb-9YpofpRE{}}S-xV)k_8Lzzdy4j!{usK zO5h*w{N8t8=>wK7yY;r+yMf2IKKHxPDv;<{(Q*nF0a~yO2GnI=Ul;;|gF{170x$0A z>yr{Fm1=<1^U{zPTzLNcGta!^EA*ByJWgc7 z&=CDc%6jDZpXc}QZ%E+!m4E*af9wSwd~nmFr4mpo4Gh#HdWHg9BejI2(n+xXtXLD27m-6H!z-Z#VU##5{OgY@s+-V{Yn8pzVDG= z9_$DH<_kai(JKdlm-fCk5UbH(qHXKz%c6uF&vDL!z_JQfj%S(DF%hbqo2*i~?)v2` zF1hrA3m*87hgNUe`0Rg8bQnqv4i1+aQtRti-u3mqJ|S-Wi%Tx8R)H^nX~psnO$Th7 zRI#Dzky1cjG})X32m6Od3{5~aB&CK*0a}4`4vdVBg$4r{vn1^)I#9ie_i#9{riDOH}Be23$kO#0-upoHJ^QU>C(lEySw+kG!~6TW6{gK zfWZU2WH15-srS_y z7%n%M382NJ49IbE+~7c7aDF7Yv17-xzj=KK`1)P<-M4=~P^kn#tj4K-nzOj>`R5le zzG%@o=REXKPUM8i_wF^h$(wB7r+xMJ$I5_#qeq(WT7`YTt!N@cDH7_QVpg8`LFEg)}N3#A0UeEYpW?CpIsaG7(+ByMnU#fqMuMT=HH ztr^IB25_WuxcvGMPzy(^K>!R5 zy*@Ntw(VFEzfrLBR$i=Ko2Ezyj`p6@PCcok*#Rc`j$?A5$tIO_UB@vQU|CI$$pIm3 zTL_@F)v^)|_^kyC04B9Iy9NXDA}@|i^`;ct+w&H1{``;3Zg$?vX41TU$MO|Rmo8X% z^>WLyEX&%yjdRX9*P2RFzHg+G8mm}0B#`4KGud$<6NXc|CkUdbE`eAjIzbo)!B`YU zO4Xx!BxRyk-mrYdC71r?O-Fmr%9V>Qn%oYwc+C#yK#NB}wzavp37T+ zZMS*_8<^y`c$@<#6p5pm+-~J#4fuZE(i(76;{CSIU%s^c9T;Si#d;KLDn*bUbaW8Q zR4$vGbCXM%6DBh`KxEi)AQPg9G7ZLJrr9`UuhL+Jh}7=xH4m;`yJgFrcfR@gnX~?^ z!?J)GGiJ{6JfPXJEUkfIQI`e)At-)pZ_f(=Xz}87t6JxdSY?Z6GOd9YHz%|PnqAvY zG|=i3fb-^^dWz!!AD%IFYEA%u+&3`LkVmpLvDSK74>9DAZYEy($bCjp6ajgW6DCXd zt&f8QdLGpd9LKh8n|MLvh*LEf=lmUxWBJt!E}YyBG&^~bXdsFxWAXhKHzxqwZt?OK z6>~TT1_llts)fLJzxTic`}YIY>gZ?`0Zn#`Cj?+}&!crvZXAZGv#E?$wFVYk_|Y@R zbLC8i4EFHaUu}3|$K{tPrBp+%SP`cs36nEsGOAyjjLMw}h{Q0DhXghx71WiYS_kKh zaZcqz0H_7E;O)Xq&$DgDfV0n@HPdl`AfR|HZ;|t0se;sku`pJ^e?I)!;|B+T`+u@| zbE!lUkZ54fp8flKdx2YS>FJp=6NWmvSZ@SY)pb!CAwH-U<}N%w9X3ad5fxx1 zdwg&Z_}tCk`u0nEj}F|?#`Dj=+#80#UEjR#-~ZSPY~A|b&s8eKy=VFXO`S{65EZ^}}qOr{SU$cWd8bBp)f zu6_IJk>@?PYu~>9e#`3VIrqF45BS?JT(PWJ1g_{g_Z;5`zVn?mYhD{Tk|53r#y&BR z!k8zY%!wT5Tx&|?z-z|Kl{@gz-4dCi>zpxQti)Qef5$h3l{EtCJ4eX4DY^M2+PU~ z;uN)ZoL@e&apO}@Wd-;%PM^py7mMrGJ+pJ90*pnJDlS|wckUz~X!V<2Au5&O@@Q4c z-|x-|&U5^%vrNtyV*>-6o807k_cjz&<%A%U#ks|WbsPZ9aq>n~*98)2ZDc@#y0)~= zBx(0AhMcO*nkh_ofdWJGSfQ^~-1w;ih2U3c~JPkm~<`%0!>Id753E2Xv8 zo|kB?weILxv*wXUwr^XujGq4D7bi;Gy+6F>+Mb?8iynGNYal_TVlu`|rgf}iouvH@ zQKU6voLd$UMYXV61w3z(?|FTFCI<{mYNP1j@DSCjZ@**p>UHb3Zarn@+wY=UUA|)J z(uE8A4^qu;?_S4o-4=J(E+K@-TLS}G-I%I~i)h(AttD`{>(7KP5ymb$6{MFk5_^wr$QZ|66xuH&-O6E+aPHk_W z+y*3|1qVUK%aMvpS&yh8lXw;*tz2Xho#>35Fj&U(W#6He3znui>82>u}r*&)Wt?ZH600000NkvXXu0mjf20lGv diff --git a/Filtration/Resources/DropIcons/Icon3.png b/Filtration/Resources/DropIcons/Icon3.png deleted file mode 100644 index 2ef3b30813ea306853c23f35eef12e5629af9c1c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6402 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 QasU7T07*qoM6N<$g1}NdrT_o{ diff --git a/Filtration/Resources/DropIcons/Icon4.png b/Filtration/Resources/DropIcons/Icon4.png deleted file mode 100644 index b4717237bdade96de9c3a2e777765fc1579fc5a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7424 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 Aq5uE@ diff --git a/Filtration/Resources/DropIcons/Icon6.png b/Filtration/Resources/DropIcons/Icon6.png deleted file mode 100644 index 8febb46da6276b465ebbc9368a5aa7bcce6a668f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8934 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 AnE(I) diff --git a/Filtration/Resources/DropIcons/Square.png b/Filtration/Resources/DropIcons/Square.png new file mode 100644 index 0000000000000000000000000000000000000000..9e143cf9f1bfa3a145842da2d98fadb4a0621c8b GIT binary patch literal 86704 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 Haz$ep~_5cj>85i$?=rt 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 O0000arM>! literal 0 HcmV?d00001 diff --git a/Filtration/Resources/DropIcons/Star.png b/Filtration/Resources/DropIcons/Star.png new file mode 100644 index 0000000000000000000000000000000000000000..9158e90c06a7f06c31c774ced09a5bbb30448fe3 GIT binary patch literal 82355 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 z zSM2E*`1_(AebOH%ij8XJygpM;(06xJ2l5q{ zaHLan5|*9<(qV|Cb+Tbu43!6&XGP^Pui;4w{ja+Yz=rAP?A*aH^WFxheS~kdxTED{ zY*hO{c)RZP^;mJLKec25un?KCv&e(KX}JD^2p&8iR}+{4#cqylrtsMjHXn5zH|V7r zfe5uEOek1iuXJkDK)SV>>pp#w?n60p7GT>*?2cnJEDBYsP-=Gd!z^kzeS2S9;8~{& zE@_2qPM++J1ySnh*F4#kx0R4m-xu-Vi*wPZJD4`64YeO%^%_aJbCNOZ5q;f80CqC&sI)0>p!=44oH4a|iqv7Di*=760nER_D}F{c0Jn#(-c* z=vB)E4k+54Bu*n(LFUaCw_&ZwOVFgel6QLIdI~2R?d;WkSY_{rFIkr+8H~QF-Erl+=vUIlbTnIJ;*H zL~+|_4^zK|qyis4gl`0;PF*_tHZ|{cz-`GFE?p5AK-PbD&sgXcN_6%F5+y8I9L-Y)PVdY zxf8vtwC<`6USZD&^FJL8#&S>iz%8SK`nAvL z2>(hEZ61-)?&GSSNNoa*Y`y&zP7}Nv<5xfF|9rv_O0$>NmC4JiVju3w}d{K!Jc>VRD0jQT(wD;uHFNfQwu_Uu-=*%Z3wQmgH_ zy#$3y74AwvCG(QMo32 zuH;Yu7$m#RT}VVkL?Rj`m3O%=dN*Fnv#ODKs;Gk=k*d#?zBlWxjhg+tgfG?tb9r`+ zZIFYBW6)BI?N>@ThWw0Zp*bzqOeUxOZY^3<*f@}tLHvBO(dkQ)wO6P zMXdEs&dgau#6)IIfHkWj{ey@s$?I)##fC@dIC*K)?VvpwYg9s)$P3%0ET_P4o|9z_ z6{_T}yjx?%3(hqJ;a?>Ec3o@XHU2GfZcFJwyiqE)2PmY+&JlZ(C@$>hh;xW5UkRO6f|UOqpMM zP9fF$aY|g?w6cownl%8$Dot)0=lsKL9NLp!K-fUM+1tQB4bS zrBHm>&AXqC=U1)lc{cVe_aw=!kCWWIG-|)ieEgVpDT_lcDUvg{XD@Ap@4Q#1h~3+$ zunh?d?)ER12wBmNFM@AyB>Do3Y`}t3=k<8is3-hj3H-Q+TXB;1vCJpNicL**@V|Gy ze%QNH;D2O>f+E@jhyQ+qS&Dis$94z{l07~%W=Oel*-2{PL|`#hwi!S~{QRY+FNLm( zONCpdD2X1`#~j?i%^?vtFd(xZ_Eb^?woFbyL5Mzg{nc*Xq#j57eS5-ZNQvm}cJ?~h zADWAg`Y#Zt;B(vIEs=Yxzg=n|GlFn&uHm;e2Mi^t_)ZakuBUGBPaM&mY^C@!Z0>gV$Y)S zK|7j{kxZw8gb0oS|2txZ9sbI7u;u~A`0HuNDnBQb(H zXqnd%xQG)M28sYj)p&UnwGN`PVuXsC`8yP^Iv_>e9WN1`_-57hz!rzv_30(G)Pwz$C9Yy>Cwql zsOWOU=Fwv8hRP%%SC%o%1W8h3v`S#v8EGs$?98xodu$J&ti@N-&hze92b5AJ8WB~Z zp*W*wMbVIm4DXk}?}S8h-UC%4$;;wN9*U59t+M6fOY(NemF%yqm8~YL@tJ%`zK=H3 z64Pa0&td21`-cPXbD;Nm+0DrNjBAjSAU(U?ecRi>jEjHl>i&0Ww8Um~mXW{y0{gjI z)=feB4~mgXk!oqPjtcAVNX?AOw}Mw$yG|i*-gn-^hw~G zON^ArMObB_-@E(!(o6W5fgj@~wJ)wIoF1<~BRWtS&vRuIZ40m}wqW(#k z2?;AA(MAOfH(?k94x=oI0?aD`I{(B+ST4s<)n(B1*)1v?pR@kL2Z|2S9pqCg9E!4z z37#-cT7AdHUW{j8;kTMQwf;rc7vwxiu(+DTynGtyu)i7_T-~{l9Z2jM&=A-eqB8tS!l#}#F^s`~+)g&|6=ZkT z0@9z5%6N?I<_U2S16q-h(hdf$bFs=?PGI%|5i6*j>T#yU;n?@gPdNeF9FopKPY&yqCt zH!w3}L+st3MnU)(q`{LYRZc21&j-e~14uyAt0M5R1gz8@gZUQrf*+xBeLsPlH{(5~ zn>_@+SMW7710mu|DP6k_liF##jc)i60yhh~VsE zVkx38H9)S2k1B)+9}+}fWm zV@mh^5G%BPlq`rC7-CmDA{aPWh+Dd<3ENxABr*Au|zT;WM~6F^+TVM z1pDuWatNptYIU#|#oq*x^t*m|H0!hA$8I3`DEjd$+AQuH+ETl>#%s&i)KUbcP3EFZ zC|LhHKzWerzjP{ju|>*H%m&zVzcRF{arp1-;iweDTirv&4S2qp1N7aIv6gwNS=_c$ zqc3+pN{H7GJYF$d z&|}#PwWPocn6hRlRrl)Vy6yBpwE`b7YjAdfxa>8QdIDa99BWKtx729EzoRtO;zC4h zK$fCW4@vofQoGoOzwE?Y10Pa8NG#Jz8rN$&XCC9~Z1f(GJIdU)Zy1s4gjcCK`w@vcIqq<$UD9f!>9lDYDYl0)BBO9C` znf)Sse1b@qRm#h?1R`X!Dx#)+ z{e}Imwr)1_h40ScOjkMk_+mNE_B@u(u1B!o9{=!HcP`FS)UP;`+%M9rntK1%-2Mh_ z&2Sjov8rLjmQ3>=U% zX*f8@TkzKJ(HA&(o?j(Y*r!e_*w%mVt+dxZ8mn<|WcRoBbzE@rgUX1l!a_hWY=rJ9 zRP)TKohYy=dkHL<)?&+%IZ3kkUki`|*9AfYEc#k}LZEWUjZEpF6TEq%Pzt$d{V0y0 z`Rdg6t7(2M`g+#k@Eznab`T|gTva2xaLCBrZxPA+OjFv!Khv&$!T%X-y?&u(7xNM? zfnvOQ3ARaMU0(m$z=DE{uy`o99K7_Q2lA{|<+k#c{Mc*9e-IbG)#Jq`&7tJXddTzm zQQSa1(Vv@#K(UHO^WL)@RypC16LT2XK0g^58ko;-_NzSCmUqa6|DD5lpL>xWtEk)# zJRbj+EQKU2icI^Av2$;;*~^8wq4N&Es^jSNa6RDET+e*--F4rEJB;}I-=0M)5qJMx z|6MrFe-j$G=CshI&aVO`|l-xp<(-{Da{*Zd(2Ia8} zdVh#F@1@{aJ;1I9rKnclyitr6=|v%BGL_=&X{x{1^sdkcwn(Woy~z}&3v_BGAzt`A z(vphLS`tZ4TUv3aMdP!9S6VF|H1$#|xjANWfP>`fq=nLJq znN!ONkGC*|X3P`CI>buFlgG^fMTnYQJ;Mfm-@zX3UrLudkA#9+0vbWnpus-E>o}q- zstj$#=lpfV^6}=Crym)`WaTgUESMz&Q*_M}by{sr@eiKp+O?rmf|oxB%C*nfgRdYH zBQl5x6wV4T8@Dwb1$&=TgK!n;^36Hkfm|Nprk%Izf=tu(K9u`eS2EI53c%~VC_M`i zDbVXn1N%qqPpc9dEErfDh5;3m3Q_q)B%%4WbBf*DN1BFw(TyDdv{!mIm5Z)>(WSfwUQy4w}`#N3&)l9KT zx)tNzz!56AzL2T&N98NK7K3*s{3 zgyNE@{)grxgQcz0qGtvKT@2~PDnAjIsZ0F_?C;6~NH0*?Y!3ee`E5@WH2(aD+`m)t z691*XU*iG(OZi{c|4Wb;(uCn?j9iCh`#<)-qj-9SKv;Whlbeb){*U7SWz{u$pIXB| zlQth47}2$v^gr-l=ubW1Q0JR-#q@H|M^1$$My>yY_VEC%I+#D23@fX|m}YSHb5m=Q zX1*!A|6lg7+dA#Qy_O%p8Hnej&`m9)nDR?FV~qzT|KAAy^L4z>r`YiZz+G{R?=?C^ zICH!zaA1?3c2`$H38>326=4?{8vnt6pR7|745qiujvlJP3gdyKpZcAB4R#6YiF4mq zjNUxyTfKg3?Uq=bdnwLqk1<#8bK+G`83OxJ7D=4ABBz4T8%;()Lq*F8F#xvZE z^IR!lt1{Ig7I6Ea;Nmj_@SR4#s^=hWe9D|Akn*;8!wRPn4&Zkt-~6RVJvJ*?>r^u5h3VSp9wc8zItUe|5dz zjl~WaB~I9rbur+4sr^-VrE4WSGa)<(hLu1y9A}fg>f$wg>ALvgVSfIFdA&u z?g^D5RnpMVs7Cv}KT?=B;0NcS-3?vLBh?=?YgRBPrPG2&B5-I7C9*@G43$a|N4Yrk zrvuVIWLN=%N$Z6*XV$`<)8h z!ZdfO9-7Y0LLf*=JZSn|9?(B=FpDS2)vh?Z{3;&6++<1t=cR{(cm2^kiIQe;b^oN| z{e(n2Ff|Oo=d#}2rhi)TW|Qgq^A{0%9xgD+FxXRxQ~4Suzc=vjaU4>eahI*iSlnI5 ze_a0?ajba(qyMM=PxrKkcDrM&{QuGcv*m7LgQ%Z!^9D*wt?|;PZacutah%)he@7U8 z%}ID|;3DU&WxSshL33rq?>QQH&2t_$XdS**G6z)e^Y=UqDF;a$I1_Fz>jBwT1$yh} zU>@43ig#r$TZi)xtv)NSuVRH-*XeFv>KSv2un-Db-4+i01{FEtsRI^|-4*P&ajX}Q zP!zh=)S?avXIHKqukTub1gHg_+Wg>^2EmKxJlUL(2}WXN8;GLPtV!W)>b^YH5aNKU zG|0A6E!DzXnZS24P@7mxy5?V3J!A7 zbp0b>8?-)sV}UXUNDLl<8LitZ7%oAYWWcceq{EmJI7h)67FYlr6g*+?Rj`nFgZv)N zK~PqWi@OgFq|njg)q%^J4gBM?h-^uPVvxsC<`%&$Z%&?qoz#u3U&iF!$~w58?vj-q zdGkGEJ0iDZU4H_u;=4Y`5D^(LOaFLqWBp(fIKNyUL4BEj@s9kb;#_^^5*g-3>{1i9 zP*(0Smc3Lz%A><2$AXuL1dQI%vl_L%4|T1K!q4x1#?xDwO=V#LXXr*xfnUXv2DdUT zEZ2;Ha1<=ZO00B?w9Rv0?}_twA}onOF-`eqsKRWK}7Vp zg)Mrz3G5;ez?=ygB|nQYKFM>82W_?UYK#OU5-s*=a@MnKORr#DI$l>mmv~Z{wW~}d zMj8!zq6sYfOE3S@`})_Y9XCb-N@WANQ=B6~U<6twuyvZBWW1usH^q`KyrAE81xybI zw%wwy{8pPhRNWJwKgfW37?RD+R>ZHhr+?hI9XKp;h89s?2^-9x?vrG>`yR0rzZ2DC z>;n@24`uHi4p;cT`>rXB-pe2ui55|#1kqcF-b?i8JxX+jAbJfFy(EY(S`dsx7d;4~ z6NKo!o|W%!pMB20&OYbt{rY46aWQLVt+zbS{kd-*PO&~YQR4xrwp{Sovavok<(jFt zVtdMP*K-_OxL{;B{*cZKxYH}IWZ89>D^ZzyUdXr?<~{#nTowF01FZ^UMuH94_HJC`E&!TiPS;MEqCA8H6=UY5{1m*#uNWWGFi)+E2r8{m}X|kbV z9zgG!sx|~8A|Jjxi@+e#c-qgBV{s{BUcD;C)+t+aU+hUke<4XhcI1=QQGcVxSC>*N zaH>D^_rHnPBFudE(p>qI2GNwI(#+W>mdVL8A+zAXd>lJak48#>44s6F#@nm{dV;#z zKvwV#;S_ZYsBR40k0GbmNc>aQHuEB|@#cr-&| zHfE^UtK8Q+<|TlpNWJ&Cs=CFc+7mlbLG?Y;TP~m55)ldto-n|vWeqN2{z!xvqN1Y1 z!Gxe~aQ0w0g}G%JnOH~-@C~A2YGsM~G>gK9$`j~%N7v6aiHM+sl;De=rym|`Be{(~ z_w0y+WR?8)ryoFc0O~3G$n&1>|HuxYop5u!xeeXkzXw*VXU+&S+sMxuGZYf@+^%wK zb3hmkAel;?YU$UlJb3pE;BVMq9;l3)9vWTtY>hs`4Uy0e8F8fdyhJxR7urb`w9{GK zcCuLF?}f&_;l21fD{)ifE@GJ1+r?y!FJ0tH{Vjd+TbVqFy%=P_HBVAxVl{7wtDPbu zUO$kkFs<_E)+p2EXd~7sQ+*8AsF)D~er&}T0waWEK$<+2)Od|Ei_xb$=*kBwOPEsK z*$5AMsCk1Edkrs^NyL8!U;~l_J!&b5HQVnM#9BE+-WdT(wC|B=6Z)0}22BTJ%7ic^ zO}?rGrO2(L?v$>9%57HH+pqVOlOSbktw&k|(Omt0f$n$rS_IJcfPF)pgYtKR zwXAt|(M5J1?M#|eqNElX1=!;R-*{50y$uuVC_@e-8do_jFQnfS@M2dhDk8y^Yu)K7 zk`gL4Z)<5XKp@_?tp4d&EvWM_LgP_#n2I+$@C&xCeeaFoE->N9tMPlAMUk%BdzI)*h8C^Ifl!cJE&uJjdk#Y;QQzqWdL(rYu zzQIQ^y*00-HJ=3hthRu8Ra8#Y8&tDN!)pogGVJSyHvTh4pRpA*Oxc%BRt>*>!5g{T zbA#%5PJx~E$@1E798Sem6uS?*$J6?AQ~RK4`1+pIF8JwGO@zqHf_2Z>^>&b- zC5>kk{gVO3ynw0|-C6&IaPS(Ufr+(SkUwwa%uNC`X%?H{go5;A^as9{qv2v)tL5^p zDS})vIAy#>XPp=iaLPGWFkxrTC$=K6JmczlfrNR=TKqz=KIkgw z2bt5GJ>qD2lx=pk+=LzB19}44j-$&m`se}A4Tt7x>LUt~`^&op!b?Nh?SB1-Aw7&O zEAd8xIrEo0E7Q64J`QE$0>KI&RC#{V2f zWbS%AGWJ*HCRR~lkM(#8P>8X?6ZxVdDio6_`lpYlZW~We($P;C&UgM2J~n+7YGbi3 z`qyX3I7dcZr^r70h-6s1N?k4N&eHnKli6!$rKQQ{s1 zC&d6MYRrW1h0_J676<179;0h z?`nzCv%>IIooaIgvtejiynOr2Kd7NS_?Vkx?;SjyeT791!ff_=?Z7>p90hp9_g! zxx_<9i0cvx=b`yN{fNA2Q`aAf!>r#K5eN^z)4T3LHTo!BUl5hcvq}R}UvndZMpF)Q z`omZPTzk*B7cZ^sAEpi97v24;{&+#T=$77l-c!4kDB$mJ$@B41O^jFO%ia+A7-}xl zI^mOZoC{WI#o8{Yq7hqY0uH{pT_o9_#9l~Mke3~fLGAA`G76{!_Dz9UmsST%KYUsd64u-JYfW5b=r+ThER z1sZy+Zt$5o4|1CByF4)%)&0BsZ`=;FZ*RgAxuA0+gn`Yc;y7rw+<-mlS!@RX<;oU1 zuf^?Jo+jpW*wa9KsuGUHhN8JbRe>Ie4L;;ZM@Zqb- zqF<)~E8FQVG1NRDVAr%+Nc$^@K2%VxV|2U%vJe=Z529T#RM`4H$=)xcID}NakZF+- zQ%Z_75SG9D`YSsDWGFBJ9=XKtPHJqbhxW6-!_=^K(l{Y~pI1kszGUsQ{irTwy)7fzW7%+H^_ zpzgVwjg|EZaGSHKRdpp&(NiEklNc#UNVt^1z=l^Km{)dbUr`#!MTDH~FnMVI2qhK{ zR9BZGRO~q~q}uu0Mwr|LQH3PIig$%h_kaaXz{Pm`dBZ3SL*E#Dkdi_!MRLXpsn8pmSHH&( z?RJG#F~rN)6D2TdAU0l24GwWLuM_)yDOEdd2ba)reKXKT9IMWN+!xQAM=}ya(TK_c z7!ci0fu%vAstY17>>5dvjL>MZj+Uoa*?GYgrD(pzEwkX;Ty-_zQQ-dEE(0BGyIUt5 zPVjdD&Mlyx`0w&GdTexQF;p4rXQ4^U1~3p>RrG`YHQ z;}CCw5$C9af+Bov^tV1m-l$tf*0`o7FnrI}WZb^~YhqT51&&JW?%YZP&@yTl26Xof zSTg`w_pI>1D*j%^OY4V==<)I?U*PAULiTI)x`-MQ8nWQ94`@(esYD6oLC@M4QSe_> z7QHz=umcfz=Utg}0~y6wNk^N9IFN67m)O$CWOcbI66m|w%Cgw`q}NHm>AG#UiGz{^vzi*PZR+VRPO8%qM)2p zm$TlUKi=l&LY&=*-(DU6p>SJHu6Gt9Y4v? z1q1}#1`WfCIJ8rF;Y4?kG`P^bwdBQ@899s*QuU%j3T^0qW@5Bah0)p_I}r-P-_5Fz z_Z|zqBsuFmyGE^|*UxhbfFP2FRH|+uObkZ^^Ft-#KHL{Ck{u_K?>>FCG;;JxUwzIy zcMdLbFj`hQ(@y+z|LUIPJ;!i?HjuLzSVx1L1t o4Mq2teFj65@5%8ZvX{qL1U-$ z75zZ438SqpewMcaNZxjtcnfA?rftnUEw~X!=~Ubl&c>u;etWNcOrH?T9Wq$^J)-U8 z;Yb~YFP>Gu<*Do(`B^HZ`1Gh5c6v{tGowBseN~+*qk?J5to_I1djZyhg%w1KWR zCDz_GDldv{keh&%1NutGQU>ozT~k06VvfuxD#a|y$m0g&wVUZGRlhANh1#Ue4}AJ$ zs2hiDgZ`jPA=f~+U$->go`k?Ke;2OLdU^(|UW8eQ<^HqV7=X~+d!G0zTi~Vvpvrjl z9YywaDE>1*LKPBrj@QkSqwjR25Lilfh9M5}9N?PZ5UI)sY;$}^!>2hhZ$S>KsEYml z^vAo3D0ufked#&`oIuFi5I-EOmQ+qX+hRK~xTa8&aaw5NVpFMkv{lw&(94FqgG zW4w?|#d8~{Uf7SX(Zsl@sA@WD6?o)pfS^Xr?}e^2tU}?L(CZQl8N?HcRWHuTJ|Eu& zi3QkB+vR}SM>WU?hzwa8k6F9vR4xX!FT zkW)M?24So7KY8rvd|QbYL#e{Ovm+NunAvXu75nwe{j!TJ{(3pL(XS7h^ux3;bUl1;ah&&sqh zV;^j*1RqM(?7q?VB-|5UE^piQ7t0IdVu#-+IU276dFNvXK{5g+aB&R#doHmK=fZ-p z1WY)B*#Dmi4q{;VG*I4d4=+!SS%*d&cR7FIb(R#6YA@<6tVMvt7nYG4j~b*A)s_Lm z3*IqdSA7(Nzb$y!jSi4V(FCk&0|VcGOfkQhIAL6vat}!e+Ab|S-NDKU-YF&){Oi*e zR)i7=Gy$oOgapfPINePA(S<{2dEkD%tCN0Tg+-YkC-SCK%JWs;9o2E2A|OI-H;J#%u7)#&sLOJaSvd_= zVl(bV3SFzAHr*3jth(KuT&mGr>_E6&ulsT7F?UMbUj^k45;?g-f%lpl$OnJp9Ho?K zoFJE5J1;Lo7|%ch9G4gbMxC+wa7cmPXQ``)(X|QFv~C(?D1opu;(nqT)b`|vC8p9S zJ8Mteyi}A==?de_#Eex>I0uY)g&u7vg+%_U{cF=G1Y%<9$Hf8Y}$#9{4A!gG}=EBw54RH7=S5~^;+^aC{|Nzxo@ z@S5#3_-~q#V5lWfE`GTj^PK=ALIDEVeigLxG3?RMpMy61t5ROk1rXZfzNd?@oT<8R zBqLq}(Y#Z<1d!q5z=xEMf;D{KNHla!*i_Y{1awXAK}q1Nm+$vqFq|=W^l6O>3XW08 zvIC!r^2<092a@=aysD}&f>#2H50t57x~n-=vD(fn+OG!slolCp_p^5;c%eTDLzz3T z3`8E-u2~Xl*qkZhm*}%Dj|%OlpuRDyDtvkEV`{;d)^oCbBEERJaNDo{M=(#IdYf4n zOHEvmV}5NUzCvdkdmVh=$lzK-S2rSdl_^CORu&5R3Aq*b@je4^-0b|C3C$~XtOT1l zR)ocT-SRYa(Q;V6*wE)QkCV*!AdnrM$ z)k6hlw15SqgusAzWMLS&w|#hfvpdMTH=1DTb(}MYQRb1j@F*^vOvLFY@ubYPz8Iov zX1xSf!?63#r>r50JR_5Gg}bvFQk}h>5!AGc7q&VkBb zjqEwxioI36CHnb*eRB6{cCfPm*jO?P=sQI7tF@mkJ5iNP6?1@aX~u*RiH43265948 zAkZqfz8`s>*!%kVY^RhWY&8o>x(?B&K&`I+I28-c($NAmIo3FV-t`0DrSBiud1dv1 zRrm1FQb+_t1Wrg*z%lWyohQNBiSzCHtx7DcZM{J>U#tW9{U4M`50yArs}l^4YE$ye zc_3@b#!m_Vgf$(n6$=j;f4?`+xDdSc=#LlJvRODPl7UqJHC7uhAwz?FjXDXRwhw@1 zu0n2^bsrE&&0`G97^1*@w;?D3@Da+_c(Co?J9BNsUv7taetzDv#@HuYa{R9_B&I+2 zHww8BJ`0!JKkK}S_tF}Jt_ndp&dijFM};+{ndQ?dZz ztczAJ6)t#w65zm_@+^63*Gt2$X7+_K6;YHSWvHC+F#Ns~=N=90-gh$#w6!M6jJ2PA zaDC(R_2%vF0y-$Fo^FR2Q1`9Z;4L*8OScvKEji=AnwZ{^d|6S}BKY*;hb2C-u zi7}@CyPkkl7`v=`Pb3muk^asc~V@_+@}BTlquQ2f#qM&OFrufWg?fM+MBke6b}CPa_XZK5oH|0aJG$_8}iLgZ~O84diDuhr5AcLw^O>tDB^r@N! zzid%{5)*zw6;JxT$jIMo{@%A;h@Jtk7#?&|tDXAu-K@}c;g6vFP5i-p{MmHDtM_Ek zTCt0JFX$DY7_KW$9?A_sC5a^ zc@}~^Tnkx`xT8UV2UY+r&oUGwQ2d4L7C1;6)i{)NHw7w%DUuhQFuT$2zLzf>v3?ze zFZdkZkml)eC3x9oz2kZjvJi(e*MRos45=47rak9rHSh{fe{2#?G6`BAq)x+MPSBdG@mV2VoJk^eGO; zz;~(=1%P`9TSGacSY6&RUIb)#Y|PAhZ8w?#p1OY0%g?9QamY>@?&^{w5(u%<%d zkCNXSf)X|PtAA>txsn#6_Xj|^?Nux;;8kc!TzEbyfca!ZTLWC^F2?X`s}{QHUX;DH z?#6+ELT;R|wdC$erEBL*h_sx~PVfGwc#8F5k@L56F^q4oeR~p*i#ci!M)a1ICHkUm zT?-5P^vKghT0b;YCyqUbFEZCk^#SC7+Qj8$Xi zPfR|s>55ROS@!89OZL#}cIzOkcecx_8aP4yePQY7iQZx}6XK!5cC_w4m!=|qPtAuR zDiV;tRw{lD19wBm52EH@L-6j6YeaQMRcgL{OC_xZ3Y?1uY50c%QfXwy{8mNcyC5^AlKM- zH$*&;g<~n-5zgn3H2frCQa>0jlJ(-EJFe&*=LjfB>7iTMr4h`~kdfg&5#p`(sVRjN zR|d=(&5T2+KPZq$2bF(g)8|Nint{DNd;9ZwCH@_x|5a2PjDRrpX)I`J5Gbz;!;?26 zHhsgief}o1?P?X|O5gIWzWJYlEGIJ$xEnd8;*iz-PzHq|L(6K;ughT`;DYIEgcqy% z)O#`JGOECpg3#RX{TBX7wqPpBs4W@i(Vd76xE{SlM0v#$46`+i4=a*M|5EJs>XC7(U`Uoc!Lx)vXSRbXI`4TLISANS@2L(wRJH7-n0y!Yu=eul zxfs2Y+fiz7^2USctwdt>+~N%BX&mT}duEs>y7{w+tO6zubFY)pTBwB znjL)OHMP!Z1nSGEt+v9G)~MVu4O?Eo=X1y4n~*5ne|y{DpxF@8#gyEuipGR^Xk*Yd zj1id&h^0U6!U@-c=rU_8HdCxBjD~DYnfW_&=lZ>8Z`ErYJS%j52|`I`gW6Cj`WL2Ig;AGfVXAk(As^8O!q%$e! zE9PDz6nER*#*e48Sq!uU;yu~EyxCX3<=ib+&2;(9osM{D(@jG2GgR|6SgP>75gA5E zTrHI?RNE5o?Vbkg#}wqg&cg?O1)iq2>6Af1fxTnpY$Nec$%6qiQKCG1F1AITd(jS& zqx%K;uAlR@_wXYhZZ_F&jo8rrgI}7ZX)nU5O@o^3p)KB;D`^;gnt-uAS!^F{J|Bg- z8aq-qsYj9Y{0co;lnq|)$-lB#RF2khi9ls?RT* zZ8`y&sSLk+9stc1YRi*c^X;Z8e5ZLYMq{EN84Fu5mPuM&AMrf|3s#B^)*5cki*Us# zw6g2o8PxVX2H0hw?8$u34(VHZ#Q~e&8(68 zITRl|T~1T_^2F=pE>&B3Ug@3U8gM!zbE;a!HMKlMDiff0*p0?V&I&n$>tWuXkhzO5UbqF^eXt7n7 z+Z(RFuje!=d=or|tdGhM%kGm3SW(OC0;}B55FP7pcSn=3nmc2Q7J!FMU>e@*-zTYx;~Q zaFa(um=6M~>30M4n+S9`5DG9NA8yLBXYDur4<0j_?PncT{O#KE_=w}IsZvGF@I z6CdriXBz|k2O#s;JHr8fb~wW4?*$!Iv^yg;6@)8V*kj*>Ytjefv6*Uvj^bIM{9$b2;z**Q+8B(=vZulfaDx8I1O$V?+G2n>n-dr}Z<}S+#+8 zUNT@T9IrHut9s!srw6eDt9oS<4)uWQz2e!&3;Ux9MBD&D_OhG&Ww>71S{Rc#Qqx5eoJ?uaAeSNRIaz4@N&>wXm+7GLavGcY{iGV7@7n6=kVQ!^!g`l3Y zI}}}NdQm{#|NE1nadX`(ZMVelcGDEz(*sy$HXYh@AVE9MrF{h z5{uXZt-nQ8LC3O;v^+gD9ZK(x-2>W;WtHP+$kyw>CEg3Np4EA_o&S30bL}WlUY`1# zK$y4LHenZ{HtqtKelps~PMl|ZGY~)t@Xzi2hvP9oWqD2hR-NW_>tp$m^^Cmf{LM$= z;X|>f(`?;N8*e@rmNJuY#yEU6n08A0h>79R{5h50c4T{-?NGZN(07XNU+q;~ge6G6 z92Sqm230Pl;}5a_6|~hSyf{|M*)=_*WTM1$C=)M;tZGZU-<*l*et`3VjdoL?{mo(% zYUFggNAYggAro0>G8y{!V_CZ@gyCU=P{z1th8q9P&5UEvx;JRX`?0tZG@{Vtdjuf| z7B!<1Mq!ty=MsC~!M8c5caT^?2P>{YwR&;18=lOoQRmbId4q0X0a&Cu@ba6aR|W>3 zNBl;v3@ghQG+nS(m6~FgR@D7ykY7+&s0P(wgtDz-Qq)0CcZim+0BKOLC^>{BH5L=& zONwV%s9EOAUA=PN!&uy`F+RXa9n)o5^E2Bm{f&2uj)F<0H7i_+?qg)X-tN!+Rh~Jj zRBqhI7mxncxBdsbC&&VVGbrhP5LGl1%I7qF(bE2m6NrgO<9XzXO6ju!+dze348zX# z6eQpBzN>KzeW25EPVtxuhX$OU3X&rX9~1<*!; zmdUR%GqsOg8#wbcsy}sZ2&U3{Y1BND)u+)eNs9^nd|S1#v341fK;mGdC;_p6~O}CI2V*b2Rf0{HYlgZxN^VIkWZtW#|ehs~42k%i^mG zhxGeB@ny#ow>4WBNi2e#-YnAHYL&_F_N~lFI(L)vrLBa|zb2wlkz`FBBbg8i@8%h< z3V1W%FmO1}lK3GSE3~6=;L{VqEIAriCiKiy=GrwK_|5e&7*qvN)ay-Vx7rulYZ2>x z1qy9;xVu*HY^xb2R!O-Sy#M;`h)iL*TztKpm(;^P*)1#@a*m>Y7v$dLU=f9beS`tq z%-KeiKWkQMdO&T&^}_AmYivXaxw_b2Pdou@6)cuetfQc;J& z!#Mb9!s&>K9B8X8yWW-Yv+jM3FV1lg**}KEQZ^sY`d>15ypk&AV?BFKvKUIrMnl&6 zFlx;=ZSB99u%?;!HX?ssUMkm~%76*z$SPl{`Z}h2jA7L?*EBz5VF(^|} zc)MT{hy5-z8k!YwKvT9UT9D<5oT$zxf~iO&b?JXl06aSZ7c^5?3dGyFHn$*XP8+ z=8p=t3g}=|8NvF5ISfcQx|ZEiQ)Sxg7#^`>t1_&sgT7qxF$aikrNrg73N|~{Wi(ik zeK|)Y0?Pa~i>o4oEU#Ilr4Hv#$5ZxCIUeWc8M1jzCO_k1)f-eTb>}=b+xRf;E!|uT zaz-`O0Iq@Szg}KuO<3!Tf!*7n8k{V@Kksa5vGdr)q!dRVhxL&TROk(?KoAnQr@Q_O zKan78+8*RsfwzZ7rB|vM6@351drsb8*Kc64UC#R5`|>3R^!T9iuX^JhkS+svd^Ql- z;=2}NdCTruht;ia5O`Krnz~rf?e#cqyWFtXFY|B7fSsf1|AiV=dS9RC5+A|TCC+PK zKjYquQor8!e?km4AN@}+5ca9l+-E2?4eRl*0ZJ|86JV!w3|B_U}N;F-UJx0H(C|~ z7lG=-55>7Voqkxds@v~V7vX;#s>cdzr#B!D#s{^zfwv5^paN6Ex+x!q|5{B(Z|QMF&DQ`@4s#K;*Ec_z%!rwH1W(1I8Yz!W5pI zZXd%I=@!ne)*qyxcQw6qmt_0aLGtVdHOlb+f+00dxU;_nNzY8xy!jHnZzOwxe>C*U zG;c#+@~ktAGWAqoC2BxFu&tyV%hip6h5-@b1M)8859MM?`=Hk1dIK|nv-6G z86K0FG>f2wq(#6{lSbd+_q<&g)84Ubz|EmHC1`NG`8-&VPi;wWoJ{QQpleZfouA;Z zM9G2nn1ydH;PZa?WcS*l5F(IyEJ_@rTb%8s*9}nYkudSGVu6dS_+i#86uiKl{p&M7 z6SXB@Y(mde!t@9qGtwIoK|zrvU(8VUu=ti2^CV7;n(%FM|IW+QXKJBPo01N%cQ>P6 zVf-3dJn-q9Ii78|XHu=E*~?Stkl~EU^$)dqOr?zL zQ#_-k`w$jCeEk<8DIfva{&jxkF)vN)jFWPqG4Nmjo}4ZDx3I`AI?cEXbl>?wckHvW z;J@qKI8ll@e4OL+^#yw2GW)dEwF3Y({YuJSFoQ;y@$PagvEv`Z3@=5qUMUTGd~x0m zm&JcgMbw2Wy!`Vdm03VdiKF3>Hi4dt8=NSfsQ3%J*^ux`Y|j($W>c0EzHePzB|N07 z0Ol=-)IF~sU1M7IvwsY8H1pnRD#E>5y=iG*D1kNpavxXK*2TPFPkrVjm%lWyWd3?q zNjXUE9ckU;%&5Y;7hT=du}_8T&E}gx;S!Ybe1q|3G(>ap(fk!+mpc{hW$QZgMld9} zO?RB5yyd9NsS7V*=0Y*@ge0Rr&!YfHf?q79jqgmfOWnEGL?Y?UjI+9tNbs=Nd`IE+ z`xW6DFzxC;*06h#_cN7P7-kZcI#E3XD{K1?-TLwH%8Z4D1>QSg?j`)XO;KaBZ|VDl zQ6o3n^pa+K{Zr%a=DB}sLe>EfCxo)tsf=!E|9R`?V zzg&?W=*9sh%V021N79erWkuYvrjsw5iaq6IfcsUu`P=7fAb-%5DIHD7glxMb#Kx~+ zxFV@#p|38WHl^mSFef5iWT!EVwRV0#gC;F~>?UdlrK@u^??xrEK1%eT&l zeEPYM>3dFvUrL~Hv?&c-Ta-ixK5;6~OFg0865n2@Ug52=;A_qbd5x<(_$oq*k$n$@S5-2*mD_Wu@Pcow&20hr6sEN;EerE3wrvOIifG?0!jbxDJEMn^c>H3-zBCg9R3#{h52Q9r8Gfj z+rJ^-7W#|lzy1`sl?Nj_w7kYlp;FuyN&h{+T~YbxR866;IFVY)=0S$B_vy#MwVvY;q>Aj?I^y`$Im9Bzp-Bh|I6aIOMm#H`n+Mu zI?fD~D*jh833Uvekkc&oQM!=pd;`~wX%<^h`j15xdXHE8Z1=I1o}6EOqhtr)9|sWM z6_GAf{9V= z)W_v_&K+s`yY51D z1465cl=R#t*8hBBQv;6@;|=2p-b>`2vjE8ge1?bQ25o0fNc`7n+*lXNTa(T|fx4`y zC_6kPU@*BgWYo^U8=IfMHn4()LdsGLWjTa-JUs-v?08+ZQ!aCON9o*IHs>Ftfy3DS zVu?Io2MDv2q!Mx$g8?ZMXBY+R&A0$4VcCCZQl-TdY4>+#DZT_{nCNMbcVG6cZrY;C zE8rq}J-g8hUxU3;#A6`M#jjWz@CXoRz7N+j_$=H{WyT|&2;NJG>#X4UNiM10D8daR zZepO>!Vt)_ZmvM>x&4ci(+$8_kf(LnncIvH1Wj%cjvmhGd73B>ysDhKu)x z{Q`#>fa<>{EdbghH1gowW6JffInHu3h^#eob;!K9zF6X#J8CS~Eo<Nwm9|u&vHUgvFD03=?@5BuwzVc>V;QTw~<>jhMhVfJy$8r1P5r zt7tL`CjbxOWg;4p)%nECey+LVSu>5yR1LM9XYBfxkKnn#VQ4cSuiLT~D%Z^8x9>VE zqsT$d^#E(L`ygf5M4hT*>_gv_5?A|l1x~L7YUz^HlcF%#d0(5u~}ns;`S0lEI1$KpFxKsu~(^aBPl9 zDc)1Ybdp4O;q%;$sP^GoyiD!yRs7#0oV*M}y9ntTet`gq1uyoQL^uSIgn1O(Asr66 z22C+s=kQ|V=6!qCC8*8VzVVBBBwp5$cX!qe=)#FphwNpRNI~fejz&N(A83VMkH%x`S*9_?xI#=YhSSg9<9R6AWOP1&@!KvMGEO$zvo3k z_bD)zxgqxW_u+bZ`@RC2&+-ReFSnb?LwI2B5LJ|U)}wnNQlT;-)_m9$G3zcM&| z=`T<107k=a6uXqwXsq%UtIj2d3-?#F=N`{wqbSr3?}^XEIr-hk7Tr*~dG`sH*?9?2~Pn z=&e|2Sn;@|ZH46Pw%gy2BoC5yyi#?D+8o7?syE0sFF8hax1uUo-Wen_Z?6f6{EEwA z29l9ArE3S*FtmM+=hzkx#Mt{2S-!u7v**~6>}MC|pE5&`RO^SO*zB57kwqqDFsVu7 zwyR}jK=%O!0uh3#(jB0`hOdUd?ZhEU&1*%r8Tdfm$*jw|7G^=?e}|vn>tN54!`(kq zDUWrhbJa9->(5j#U2H+R31laLp>RT}KcOTzu}KMv792W+?5mHQJ}>!!XjhJZ+gTUU z#;|^1{mO;$3hk61f2dqUqLeL!z8|E!=>Nq35Zw%y>rKn}B1!mse|f4L{;>O#_0}YW zi5iNIFY@h=u6O*Xa`mwcn3|KUV0|mL@b{8`=uCPey#yog>5TtIzv7`;BZ)eH$kmFHTbfdyBAOrdkYiEcz-3=nn|ZHBm2I#O`0 z3ZIMR(TOOJqqB~iYh6B*mgq71fG3BV{|&n7_n~do++_a#c~If}CXDQe+NgjQH`MsX z%dycV>VGL6%VpcXMq1_-t0D=hI4Y zK7NK!{(5kY?R~3hQ_)72D43q@x%mOT6(1`{xA5Vf^I75+tzoZ1admR*jUNu8kKyl4h%_LC@?vV?oIB4b@MzR^ zfofc7{O+8B7L(aWsSV0-CL#03wOV7n2@~uTW-Y&)9qn&uV9=eWx`I1Brw}Y@#Romd zNSMsLyDZU}M2K{TLW9(h-<;u;3BFDlvAE~qV4ubhQbr-rU&Ex#(Tj^}TZyE@38YtO zEBHnK4ZowwC<_82ZZkEFor`0>72DX8VsrpycU&*RbL`?6?ZSCS)EaBC>3JbfD{_2x zUE(wWX#IEk*F#Vda?u(cag6Dvu;?YDNW?wDnagy7PWHUpU;^9gx&Eu9i>uZkc2*Ve z?#pJn3DJ+ORnG~+vGRlSlr*wT%A(Uy$c$oGJ>rWV4ym!XeEMQ6u z3fpPc|72$Y;l`H95<6u-u_cAcBx>>!Ddw$Clg((~N`|wImC+VPt!Hh~^6fZKE*gKN zKA@o2ses}UJpT%%_jaG!>*#QiwzGNU%X=;v7(|2SvU>FASluX4X8}oHDYO+ zi;{k77GTl1_1Moy_3Eb8TS{}lqiMrygtpgnT6ZPPZ`(jKodv(giMGcZ|6kjC}Nq)xT*xh1OrJBm|zG46P^Zx>bYohaNlh z>7`2e=!K=q1di|9EWqjVo$XHRqZ|Zy*4)y~EBgfIvw%UBVfmaNQ+S0e@NgNWvdr_r z=4e+;qw{60B&e_(;JNI54FMx|q-ZIfHMkzuKW8&;QfVhDbhW4R0jJRt*wf5Cu3`)A zx2zU6H2jW`95V(gJ#4zMhL3H#_~8$)#IW(4Ub4yZXX;12#uhFS%+LeLB<_hy&+W?N#uH|1C*PD>-7 ztkGYi!}FO?t9MDcx;-CfYg(lPS@_t}oE2J4hyILLB)q0=Tb1oMWj=j)C3#?&%l3nA zXkK=4B3iReYp_y(d9e52z{%q!n@~=_ncoGi!7#Wnu3wgj=jq$?Re}q+N#t-UOL4my z)M92d>SahleL~RiTZX|*=SvBVincwnwU=coQ_FYJInT<}Re;i>hf`Rd745-GsKraQ z81}`cc-bSIdmUQ6_3_lrpge#N51vaKdNdx2zfCxU` zYR~&%1L^U?`9u{o&C3DaaqV}3kYK`vz98XjHVyWr7JvOP&cc63r>nvK=I%xM(+@~8 zICRNB@+{V#EbJb|m;uX<&NIK!cFl#>)0ttkv1jPNW+VE*tbqdXSnOzrf2Xh5!;ffgHa-l`SCw7K0he+z?ODSD+f$yS5<* zD8eiIk+_TtxmnEHpQp1jpwNZGJBYn2zY0^Bu&b{N{@%4;;X^E5mggIyi~i5ot}h{t zf)5W42CQh{66iz(SfM)QNJ+(8^d)T3gS{n#AJdY!w`f*CD)>tc$5G}r|zK|+Sb9C7zilhyn`rF6TjFn@rKmT@DEGez%|%& zj+-A;0Rn>~T;L`5Gq)O(gx$fBEnLGLG69qA9yZV!zxz^0izyU~} zkA%g^$_j!AsC-tY#|n{u@hpWLSg)VygfBL)9rWTX`lgVtte`{DQ;v0q0mK>x;$}s-T_m{7%M-wfRC@)!ad*D~u!M^yZRH zk|ui*Qe>Y|gu7Y}LQ+5xnEb~lZf0LMtx2pGnN#bSE%(j2iK`LovrDUl2ySeG2_*Uv)x9HICY5 zmTp&7ZD$r=MeS;%jVBn3cQ8CAA_7n~sk56C#du`1D!EO;0Fx=fFmx%cC>OHl;{+PD zC-(3pG9*H5k>YmFPKOmTOb51F*|?C!xOG`it-%|uw3PH?$tm^v#Gjw+(uiYhY3_Os zl87AJM}6xWRWKY~t`vyO5KNv)H3y!x{s52U%tCQ$Eo6@#ETZ}ZSYuzv*p{CeFe;6_rPPbXll9tSh&^n zm285bRE>wyNdAC`Zx~#PM_xL>Nmg_8T24n{V7l>i+7`Wk5GZ-GUIlAzv+A3vM_Y4= z?7z_lR0j>Cp{Q86l@;zs4oYWo(YL##RvW&Tr@MYMIG^Xrr_g$i0hZ+i?0CTpPr2+*eDU8hb;4}ic4&bxvwEAvrNxeWxI{vpWWvD-u-+fuPeE6phI)@I94pmWj zgidVXI+%Zyc}$Cu?XedChUU_?AkhW(5o*ZxqAq+LP0xN(0*ES>FfnvyS#CS=0m@BX zTM#6z`C(S7^6%cl|4|Ra16CK85P7DK51*XUetl^Mt3B|XXYb$&Ckp`sv%z#FIy>h# zJ(5IWOdnXI&cFXF0TT5hL1L#2CPdk@^~dwL&&b=jz$QrwjQ% zC_C$@IJyT-cQ@`%a0%|N!QI{63Blc=A$SNHG&sRs0t6BuxVt5|TX6TSe81UqW_M<1 zXX;PjoIZ3_-Ku-<`@9chGRD&8Xf!Kj4SrPNQ)0AE&kPG25E=KuSE7IB{Xw@>ogpx* z_j7G4a4yH(CB+tkuK=k{KBoP%ajYqOOd-ocJQ1yjiv#<@fOdn#AasaX_(+(|aAHXOzff~@E5JF6r8xWAc*wx4k>%j5NJ_<|*9jy((a4l6 zw#G-4!iag!uGN#I1(G&bzy!tax0XYMC~yT~C6p1;3y6O)LlczL>ShQ~1ooa%IuW>8 zx~{cT5_`qy^M|xXM?lP75UeCPGd@$lePEX2fAhG!YU;_e#?SWSb~r51mh)T32bREADIwmT|-8sW{Mjj0qN7Z?#g{`$j}zX@zYF+ zocPsuA5&z-vA_42J7%fQ*aLr`hjJ6h4+-*1D-l-W&9S!Mq}PzwL}N)YeZZN0vsxj3 zfBwhdK^hJ!be|t4&Y0K5$*-2(g*z|)$P|hbP&fw6+y90ZZ@agO6PKx+NsCv&!GB9v{Q-5$wyOmZH>wQO#7|glXOjd4FTNgOK?Dxx353VZCO%qf&jKF&deDEDdFig zIRQo1YjFBWvH0!QXsocbbSKZx2qGZh+0!?_N@yOMGUyZZ_hrDX4xXOt@eAAx6VBP& z&$sdk=1H_vE0RJrwFJW6ZWiNCW)_e6k?r@|V%qL^II6Hp7d%WRH-b=vu>3ZYLX}Bj zAY6?4dDH++O?y}acj|>Hxv?4%QaW3%2|WSKNRN|Gcz#aWJef3HmW zT2G3fo#%`}_iQxzh=T`_r=SMpukn#WTa=wJWT&9FUu9%+0`W_gL@p=hoxq$Ky^3S} zFatKKCSLdZK#7b)(%#80Uh&|sMAGY0>Xw8WBU;7#&|>RBT?FF>H|m(z;(1ACtoUd! zZ+UZrpL6`7Km1>=PpVsq-U$uQ0UNc%Z+ugqKNs0G|>_Tu0}v!%gjYYy+*73 z6|f$TKn6PaYWj5G?+ruf-fPeL4c06sgJFxRkO_84=bMlp==A&G&>nq;TbyKUQi0c7 z%U@m%89X7K7!c0iSvK8q+^}f{p@J_V*+eXew@ZO7*nhBH5UMNTU-}eMT*nq8JJNswsz~nt4-H7ih zHjIc?DD|X81W1rE!zw@0^i01$bQB80-Y8^oE>{#qOH?Tq&^tjWsVSx37W73O&=6=ePmVF&bW8}qeE z?2C5H#uR#5g4<4}Q9xxyYP1%wz7jO*Jsy%$T!a05VLTAH4!n2fb%Nldns`6;iy-5E zu&r*tHgFq~0VkQoa`N+hWJa-=&`f!UclsE?(k07q{26jOLw~$@Q$`?$Y2KCv)2guN zR*1f5(D#K%+)s+%_#zO>wccN-1lNa%qm!3*#vEO@(cM2S2jOGZ(#CdXE7>VKp7k zIJqFsozBklZSIZ;Fl<1%K~>*+5SR{CPrTF4gsZq1BH}E-5`QmF01sCb16Aq=qjuLv zkwqj9YYtD09Ta3~8g-nUtiD{xhQJiAK94!Kf5eW=39eq8!pg|)5@5CLbh|aJnF70e zHs*?25XhfQS9=zP8+^omICk+>N6++U_5a$+^VU8tfW|hYIud>i5FiW*PcCGV{SfBJ)@H0kMJn4UX9Zhhk!)#yo=s?3S)3 zrgq&C%}=xm4JvPr>W9JM-;TAyrM~WhDdU%#6$t#CNK)`3E`JnY8mCJ{u~^E`n&$N= zA^)a$JMP|3=XC;4V!Nw|Axa|pfB1P)NbN#t@xLa$Gata#ceGxklU0a-g#*;ExC68cr!ZzDe{-Y3AbxX- zdQEMETP&Aau*aYXgzU1@r~FA+vv>X9r+>LQ)Mk<=>)jAIT)m`~qRC`fuh)WT+1S+M z=h^8e7dRu|!M)cy_WudWBMuL!LnM%y`|_mEe2oDTg@7|oT( z8ePZIUlO`rGc^7+AK5Y#&UbGGKS^dajQJfAugHD%ssHq9P1BX(-C2Q@{B@=c0c4ZP zOPug$7FX(cf7$O?hLMj1-xfMsWqQ}80z{)jpiEegl9kk!did70O-2;b zMlh3B8eUPQdlz?bvvCOzT_p0DHn>gOFy7upJ2j z8_>0iLqc)G=y8(Ocbbc>mDK~I75Ecs#OUE;uhM|MdZi1X9MDN6g8gqdulBU)pVG-N zY;3nWK4m6+RXs@hPBdMXCw?}A;58Cv9Ousq0Y;9*VHSM||Jbo{yePQkcqI@+6t$E& z?T|^GOg17 zbt^XFx?hMYp$|(W_e-oiM|Oc<+)AA*(hr(GXKV1db)_C4dSw^yL#47;zf|qq-@DV| zh05kK)P->e)(J~SNm23m1u^oN>sRO)yIR-V@K5`u*ASW2$k3g0^evU>K8)<@)&zBH zLxSZ6{-h*}tEq{W{zXwWV!*ah6Cc`$(T|d$1 zjZ@c_MQROrX2*KqF(T+P_UF#J1+(&o({UZ2Twf+=I5Ff4^253kN zj}D#GQW>kCtK9#COD{Taw7=A6!(<5H3~_0=bXDAG*7M=_(+gFy3CRW;jcESTk#5|gy8 zHUunbS>av!U+kdP*}!CWIBAt?d9Ox`irTiyI@|RgxKdS&hasqiH8onV=?A#MJfUtL z@8{r(?xa&g8hxTq4c~KPdV$))?;(2%6C4Z<$SC5{Nd5h}E9kMYKt_<55B&82 z1|#6!8CH5@Q)_!Yvg4A*>?8+ho*S+P2?dX@$dcu61SR7@A!BrO^yy!85bhQ1=S`+5 zZ>4?wr`*Tq@<(|?hdtZzWG0l$8t-F25{E<>+e;Bt@v?*7W6*1D(<%S@fwaC_0MF3QdKH1~?`W`-NT%6cP=)Of1m||b^z@d8 zV~ikr)^a+-t@?tURw^o0XN2oNcN?#2exU2I1LCZcU{TQ`}jcJ5{w**RQyNy%@`V6kq+g7*(9M9aUj}V%$Ob<+a=Aq}~B*Fi=O)j?L$XkZ?)9 zmD@p85M`m;da7sN0be_?R~>vmA^L3j=#O>%`7)=WD4>~l5x9M;Oaf=|K)YRbiaZ41 zG@`&;N={ns7Sa3TRB@g_;G?x${}-{+bs4FlCDq@zHuOLP;{uD3y!O1`XRJ)j%ZrJ{M1uPchS}(n zKX+Xrb)5yitI8+76B2mP>QlCunbC;vdhwa5kv9i!*L26UVX>m~A8kOFfCaUS8I)U0 zdwBa5DkS!ziGqTD(DO68FoL*LK_U1z9%c{SDuUY_1Jhg;%#hN@g80%F!w2C)n~i=Z z$vuNtNIyz?*+-L8tBq0iWB@z^GvmHpbwNnlCeZ@(HbnJ8{$9K2Jo!QNK|jynX&poK znge?RVKJ{=RG`lO6+7qoOS{jJr4|b`iktCBj)Wn4p<5Mv< zRB9lxj}|G8o5-rucKC1yVf@r8s1sGy*mdee?XT!^TAozQ%Fov%OJv4u+&`RvVtU>AzF$>s`5%zy!AmFOkY+wJmmHeY zg#xY6CklJ{g%p)QF|i7hO@hw#3~(mF;g14`E0?)ZKbgeZ=nV&qMPX-c^2@W;H&jXy zZ?ZFa2IaHHVOVVE0XiKuHa>XwP4KNLXq6bK;srWdW)Io}p^m`I-$OPupUos-=bhO6 zD;7a_9^*)CekqUW@&h8gCjeh7j@n63-z1cdju}o=&D)Os6TG7jta|sG`Z45SBw~L0 z1mf1!e8%t<9*7asdfj6OL^FT=3iY@M@3`>?(lY^^+94i><}>OLO3VnW!EeVsJvqXi zdm%N!o8G|~Z)bwf_C`&Mh|kfd4M#fUChXE0cCrw_!0J}J&&v~Z@%N91by;ZaUFN(| z0G4)iQ6KwE26EnMGCLzSf!ll)AJoR(&s9_%mAMRYA)w@j(mmkJlbcNQXjqBb$&0bF9ih?S;acQQkzy-nmwR*MIpD9XIY_y2 zl{x={0|(^TM{a%n^#NW=MPw4!fIZ^*S^0C&gEvU~kUS6fPZr+n{;m>SK*ucdYp}$2 zVHy9cJbK(~*|B+pt4Pt?(@0<;g#3BUk{qFH;-<8`bR=OfU@^$=fz%rUZa%8xOc<>W z7zGyL%HL(`btBeW+0OVk$ z>1dN22J^rmALL_FxX=H$6RrY|n+UM)b&~_)^>(k}#T9s;m5{`eW^XaDIt*1}Gz%AE zetvTN$Do1BPL{*7*uW?}IS+AcKGG0eGP4Pn-1#zbv5P8BX+rylY_0nfCrFrTdE zk$MVVLxZ*o%}P_hx@}9pN^(yt2q=}d#GHMwiS4=|ur#6>Nizs&1D<`t(s}@cf^r-5 z?YpIHGnX8zF6n$39sEqG=44YUFnOnn2cf__w>&53f;=22H+bx!?C&H>>N{(+D6s)C?ZZN$73K0I;X>~t#z0%&lM3L|=7U`K1w#BSRK0>NS zX@eC}F6m9ZSi+qi@jD58eG)&~Q&$-9RanrMorzz67)r9*!1PzfEL3B_z_}1o(HI!AGv_(k;6JegIL9`F@wMD?CEDu!p zNV!9dJA)pKr=|#jwc`5&f8|O+|JDqELsp*+#c18THn`?NKoswI1ugbt;M3uWAKz?D z>x2K%XAf;%yuU~jSy{Yf#ZK<+{Gs<&xm1hMeE>w7dsNM4n%bT08n zz@ij2-;G4K+M}J;&sMTM&kUMn!;Jnw_6b{ z?sp(df#>?e*WU~D6Q!beTfnxo(pNW>NDxU?r}4d3&^z+nB5&yKM#r6|zqw+Kjwc=*uHXX(kJ{P20xn~)o-<8ScF zg~h*>Cbc@9)CAT7AKD+cS04i1x*T4#WhcKz<Yk14p|7I{Qp5sEGU%4i90_39e7J*L{#u(=Fl zRQ+R9Oa^=l;a(N-cY(hfy@g&j$u$or4TQ_z9YVy-7E=b}OvWbNuPmthE7)3IN#<}+ ziS#5fMt3B$gpu`|oNyUNczwF|t{01XW{teF{u|RZk=5&v8>n~ey!h<(L#6Du>4R;a zhVNrfSiUdpRsOSvs%}k#A~Dn_KmO%cqH^%DfDo_&>5gDuj5Yjm{g+fen84l- ztoQFl_lyv=s97zuzB_co$8h?dh8)AznOq3!5=v^2`nckru*CtXhdTdPYtphmqu^lh z^lEQSB3zR8mMa7cmv#%5=Ox~zX1Vqy&%bvu8IG1ae;93)nQ%QpNvFBsFx__>IR|Y; zf65L7Mn{^W+vJ0B-)=HOFc50H_7=IN?DWKlC8?Z@U@x;ZFcGjT97JsjoWWI|OsYud zJpeRIWcIaR4}cDuE1h?EH^3ra2*7qfts!jG_v+hk525gRBmM`=k}D*RzbTLg>7!;+ z%+V_D61gUN6fDjt^xa7xw`mN~Us zm(yj{Hxrn^ZS^ps8iZ|H^Ir&<_Ci}LHFb^Mkcukf<1`iyu8%rHf5N>-fwu(D1GHQV zN*)T4Qs#?EC{@`@Pa^gg_aoow#5jE#kd=cm`^aBOO6Afhg>|Ja`sX)){Y!j0Q+=v_ zr9zt+b)$XCExCs0OE-Q3v@1%_#t<2 zJ+ELdX(DU;UEp8PNP`IQ(y5B5A_{$*8&FzxZjaBn7qM9k7@6Hw=|2;W%f_JS(t?{? z{P*G|jEB2kekBLJSXSFLa|!JW9jc5&b(Mc$7<7wsWON3O36soehi;YRtX?-fTlH<% z;suwaPQ`x|Ndj~r?80|F|J%GoJxsCxWXnviIm!uuM*ZLGKz_Z3<2ciTX95^?KNW{g zfp5WMgc$7dovY ze>|*_JCp7&(!>bb!QWIZU*Xr3VLQj$@smvb=TFm{A$hu!ym#(wV2ZR_IXLluX`M#A z#M!&wWf$C+@~e7eDU?evqJ;j7hXPocum2PK5|2Z)ArJPZY3mHTP8CE6XM)?TAANqg zo%HQ*e7QSqF0U{;T=aigW&yK@Kux-RfuWlRAXoq`hEHtryVjzx$^S}5HstQZSsx#6 zjA1j#nTQoXGIH}ox}Wv#Mm|+W&_-bM1dK$B92#cQQAQyriwqv^L(8q5lpdDMtJ_^ zs4{5}0Z1$>iYxFa8#v)h^k8Og=XvjLk)o&NzQ$U_q5E6}8o-l!`N2Zn`L@mv=V9o8 zfBruLNvuD(Z5@}9QJq;-8Xl)8puT;#n&cBgUqRS;xzw@VhPX$C?Dyl`@)tEa@|ZrX zq&2OawrJi`aD$;=6gA}tyDIBpZHZt3*Dfxs%Ql{X{r?+9f`4*YP8xS!mMDM$MMTJf za6fpA7+UZX)W-7j3k8&km2Iop>8SW6wW@a`l@J#EC3SU412s87tU||n zWVRv%=uB}R&GZTW%OPFY)FJL<6!h;5N2rDdRkydQExA#tRp5L8-lai*$n%fdoXN9= zIj7t}c_wsGZ#Vk_g6t6_G3S-@^S(JEnEHnKV`hai$J6bUWg{{8wVhjNvb>ieRFX<~5-ck4Y{#4T`PmN(`FD6Jm zhTLrsENSlo;M{R0h6lm}{~r$N@)@jc$PdeGoXNr3j!2)fXD4;KdmDxcx_lZO=0O9U z`%1$=^C`94PG6g?Cls@opvHc@fBv7sNPuq1b3Tct#SDtwHe_88T%~ep+N#Be3%}%J zncw2cblS_Nq5=q){%hS5ldc9@?X>E6x@|U`l1`V`>%ILF&DVQe<2@ZX(a>0~G4uk^ z$kj#yFrWsro%k8L$-rXf#?Pob3|w<0EpX1Y*;$GNZ+_I;Q=SEN=bf0Y@MNFa6a6T1 zoW9w#zF%RFI@L9npHHkacQw89jk|mpy6`ETMDACR%qXKt`y}gHYVKzo18scXD$V74 zk)iCcMp0u$5uD;ZVoK7(`+Pmb6w|9RT=QQUmZsl9)w%POUJk3XO@NAD6&-H>J9rxs z6G26Q$oO(&5{r5r_eqOj* zjXz0LVMr>=G!KY?thlGn(5Xzzsg}lv{T#rdwX1qtGRMy0jrR4xR^HR`t+@^#UrEJ&il6 z3z%Z63!aUPC$+^?Jn=qJ)kcxHAx1$-D8mvgIpt}&goOjWJxNuco^NNSdCH3a$jfyp zO^qL>=ob06R^bC;{Blr||j)e8ric7={)WS^iF(zR!1JO34&VV$0b0(B0|PMHL*azz=65(t}%Y zyUA-WXYu{w!Et{EHjl^gs$GhBsG_V8u{`i6%+rrGt0b4Jf74YZMAa7Ii{v7ZmA-R+ z1IxdKX`IW2K%aK!bs5~B-x@T+(K(W#h2zj2abzDFKHqls5XC>sPz>*2ve)dF6~IZlbVbas%LCcQM6y?UQJusVTGRarJd$9}91 zAa`M*EzUk2!$v!txh-()<{wzCe(|s`G8kl4YbT0OPS7!88XUc^eO=oV=`&C zr$Rd#&Bq0(p}YIuU!k3+cey6msh9J7?AB)mH{cqNq zb24gtjR{KL7K{GKus1dT_dsC(Xs5L3o+(8z9QUqgdI&qc6b`dUJSI_zb1o4aCqP@A z9V7^}^l?xKtlqI@b*4)H5llV{lp@|+Am!7YR~03dE3qzWK%vJswq>3tp~3b%_0|DJ z%}XToU$v0UgXI%(XQQ4OOfgBk zNsxjlL0!8_e-7Ct zl&VT(bwCuw)AqlDnYB^m_{rYCiq`x209d?dbD6}sf`f`Rihbpu!Np-Y5;+vPA7Pr3 z$CD`rwg(`!EM3n==zFcQ=oYIIYeo=Du`*`L6j+B3R8F8&nllfg^!D81>_Fbr_v9qp z(-+V$1eQ5YOkQ1#7_2oHE?;tSv?-t&S^g7pLIc0Lj%m?ESR_v zY>QH_HqhoHMPOHslm{_d$EOX2&Boj8vjRIysk=+AP=#>!G?@KQJw^z7BMDJuTEf-z zV#V(Z^LlG&N{UUl1+5IAJeod`$oeV%j~hE6t6Cgt%^BOUh48 zu@_kEf&hwZ<9U#Ia>opiX0k+Zp4D{ngMvjkjPj(G0;XI^t{!HzU2sZsy2-X03g)jE^H`N(HBs zW9*~h9J1jX_t!&PC^;hc#slvqXQ5U}Cb|`5mZ*9jGOzE>;$b2v>z;~XlE&!?a3&=$ z{p(+k4HApSA2BgXh{q6zlC5}&Af-)T{HP!DG6_QR*~w72J8paLnS%B!;iFjX2hZF} zeDN6(r1>=g%S7`m0KPj&N~x~idBAMP_!L9Nh6nSLrQk-(`oWlGEtgA0l{$@;a#+K}ViM{-&MoLvMm#JQgUe&K_%$2gkFV?S4^pYtkpMxEd@dw3XzSb9&`d+^IS+p=)( zGk2|rJgxhzE>sd-9akHs)jvwC0MU@EtTsEM$v1(Zpq8LqJKh}~_neztIT=qH91+Q4 zZ$%(iBA>>mj8VjSx@Y(GznwKRKxO*M& z;iv7Nh;hUr>)VAdjm!4k6vNxsZ~D%4g9uxmTkDqi+Es`XFF=fYa^7FwOof2nZZSxi zeR9@muut*f;{JO`#p=(8I2$d`dyn#Tiau$2&*P;bNZ)l`zA9WpnfT;vj&!7kIHi?2 z=kAj(RlII!Hp>`zvL0D6>qh88QeQHCr^1QBxaReD6bdOeW(gVZUOId~*p9LY!Y;aB5x?h`7%lZuh()8*Xd zt6q|6JL@<60HC&)+*OYgYakZvYMOs=NQF+7C$4?bbU|32ndeLq6{X6-YhrFM{Zf+C zSQ$wM+kUy7xUMLIP4CoIkCMA6EUo*k;qP&wX!>p+7SRy4y!hRL&q>>%Ao^(!&ewy@ zc%T$YyQ=y-hFDu!M@Gh zO;Lb4x;JaV!ove?VYma^M$HKb1Q*}mp{tp`TEL3F(KCB%@F1`tZ<2O)0*jsA)EcHCdx&VHvE=@3Q0-DR7gi# zhtYlSIC#7;_-{;`je=Z1)mk4uy@#3>PFKDlC8&Y8>@4s_6c9MA5HH*Vv$7_%8RdRn z<+b*gicf&@FUPM{$N$*Z>`edcR^Jv99mY%yuU3WqWUMP@bjsu1+U7XTS~<7pX;k9* zTSyL&Quqy*>x6hHB(*5+26Ce~kTo8yW0_sp%n$B@k+ODW0O6LhL$^#nAsKvqVO;hw z7Acc;r>8JKI)%K{s=??cHU}>L2Oh33da*j%Bf)PgoGIm`=Jk~5MYw}2R4!L}w|oor z*M`_W#s;jt@2q)lPI#GX2F-`>E^{ z^*k$_W<%;Y76FZtQ~Niq?{_wN8r$Cu;LwG&;#u@SF1n%22$!lQ`$8!SJ#=mYl!yaT z$%IE~%Ac8uLGbV-kzMbjgSG5g$G4$ZhYoFeurl>=nibej0thV#Jr-c@t=7iMB|Lok z(GDH^g`yRod*>A;g&x%)1NwmH)ez?(t~YLX+qi*R0|>i(iAvNsgRZ-tucWb#1;Lol z+Y=8ll>;#(4oZ~kvN9z8!!~QXqHOrp9bo=7G3}#6m||7kSpj$GPw`_2RKM{3#IhuU zV4_*O*xFJPR05o1mqe|jmFJ|8WDO1vJp@G06A9X@+#oHcrHVP|M`BXCT!c#k^LwS# zbVr!*g2OGD5VwrBZO(*of0J*hGs+fAfaz|Qv6C8!^8)D@?1__e2P@ zv$HRmP@YzpZ4Y=jm0BNOX#D1?rRTJ*Et(^`r~41$lW|fLLPSnrwT}O-`Py{uFWyEU zj?Nt5fxa*kDe~Y^63Kr82jQAtxLZU&^>;%`> zM`8;M1~$SXsW9)f{1k=Bk5lTE@5MoP>rXd3et!He&v4I^arif$bTX*20cxU z(E^TN9EnA|8BR|nQ_f$WIn|bWF0fZgWycfDRy937;({z78&Z5f(3O>h0GE>yFbR8A zd$3gX8R+XzQ2^j62cpKKSEjJ&qReEX7fP+pLg-(Tf&!l*SWPCo-%SvxWingJ6|jXm zJ%wtFAiT~^NBLD^PBWh8aCtUv%?3pU&Q@Sd$!aa3ac-o|noq#h<)6YR4wnko!!56Y zM?sdBJ_0q+hU`KM5{_;3!*;dHL8Sb3b&rxq9P+7P=@e>V_z{sL=J=P$v>6!`)xeZ2!yg8=ds%a;3AsH`RExuBs#*UVPMA>n$6vGh(O9F%v z^2&HK9+pTrKwbyKk$=i&j^kwEz?~S$@af zY{e^cc_37|83Hog*syh;-s=ccdKX|+R-hTL(6Te-U{E7?$0HZ| z%t`gLazJd9I%1sQ2xXk=HXbe9Un)~PkOIrvsK6R31TYb^+4w9!6wT7m3p|AJA4i5hZ`#D^*k6n z>tmxl4NB=w&v3ER?`IH7(LUcQWL#v{@sAoDa=FjnHE6<>Y@YAZacjjr7vnu_?R~9Q zGrjIfB7eS@*XC|c6WcV{LB+-)z=5D=b#FWUm|>T@+P?Wf`E>%h_> z*<)Z)z#$8)y03|gipHQ8XA0_EiMVNQ^+%}&2FQ~X<0qB~AJ((SxWksX8aV^cwH5#2 zZU1AiNlBcr3UU=qk0KH z^aGD@`Gb9Y9mHkTL~sTN?Qkbc^HzWRDI8#AA}73C*v3uyM2<4oFGqkxh4mI{9zp&! z#K8LXu@jCcGH2|RRgZhr9r6d)#RN+XCy3L7Z<$9onwVhG007;Pcxo|w&8XwTNyN^^ zLx`yQO!q_O+)35Il+Rl=7t0{dEuZ1W9p*;AC8L+fTb^|(gOKanqm_i@Ibk<`CZ>wA_4vdLFWi@24l#(uZS%;K|B}Il&xbfQ z$&LJ5jvD%OO=Y%sw`;%ibOZBp?JOzzVI1DX)P6SiPLtgk>l5W3qeq#j>Pg~ZY?e1UNE1Nv z@!VZJ?QA9acfgn} zy<5iF^jqOz^tS1`o9J`2IYd1{wJ()kz0 z3@|aw^0@2LF@(EGxYL8WdHujELXrl9SSsPPW#>->O-$Lcfn{LlMNzcL_w-Bhptn9F z?_Z-6ul}DZf)_*F-l9Lul-(Kj>l>EJUzH@RlY1di{CbI}Jo zQ}Ldjfj4hD2}=n30Ls2YQIC(*NV!l0&2xH_6X=gMHepDfE^z{f7a%M`G=dh4OUQ#o zGp~HAWEj>pvQBNM;Du+D%nUkugj9G!apB}>2Qsv{iezvBEtTv09NEM{PC44a$kVP5 zJQu~pP+}*7;iqZ3(rdLcg38DRdWq>(b2JwWyZbk7Y?<${c?#~RIL#z=>)52y&zyra z8CN{0PD^ax&5DYEA2&rkyq>m#OW&@JWQZ+q7}4;cxr+WZX~uMcKKn z3~Q?FnmnZbx}739)?98)E2hAjp4>YpT(PCQb~CLSLcN-qT!C<53-tH%R7}$)nmgC# zk>JJ0B(}u}qeyp(Voeog=iJ&Ep<{kA^H_<{3%EMjsCX+*vsm!Mm8P16?kmj|SNe(R zLiz{QlJnE|@4Dq|(M!Of8X|8nvWxa#w`c<@@^YOY7p!L8 zGK(fZ;Q7x7^!{umugktm*x42otLqVNP(d>;$3qq)8wMwBowcIP9G+4mtz{L&3}A>! zZwN8Sott4x2lsi`GYx{Xn9yCb^LSG5<BGfW|78ol)(l#2jFzK{6L)K9LB~ns2>S*rM))O{2QVbq9Z2vfA!mdV)!QC(K zaAg?5Ib?;@63TEbbn-Hx0pMuZTJ!hXFT)p|-tBLagr89Jv^=sC*KIzki3xWB1wLWQ zdZ%R9>qoBi5aO2&h_N8d@$rWe3wgl*R&Eas2DL4Qg`Fk8NF zy&CB5B+o6?cJBD0zv-ABft7B?q--YD+=_#v(|bMdu21((d0O@*4RonLMysZ&o0L6DPEv8W6Slg44F zvJD}9j;`UD)$HCwe}4e<^i+>MA2P<;*V+nAr{&V70?JXw_ggkmHE?*v!9lT^lU ztzTySWk~v%P=*`C5>YJATnuv}ILJOGnmf{zj?T}TabS}jRb%HdvDr$`yUwG){Faf% ziO}`-Ss~`^YZZk!QwDW}Il-m!^d*sXA9(N5uT*USX+{H|L<9D#oOm#V4#v#t?}-#;uV}qt}$q@|6uA3OeYA zVvgStU|SF+oWaS`GW-BiL#01NxKmXTCUIl#c9RGmnJQQgGi;%rhs=j({m?Pgl*E&xd}Nr{ zF#1{;c=Jysz-BVt)X7*nmT*n!Zo0$!qhlCRbu{+J8+NaNuIPxm+seG0H)4?@DHQVK z0$88j2TwqK=?C+y8rGcKXfOn$^2{mlL)OtW4BtNx$|P*myxVe#Bi543B$0yF^5S;v zM0Li}$gJm>WT3@Hs-Y3~Vw`ks#WI6$PMu?h8{KO?m1;i`Y96y0Lxt ziygwg7`)M+YRZ`ow?uX5M_Aaf`B$jkeuga*>^jUPBLRucR63tTRCoD4Z+~}!tiJrz zdo~q;d+Zp;z{vFmpKjO0qOutRWru+xz_y#_nb$~t|RBB%W%IP+`<;%c$|3^=;^{0_*|hp8FnutWh%q65puRsxq-@-6~+_8NGd zO$3LBFnw;ZM;)RR9Qyl5#bJ%Xm^5TfCrb?#2{OtF1>pK)=uS%=a!cG^- z#{L0|yXM+wGXheO?nBQ(DkYjN*#C2x-A>vA+bT#S_nhLVoP6c87V?E6%RkN>fT2eR zF|p)d+vsj2RjYp5RTFJb`aO>Pf}aLu zPF=E{XCs5g46*sfM2K&PQL;2=;=??M_Kqw|b-;rKp~^)C!)P${`0MtmJwP$j_j_Yw z4?SVi%!mB^Q+}SvJeesmC4`2mvrN%ImB!eaz^FlXh_dl4BC_C(QD$?s<|z5JgOkf7 z+2Zt%GOVZJ_0_GrEhGnu%rnP>cerqA^s0Cb zx6Gv-yWto8&fwNGbAR&&43%}tKJzBu{nia>ctw{CcyF|tjMae;!<*h6g}J|fOOF1a zE{-O?CdN`tyIXJwPH+z%Ab4ly(A;$pYCY2cM-Bd`sUr`)>6ayftRADaMyN@ z*v?q=RO5lh{zJYq4c~RfyjrcD_RQrwJx3?XtKw6ty}`vMF{)$@Jjs&`j1_OIueSrN zK@TUKc;YwSESNQSXkE4OUE==2>eVxI4Rqc2tngTWFW~Syx+b^NWMcMuQM0InN_I}( z{-*ITHh(lls{ZNC3HS6%B|eJt-dl3*cIWgIo)ENPB#`#-B@l_I`}BLH^GaFeZBAM5 zeUaUeYyKnM={9FPTKCBlFw#H&$wpr=uVRbmu@TnO(JxYz)14f9JZd3+>b5(0bum?R z=`a}-ik;$V8N+2%5i32euYpuF#|wCn1#6U0W}fENc1G_})R(`vi9#*uwUnsedjqjW z_0A!RwFJ9Tn$w)iH~E$8fFnn$KG56saFsnjg%JX31cS;|{~J>4Pz^NGBpak32H*%b zaf*XG)&f8tU_msNhFf#!LX}>`z2Oql=T>%>aN;MU%owc(Q|B<;kmrYUdqNraNrp1a z<1pCU;kTK=lql-s)0*eaiXZN@xXP@maONnl5@_(8qSk=!@sMF4T2ly_h27=o=P${l zPl0(GC084}cDL=VS2tmxZ{U=j)R)@&0*sFf74F zCJhSb=pDx%P2uFbk4YwbQ{qlpH!J9V2b$8-7kS|4=aaWQFIUFDgdESzfH@c>DU>O< zhWOk`*hQPzwfI8^3z+DSd0pX#wF`$=!t_hlB&V3V?m!p)2ZSQ|TibEE(G|pX#LhboR6DJ- zo%4v2S+5_eoHKsPvW+7~sB-`ct{9+C6CSMFE;4J6B9OE@PTxvU#$J%X;io@Uh%g(A zLO%8zHqc)9k-vzmYQ(Kw?-Ge%NAZPk8`u;YYM(S&1m>`k=*%9Y#=p4(V^6!Zr#(st zsndAu$8%GY<%F${Ymx*?w?7jh-^$kl-qx)JWPSeiHYfyRrpdD_ISR^*f*;L;)?Qlz zmNg7E*Hp=D!zg1xW|Jv4bAA&WHC%0Ex6IjzW`AYZ69HsE72-gyKZj2*Vwz5@iCce~ zsLE_!f3h5#ArE}Hfxg9vwYk^`SN!9*XKL~!TlsuT8Ptavy>FF+!6l3MQGno2Z?xf)0D&8)xRF44hkdc)9YV`L?||x}rP0)$i^$NrQv`b!__}m% zxO&QdpU_-CAc#$In&jzWH}K&2d9oGEp!8lC-JX;N?Xz_Rw|~B0h0c!`Pw34v>)Qr1 z_&Uo*hwjTwK_;k^2_1KRADWc4Pwd^@1Ml0-#lr>gl!!s~iYqIZe|urq6PBXHa$q3D zZK_CzpDqFiSthSb{B&J<``lvzc4a%~hvdI}gsn5;u`a0-@-JvD-Ln5H3ySjN+9{u* z&fAV-6&N9{dI_#uS^dx5;mJ%}>~QK^0m&VKAq~s>i!g`i#xk*~=JE8(+MjR^0z?C~ zzuG2HJnoSpPCp=B#6C>y3fMR05`F~Lbfz6tV`9FY%yMbg58Wr^(EY=tcEnQv%(ODE zdC{KUFSXzG<3hiP{hGU469?V}B7^zV;- zb|H0Lvasa&E}=Y8MO-HJoc$v2R0`k!^k~q3ZFfJdy-1pD^je&oQ^Ky^tXiB?)=;g5 z)WH5RYT&NM%n;I?-5CeZ*EUv(i{q}San*78Gx|EMi8^A1{%?XxBm7;Z^5&`Vmu*!& zs?a;VqCwov2=gJHpc`^Z3D!NvUt~Vl_7zu+?lvqQK(XSOgTaP{FR+D;rJfBePo(t= zm16EH;O|e@JH{8-$I~z0SBfc%4*dI;VP5$ujsG16wWVa+gEeZo01S%r0@^=33~(YJ z#vVcgX0^8$g(Q@VTGlIM=M=SNk_^*r6P#6jOqF5ho$9K)J0!H(7OF`RWsvfrALGyk z3Ul7=)*&I4eJIzdNCly^-)?Fh%qRuvH);XaRyI%kj-ala&YwRq1F&u{^6i>`9G?df z)e^r(LTRGs5fC}U{=n3(#V2_Rzv^E!_NsRjy@um@kPj~5Ce~M_FUQs>hwFHB{o{93 z4+$`Pk&%?}{c%!CzvZO;Sxl-i?w|_av6)DpPoQGdrR+tDb)pM-CimL_=}iYH0_tPe z{2?~VEiu%8%2#+MFc9AP*IV1K&u`Oz9C5F&rf$!u z1(5I}*&KYMA7w*L7B5t`BVt9%nOpI&H<`$4zdNOc?o6aT9l1fPTKDVkE=CA91e|XK zOT%%SdXS3Tg*$RCA`=5RLLFC8gUv5i98CN zz|VI&&KZ+^xk3pi`K`d(i~Q@CNwJJo;}O!;f&b3b+yS{K=+B>u&x@uKx~(*nBFPzI z9;1csmy@atC#{sHr?hhi=mH2Z#nhm}4}D?0iJd?k)PiK?uxq&?3{YrJ3HbzL&?0FVN(rMyZB8P=$lXbp{xr*%!bv8#EqiCo(PgKG66p6ISav^~ii5r8gw z<24jk;=5us1$p+pTFO|>+ceUJvF|eO!(w*ecPSD!BVI*BXBcT(k&ho2rL0{Xu0)b8 znSSj1$)Uo%oNR>F(pmwXgo`qlFa1o|W4u9zlN+hr&bvn2=kd>oxBqgB3n}L$H6)&c z@Jc)?eGWAyTk7IzMtwPnlwV(NE{msXwWJfzfKA55E@N`KACg`>UF!2+#;0DFf~9xu z7#&YoEFYSEnr+0+o$D~nR;%YdD!9YTgikkF@{A2z?dz*zNg?b8Ip>4uU|Iq+Et8(j zC$3OjnG>Bk;y!;45`Xs4Pb0)uB0l0syI1*nHQIp}+3U|6yV=&U1^%mqTnh8%PQ_!6 zYH)Teaoe00i@!Z{^3Pav$_8k5vk`-w{M>kNeoui(1s3O7D+g5!O**?2M1P)-Y9O+Y zn~>_tyr-jYkFqH?WY!%GLUC*0+0i`!Hzr31SMKvdApGi`s*$lf z!YOMpq?TzSZF;rFg;&(-UDFq&#^{Ea!a|PEEjgcO*J#=BjXB^huHhvGh3UeH%re@4 zQva)u*VAkK^s3iNYaL6OD8s>|q5sG={PW2AGcW3RR ze2>$jJVrL6{@quuirR2e2dQl}?{%G@YFzjW+jNSr^2>E`Hf>fb*VDIYhyok55rV@J zK!AaWFOwd+!>0UPhSn(%eRa%&?p!!U_-qLB$1aLzd5?eP=lhURc4FR8J@opoN6Y3@ zcOXAyZIjMehJCilO}2Z`KiewL(p}C$RkJ=bULjadoQfqozNB)B?OzoCeiDG3OaQuy z*sP$Mw{#>tS5_#xPdi7ZFFw+&PXne_bg4*m$$S(UGF(P-_6%p2udFl9JIWp5^Nfr- z+Vbf)umuX=Somp{RUghb)wH|cL(o4ip>@Ch+cgQeu9l~bU)m}D+B$wjc!|l)w@D88 zF#!Gd@&EeUkv8oLOwIr7*_d>6_1@&|=%N9`x8@@6*P|(72bB1h4DF=-UgNANR4hU+;a zVDIY}3KaPQ4D*ujwsRHQ5w36S}4RQ** z&y52?2q9CR-#FX%3Zo%49PLrmVvJpcbL+*TB?w#b@6iftHl|LhBy521g9;IKS(irC zA^Rm;`|*W^EAS0>=Jr?`Cv1EBYt9*sm$Ca1N}%}YjCH)iNa~EUR1XBE_FJhs%pRYfE(`7TR7cqG>yS$u! zFpD^8{#sD}owBe13S>1-d9?@DMo3WJx@r2#?m>BF_@ypEfBOSIlC{ZUITo3yZc}+_b|-n+}JRkX=e6e&n(nX!X}xgGtbr z2C*5uiKBjJ+UsC#;`$*N7ac~vbQd^i#JyoMxA8Yapw}|(7qXeh&K6FSlSRa8KMC63 ziATd?d$4Ajxzp7Jl-kQq_W`p(ZO=8Ds~#vO2FrHOG=*}4VYnkeeCpXdi7RT_p2fZ! z2YC4AAp<*PS$MDoH{4U`{@R~L`@05YIB*ktcX=_9>>b4YDS|dm5QYno|5{C9OnNqd zsMe_r9H3bo!xL?3CA($XV@%fnywQLPo@CCM+Lmf8wX0UtogMlj#2CT!&%7Vq8rtnd zijuXIX2POC@G;}LoDLq5m#rHKVY=m!LBKep4s-a6&s(VkCs>>%IXLm<-(jno3&SD* zaG7G}!ZH0knSMrx<>_(3m=Z_qQGtoWh^1zm@qyNV!OocP&cGn}VQMiDAwf0Yc@vot z;Xz`BwS-dq=JtEgHlas;%eKIG{Ghu3MNsWs7J+57Or(Eah%RXeX zI8-q<;PN@UsSB@RdVTFdYB)2xO#*nf2(cg##QrsHN)*LXwcNl1KZ&{fhlhu3_L#^? zJKgHOcYHrbIIvcm3bIWEjTdo_F4-mZe~TrmA^B-jkJa+U^+Ig)w&(vSmZ$zmncPy+p`FYx)%p`aUXc!-MLY*vA1C$-R17;dfSoHp6;;9UBm zX_Y{3*C~)@N#`EuH+m#|t+#G_;axm3$_{y~0A_99Dht!+`OWyzy|};P z&xh^$0*5z=(NC0-oq-^VQ{=xG^*dy5eY zH>U>d&fXUKc@%{Pd39!Qr5iA#;Q9y31#8q`NrTX0 za-D)f(-&5qDr>QqecsM)k1=gsBMo007v1>4%J3DqYTBuqY|>g;T4yb zmLfWnq0r){NqEu9z6mC$w`L9J}59p@shFUg1>+fm7q%WCdaHOg60#@pHCi%88eApO!zT@ z+!~@S;K{Gqm`XEEb|p=aqZd-fWzzapVwx|Lj!7N~;M0OK%ZnFRC!!~mkYXIKBPoa^4C5u%^61%Fl}rmn4(fEuQ7yEE@3+18x`yS*S{OP z=*9UlQoh6U{6CP#`qKzMMwa)25uisb8=WauN{8W~oOo~O)C`2R$7xn4%`WmPBG=}nJZ%7;lFYE(zlrOLHLAcF7IRoouyT2RV7r-3M zA2qUdGZ$a0n%j=)BYQh9FE&KykHfpJpxu&vSE%&Fx3$k?+|3yZ36T}@AVJ-fcQ^^( z;fzYrQx##NxC5VmTfrhuor_GNa!2-&%5&jhtNi7A1L=Ow5$P}J7mj@3?& z#}BOC18kY!EMDRY_0+Mii%)E2N`&n_IU7?zMUkot2M_Zf(yqg&Zjd{RB<(XQ4W_d^4FMz5z_bhKDIOi?K8;5wp zXvm?UDmSv%^AnL0-Ig#kQMqImvPBeL0j8iGmLGmW__ZENe0>cg8E5inN)#K$mvY{R zDgMY+XLBl@?ze{nZQ)0^Cqdey+2hqH{gutP-}lPvkY~~>0ldz81(eo{(?LY%LTs$} z*4?4_pf`+t1);T|b7p)8RA=vI+qV$7Npi%5jFQCl+BZ1hCdasBRXdUd)xgIs$`?T@ zo>3-D-rjC8@g^@ZWG4})v+r5PIW>l_55@_`yf(juG(Sua$Gm@ol%&Q39S|tgw@Vr| zGdDMPC3}NC=dCpG-etwxrapgWzgQ`a18o0gp0UHY@K()fjZypzu&W!`%=P@^t$Xo3 zhNK}0kUvXS{yy~!rPt>WKZU|#!X26rg`0N3yXSJj;SEZJVN%K0Q6V&~U8)7%&*mev zx7XZ{Y8!*ix|l1OoW^haXmc|7J~polD+kwvDg)7K8%R!^l(!^lp@Y69y9Wx zxM@!8zgVBb4=2kQcfY3su6d|Tb6#)t){?-*NKV<}_NO)PK1BInsZ>Fe@l{;&N4QBe zljRF^84R*7u6JJ%DSfaOdA&yDIPT;N+K|UM{2XuajJ7BLTR8ohvx1%Majaiim^NqD z^qTFNt$6WgL3NJW4ySE@3E@uX4Zt6q#uHcsIAiEK-)y-V_FNu*g6*pXw}_^V#RJMB zZ)KQ+t7?N5bl4U?!8Q+6DutwXXe(8zV}R%@2S?IJhlcD5@q^kp06yV&%MjQr3J?iW=+2#8SbUX1?;}oX>Z~Av zqmTI{*9auGBZ}PyVZs#scJeXy$N=V1kbNK@MC~gHI$|v+w zuX?UDSVJ-4EK>NY`#tM&BtcbbV-E0Xo1FnkdryFAcf_ToqAs5;53`voH+b-Ip3z0l?K}avId;T&y7BU$8pZZ9h9Da9L@^EE! zK8GJVfiBw;-0{Mf9Hu~0rwF4U=1wGw9mLLm6pM9W z*;upL@%F@$;GkP8_2A=eS95aOA#2cIt!3!UhM_s8aP|E~ElPVIhmwix~GU z!v83o4XkEe2Dk07Sm$-NIUrH3sH*t&j2?I79XG%S!Z9B?_H+SR*%=PEFa<6Sp;m*J z8De5V(QwA!m7^@`C8DH-`CfkAmBLgkEdxu{Z$udS{sPg3>ILuuF$u{k!s6uK-Xf6< zECC8=cl&)kl2^wE+R7lPg+g#Y(YkjQ!7NDr8`PUxhCW78i2vV7Ea{Yy&++?$gqJnr z=MzrY0TmI>vp+7EXvo*1G7IuxDh4W5_u0eg{{9do+(8fj!F`<1LTN>NIX+JVgvNf@ z@^q6TKo1D4KodTXG-Qi}5UFnMVdp$MntAt468cGA41S*M`&H# zKYP(v6pA53-^(0T1KZ9qR!mb+9wns#v>d50L`4r{v4Z~frbxJCWF3F|(*1~tCO-OK z&FRAC$uTtOO}(Q@1Z2_~1hZxz3eE)J>ZZwh(P(In?9)*}rr4oe#yxHQexzqh{5DeG zbEa>Hy>q$t3Y3zjPNf*W>j{jV3(^N{%MQ6h4hc|-aU?~WNst5LVQVzmbSj@u5=(U1 zQbEVsqg?|G3TP0y%bgXE?{W`PY5QjuLW_tr(uPSEz-d>Q@z7^bNz92@wkxxc0j(76 z0@;9@sm2{Rz%#gCocSa#xEbRk0XmqC4^oRkr>I{DWg(=qiy0(#aOpqw822 zy8)!CR=$FT8o5`0Od3re$?$Bc9yQDszAm@EeuZegeL(6vT3ei2puBR9aiPFOoWdJ+ zf+A-OBSuNJ-NRT)C;KD0h3CBwCMH|w_+z@D7QQ+c6Z2D%%|{fa8q<2zfq(2cM=CG{ z%o_Bs88-M?Cbv(rc#2H+l{)^GbF7sRzvp=ar%wFoU*_>b*F+L&3b1G$mr4CXP@_g5 z%5QfL5G}kpbwzeIdMS`5bH^^(O>$Fn{iBF~+Tr?Lk8V(%1txEIu}MMjjSnV{r$TS? zr%mB+oh}?a5=nT!7c8D=kG*SPC1{wb6qL_JB(yhOydZ3>+&7>p^Q01R6xr+*5mgTt zP9%u6DuvSfHt|bPENt}DM?Ze`%IC94aWU+w^l7}%lG@kQwjOOVq8`EC7_(NMXC&P2 zeNQQr5NKUUTJ|@l6s364`^6%_OZEl!MjZ4lNeqE4xrC0_77T8yQA5=8SVkaw`!;I= zCQn!3&;yjG&p2knmQD(9Z^fHFH7nL|kb<<=_D*ey^POD$k2ua!zbG8)#J*#*m#T6mTnaLB_Cb-V)h?osq+#SK%v`t@T9OujDz^m}0w=*;SZ&Q0~h zM4*2RIkMsHechYXL2XKxU;2$EVT~bl+NCf`x z9ahXqOu4pAmlkTj%K^dqS^Gah$Pm3Tt|$3>6CvFch@_jNz6Yvvj^bPcj6gy^lShmj zcFWGaD#s)}f*yf+%A0XLL&mee=g_AnhrNsZm&aY;Vq4{S4`xCf(9zIhqBpTK3iLSZ zik8(^@? z@sL^Y?4)#hL&*{CL)1@r)IMJO&325{#-W2;hb%&VBWvnxT zs?Q+hn>DUJRPk;kM=X*?FLqh#z};LRhN$X;$FHAqoGv1ZA~e0Yw{&0P=!EZn9jkv@c99q37UR{9x=QCVoe>Q@I87{px1uW<$D5) zX1>uos|sr&l)NvWoIK~j+!g4K=j_Ke(M{-E14S zGL{BC8rj`S+?QMXY&4~*{eD^yQA<1Cg)kwLf{`ri2TJB+Llr0~McMruSYMR^7olL7 zoZKiE!shAjZULGiB_}6=K|lne&l}*F2m+pgE1RRG9FIs^2tMmKtJh=GE0z5vCy#5d zC?8ocMDce0tN+iY!2ZWj2v&mWo_8<~CZKo$yo&#M0+@$M*5Q1u0VWZGjbEHmwGInp zivV>S1xk0ER6rQ~O+CR9>S3$hn^&n_fv8=Z-7FhHDAI-@ZII5nOF-sHcy@oN4A816x&%K1*rvp$|e6&9iq%O1= zdjJ$VG^p?XALJoNkEDV>Tsk0T6P#AW7M1}2JL0|j_c0^LgXxmFIdFR%I!IV8yuL8s zm@H?;!F~eOn9nN+FWAnJQ1y6_WfOI?!Jg7#87X*Nim0eCfEo7Rup{)F)C)v9+^2q)rmf%FTHXj?ppBSrPKDjvAp~$TV!QAz`%SbJLu|g zhfH8sut2BS5BV%-^ZS5sD4&15U%ML-cF`je#Ke4;0`GgV-C;RSb;xC9WCMW zjgF!(k8V?%46W0PbO?(&)M{A))M}TM6WXH|Z>EE2g}v+8$6&~Y8klBt`w@X2gC!Wp z&{6-Jf~%@KLu}ICR7T-2nsd%>e&7zVNgqO%E_GlZy1)t-#`1N(rbxQiWTb7lCi+3< zo>(NCKlW$_dTo4L_)T|(O1_xCZ~=?f{O_%jeS=fWQ8XR=K9B`{E`QAWqpNDy+jO3i zL&%V5{ty$2rNt0>gWj6U-dhZKEr*x=2Q{aiKn()JS85}339(yMoPd}8v1&&#tptr=c9@?~Su~g(^71@xgUlV>53Ha&h zV-^)|;<$?qPhNqf2^s&e`aE+Ki4!s$fUyHWhLbKcty3YE#P1X;Zn0Iwmur!k#?1=+Yl zPB21=Cnpm09GSU*v|r6A1$v7O-(X=saX03gVJF~^e1V9l0@*(D3BCoayJ<4LMUL2b zdOXN9H1ehDmydrWixK-DrbJ)*>YFA?A>7CjZlG>cFL(M9I$APwp}v_&%3$v( zDVU%GUv37zP*|JeZ{HQv`81aMu8??Ij9yNM(zDJ zBjqR@2jK?Xc$NE*CY&1VP<|*%X6$ug)xvMti`~L~wOOhHCNRMbW<(YWgYM@r16LL} z37LiV#uv;rvt1E~6;nvV+!}mKj4mNL&v;MNLKolx zmx%&dC9$^M?3-VBh=T)Q7@b$-i^19o^dsr>iTr3R`pF~e9&5@7(@n=UT3OFEhmZ<) zPY(-FW^ocZaSuF9X#k7&&nQphm8_TM3Ut0#9z{UXfZ{)}f_&wR@^0MtO!00Gy8QH0 z$g!|rPIBtqn%Q#?AtVvetb>Ax-nxDrn#6Eoml#zw4c6A4x$Q4G=L_`0Qinlii8mlf zkmu0z8fAv`%Wt9n|7Z&S*+474l2aeLn7a$L+%-dCiBDOw!F-PWybW08yy2#FNqA+M zBXB4oN9pGYnV3B`?Z$rWiQi65n!!Tq->n9b3YTjG@7_ktiC}&3% z*xFJwhDRzA;x149xbfMvCKACR-)l#3n`A9FiT?|(oTV%K?)Y@~n=uar%mYbhUXo|J zlTf8|StiV$Xfj3AOl7)lM*cE$AB@@amJuDYAhq|Typ6PlY;=F=3)37KuwoaBCP=wc zeLDkW1zlK4o!=wIBXLTmS;C*Tv1w=}7Sf?LVBxrQYe~k4siA$;kWZLKFjM~2l-Qys zbrby8DJ&p;Cs8@?`(9OJAzxo)P2Xw-xFw1L#rS8${qL?ND;EDA_+56eMOpz9&F$s2 zk{VJp~y~Nw*sy;^QnhF^D0qMdWYGUIwozO2;+qf3neIX{BZW;xjXGB zQQYO{*C&>~g#uNAk9GFM>#k$xkMy6!KFR5Q?2S0w!mOEwOIDaUil`rBE5RvJDQ#~D zVaob_5T~NfJvfHL8;GdP!bBJ9UuEu4*B)+#>iwZBt^Nn9z*%5c3>{S{O;SqFX%ze) ze!@1Cj!ARGZSrFSZyDb=Tk?Iatm~kfWRnOWLeJx~hTzAQ0+CR6VMkER)#c?4u9q_u zP2y9h=xix$l$3hVfwVNsc97JZyHRLnd(QKuP{IhCahH2JrFP-by{ebPVE5DEsrP|= ztzOGfF!Vh6ktQB8R&EBZtTg@zkA^mG%yj~1!ggc4_AuEBi=<)b_T8@b>1Q)E93557 zz?sBEe@gtN)Cv@t`KcU@Ye#s1#%RovDp|jNvxB}zhxK^t%)mpHC}RFI(+d9LTF_GJ3#nn#(6zghE!<`|hQKvf zOtNag0`U0VKVS-TF&!}Uacv5(7ihI4!`&qg=IXo$u8k z$mj(FMlswK=(LS(90lZ<;52)p6XCnR$w7*Dn1NoGm|M7iXh^beb61v7df>k1tB=Xa zQ13A&ifr_IU%*7ndnnJsCX77+b%#z2B8q2V)Oiad<9Wx|)zUcJ7nNnxbvZM}2|k?9 zbs5aGf_Zv+IoswmLU#Wo_PBu=5WyB81I8IVbK4!KX0isJ^A>(g$KTwlSWJ1F%uc6< z8yMmbS@6>plJC@ww5*>|2`BS0+c4&K(=+-6^a$O=#nzg)?JKF zhCxwDs-?3)+vlO-|Ki@x16%gNDjdf}UNeOlUl%rMa5>_P>u8AeltqWh#59d!oe@ z)50S?`6JHVlaPu!^XM3uY_6>2fn|y^Ekof-`*DBpa*L8M75GGI+`(;f6gBf_cH4Yl z_FjG{XI}1Rf1g@e$WdM2#@1bvX$d1iIj_@eL}(&GLi6G#*FLem_RTX_==@#>Bkv2E z$KF8RU3F6!zD z(6hxgI#~0fwsm}(XQxUvbUmIa{=dNr`v%Het@9P&0aIqkh5i*)?KBA6N^^H*!DMf2 zQ)LjN|77#QQkn#bx`bG>zCOa-z)Aj$-KR$X zqrEHz7MTD$fW;NlzH-NkB%6UgxB%TLdM)v)1l{GVPL3xm6lCy@^+ zV>fFrfj7W?%P!)uVUvRW_~RkS;=GE7Fc({N%6}EHu1HjLz;5JZI7OKQnEsUk&}-&D zQ8ahs>0BRr-TBy)73d;+aQhf%4RvO0W{@I#l*V0bwW-n{R(7B7lA+eu7sj`{YVRMr zZD6<$4+>Y?jf{Za>C@|gnjW^aaNN3&i@;s@6iX1OuE1ZYWylePAkq32?XKto+K3C; z%RB;F$MH2LvikUcaH>A~K){-!QZ!S-&y}0!!yhk{buR0{sA+6qd%M1H zbkeL{a|2jdQUMSw?5=U$r3i31tAR!r7l40|qJ{6wVmZp$Sn( z$EIyUOYEj0;~Qj@L6(PHMAW;r$Lm&4a5lo~MV@E(7v2j8>4{?5UV3d3Lp@^J!Na`GGZYQEQFb$Nk1b`sqZT~_8UO&g%(}4OqS(Mg5hs(I? zY>!3?u3-zajbKeRc<$VjfT5@FsH$)xQ4h>w*TY_P=3Llx|jhcmGJReZDo7Bg5#w0yHk0 z@@ttQH93uN+Go)+BXLSZZ%q5LfLtr&LY#aaJI>AyTRs#0!})4s!m2Ow*qFL!F)S^u z3&@~)%HAl5F-?D!1~bxGfai^6y8mU7gorBfW{xHTCw^hkrUM1y!BtPsM0OB+wz$v! z+B3O2+luQ&tT?QtbL?Rq-Mn$iqIF8+PR*gPMDzWkdHge&Yr^XJ@z*RQQE;I4eZ?W( z&Y^H9vnD%}!e-93XYmIX*woRYK(EL8b#IwBb!9XrzHd7{Gq$2zpFFUGf3+~xH|Y58 zWLiDbeSTk1Upg!Hi))(WiZwEx5Q~9PC6Gr>Pcv`ZywryF0{Dg~ zKc!lCD@g5%GJr^8)&RSR!7KFBT)#r*CKI$y|8(PLPfDt9Tg|-+CB3?b z1b4N}p8$P^!73IPa-h7D2LIR9_+?PH21d4V?RHSN`@r0{S-?#GZxwsG?yB#NC}gbh zcOo`bBH%8%0d&ymaKph|3TgBsPHG!q!L_F(!0!CBhIPou1rFyWjeM3KrzTp?JD_9t^D~*B$1SNPKv>IYb;BbnMtKF#t{O3(5Q+V1xjAYd1>F zN9#Rwm9^RyW?P%E1pzhbw{WnpC^9<>y-O$x5^LDKO&nA?6Z!%wKyvevw0#Dj}XWp7Zhb@c|i$ACwiv zM+MZBr*Sn6p$A9!5mQ6qi|~WLrj~RUMSiKa#g1Ha81Kv1t%MtF!K4bk3h#Ufcj=8B znks5L%A*(^{?$}47!Mbz@!JZ38FWN2{$2>Ix^JmK2ZN$HK6b&>RRPVs(XydmwMGhS zKdAp<(=8bCTHJ5<0NxHaT{ljvsDCdOUXI!ipRy##PTPJlNh+OD_jU!Nt6h5cE(S8Vt>_r-S&GiJM{`?ypbo2`i$7K7(D z(hO=^YBIeR9AL$E(@5&r1|}kE`%4SVq3g{khYIRe*>eyY|-)oO&$m+L$ zUpeKf^FBRi<>-c4$TFrM89%{t5fz_nfv=*%&eN-XIq)-F)`2er^<*dY}(h_ zBrpx9IN%FBm6U)SGHgtz3Z#57K={$`tNtvet}ePX0)V@BQ+{TNTH~8YH~!F!ve>pE zdIIEe1W7%|EuVCe$}^~m|7(JuxQrWhcYNzldmpc?PW4Vo2$!vVrXqAA?l}N2myxu; zb=eQ3LgIjQh>s{`@&a@JJMbQO4tsaY`Lh4EuF@)?E2IIP%AazSfoO|uXMn)rvZx1a zAL@TMnKi8X0b8}8&aFng7w1PD zY}qIv=kS;4az31LdVq%-xza@5$+m=}&dshFCGX13lges|K)%^Vg&|ir1D<)IGHE2v)!;{uOT4>n3L}$GPitrc5DN z&;fMaD3EXjQsKSceMVjp>}}KKUsCLef*bvS6RrFGQR9>dszed7?{~vWn7+QXyGhId zko_Om?ev;^626NXok4o9+ld)c%TVcR+`j6?4}2>~-57zK5t^mmDT+5wYn?aXoOH!v z94rA~QaHoB%qwSCL&;Ygetc=HQl}GU@wy~P1$L|AV|Z@w*EJ`5DDx;$7D;fZipGog zA%nhi+S=g)ud%n~L?r+$Op0whqTa}2+)z2XKFbK+eP|YRa6P!YLDsFs53X{o@%EUg z{8iPJfXRj&M67nbmoUPD#o+VDV7I<<$dMENrxw{5pzhRUOEu(rNzp7b$D|KMw`_F; zBOn5XoSgo|ToZGZ3o(_gt9#$JrTK6@p5Nhbp+5fSA2ry}SB^Q=@j{hA3E2^LL=F(ow zPOWc>0)=IJEB65DC1L*7`udh40+V_H2ymA7a>gf+fVI8M4GOL?WwNQ@j=Ela`=y~2 z!zZOt4ezHSotp4IkQgR)R^zL)ifT`Kf9(14(9L`hV*4~LiANHE*FyT+#60-wdtZ#i zCQkZoo88`eR0t8?>~MXS9W%gpdie^zeVXVouc`-yMgzNRGEftCeP(i`LrF< zZL$?zBIyv*2m1H@_g`{b6Jh9JXje6kn)gqhLwhf;x23q8jIkoTqy34b(cT<+<=z5n zc2S?_|7eDJHm7vvYz=w}lIi#W{|{jQqX3f zJmzB<>vMdW>Oj^W?Cp+a?O^wciB>@N{~j6Q{Mc=h@v1nMZ^@L5g2l#9BmNYl(&@@* zeSUJ(6YrB(XM&Ya2&0A+>MUeHy$-w+fc1m;)M_tPAyrM}U|+X(Zd%Df$1=bJM1YVe zQ=D^r1<%SI=h$smm9rYT?hL|=|FO;gsN{u4iW%R!Nv-qY%1Z1IW%8&ICHaf*@h%si>A$m6$B5y#2aO6@+M5H!fjgXo=a$h^M<<9n zRf0|m#>S^zdyDwb0V%~lDUx%}S|M<>@RILp*IIxt$PdR$jOo`eNyyF!Pb=;yG_Bu=qp;r0cQ~&-+H(VU&3U}wjPfO*6&+idJFGwk3-WIIZ&{-#dC-B`! zFiHtYn4*54gpi+0UAxobL?Rj&_%U>m(_zQPMH}IM8N2pl@}34FZg$ z$UtW8a3%v$16FZ2@JPdD__8bE!3^mzSom;MIS*2GlmY$Am@0HZv{sa#^=ODYH~}VP zVN_t6BAJZX`T=sy0mdqh4C50I+Kyh}`E(>My%6Mmu`@Mg0Ro)7TR;*TTId;XZ;VPW zufRN3fGdnZFgg{HG%o+jJW^@O4kZSRUe{w&Sf?m7YMaoo%{cHh0028U%^w{or$5?) z-${sT5S_eUvw%Rr>LlpWh6LMnS-lwrRP}JJ?4iyh-?GU z68TRf_Lm5MHINj4P&qk_-iQ8B^?slZ2ZII*cMpB&K<(|k=%5)J8L+CzS#BdRZ5u;8 zd+#A?aZ;gx^@<^ip-!=4<~UM$Br+nkr$oY%{!AOJ$pjMv9RIgKp`+(i~R z8KMuvzeg;byD9+~`@<6}LC?pMz532=s2uRkI7A+fo&z9nAQ&AE8bnrqx-rnOcqKBS zNiW~G$EFN_iDQrw+&D-}YA)j#)*r?2MAR(Lz7*mQk!P#MH$Ku3Ni3gdulSi3iWT4! z=6<*C-iJm-s~QN3VU~fB|Ir5L|2vX8DYyIEbB&BQXq%1ke|2`2VNr$q-kzWvM7jh7 zq@)ETMx{#-h7zPjy1Rx}IwYl$8l*dfp+Oo%K#)|ryXRe={npw0J?GljJM+OWd=Z|t z*0cW4@BZC45f+2}14ULy2&h@@4JZ)zY0MXrnHR~R&`@3@_n%gVhQkE8n?LcGe|Bxx zRixjPad+JMMecsenJ~e0(&zoNza)X*$XCB~3cr71CV&N-@Nn{KL)_2c zB>N)c;!Wwh$`UmXi*Vw3jIS##N`etWhc5_3zvP~u#ap!--#rLtP3&G85OAbV*C|jr zuH{DVPR_~(0cH&<$E}-~s3FANT^55XG%T!IZxGL49te49gVy-M#a68``D4Af6{r## zy9*2}i8OE(RB^d;Io%U^I{pkZq<#oH7JeNRIl8qCrHZsVQTs(^9NP!}aC&M*Q|Ws- zQQ+r?I&bs1bqfye@H3U@HFG$48Xdx4wX@6_^i*lx{rNJl2B?!H#}lnCy?k7pPxO>K ziD)ALpfBhW6dVcQnb@% zjh6c_9Ek6|tL@C1P-n9qko}{v^DgyGA~VU)faT(BV4lUjxtW`mkYgFe^ek`BY~P~VmI&0d5!f09E?=3>j|R?riYi>1QOFEMmmF`*dwCi zJ50Y=HtF|NDD$qhCPmpJSa&!&NiZ?P?-zr}q>Sq zUs~*Zpn9DfDod%j*zmqwN!ga?TQ{C!r?y&RrsReOgeij5!@XbP2AUTaKy~1!iT9@WP?hvsLq+ zku0sG`BWV-WVQFZC~059)becWE_}>x-8Bh6eQ-C9tX6mbVfsP*!bDjm>UdQ8_)D7< zOdB}ImI8w#9F6zT&4r2}b6L0qh%zH!Ew4>#sZYA?^arp%&ykjQ|Lt_Xj;GT&kxnWj z5P~C)zrm++Uh*T?US~H^TR~>#6@K<;1HJRukPI1chdk&KpD>?mTHOd3;+LlzkH=cr zOZgCBHylQ|`tPe^3>@#Qiq22LN!C^UV#aGqvMJCyWVZp4EiEsFA$I?tZx$&~r%Z#c z0@FH9aKHJ6o0L%*Cmx@lx4gbK0{H)(eq3N!YTn*!bs0?lx79Jj$xEG>=D5xNyX-$H zFMXSK#KE`sLw_i0YxS%GSHSU0`p2MdzpiV;HG!1NZXN{gYu5*Z<$<$m<14OZ5hu8T zQW}9{){H{zL0LY$vH@akOHWi+bddY^kZ?&5r6Iu3=>+VuOY0fM{3|+=^ug54G*Ff~ zR2MNI0&Fqto_SF6CDRU0@#MUvh^WVm`qMxAG`$S|5Y%KaY)L95RX96ETbpvgR{2LB{9-No@JltLpRgD%a3#-lJQWN@!BrD zpfl__Pf+a2@qlAG(xqpc;Hb(5t%86dienv~?@qPDo8zA}OVjOFx6oPJ|5`KSrTkK= zsT5y5NvX~raw+jAK8cgDywR}0I&@h;s4pfp9z#%C=PQ~Zn(R7M8uiV`ktn=@0K zRr+w~=Dh5cK`xFw9d9~mbUZh1$nvr;1E|@DBVT8d3R-WQdv!~uOjZ3{J!Tu!)m4zU z3IeiNpAQoUbRKbDOztRe5F0#VSUf(~U#dhl8qLwwF}PDvo@blq6D zX=A4nMou|i?1{B2e+2w0v!1TiiecusvZ)c_W(TOBHarWZe zjxmyAETp^?4`?Eyee#{h_|LaK23qR>1jFcK{09uP9wp13oiPA1G^D3~6~`J?)V?~# z%W+>;DBxG#HJ)q)x0g^O<<}P1ft$-;hKO!XI57+u_%suh822d1h?lc{wxtBM#$nY@ZD(Qs8O+q%S#&G2TK zwR@3_$$|GFMXBknGm!-PCVd*mTb(>@{FenL2gSh0X*W)+lmS-{YZ`S9ZEIH*yFn*~ z7moBwjAjH1Y{GEU?_8-WjWH@J*jk}PwrpL1mdnua(zgJQPfq=nxMZ1hITZP0>i!cD zf=aDY)*>{k&y5wtz>f7s5UdB*3jKlp_IUB2#%&wn;CmZJD`L;oY)q#$7QYAhX`tY- ze$DqNj>Ru;r#TPb{sXNUJ53#-avT;my6Mafhv*piZ^{!(ki?~;es`T%MpqhYl+RJ- z#Hh>mPbd`)C4ZX?N+!o#!T}TiHC3>U=nkO_RKfwxg(+K@sz9Qc=d^SY6QWf4 zX?M~$`$^|-Yfwc}$3}}rEfmG@4;`x8**~Pqqz^7}uH>F6{4GfS$sQDogKyj$Wp$g5 zb+cosg6>@qRAXCqRs|)E0^9Py|yiXwyM>FRBd^(eXyuq zaf@@k`~^VwB_XfK@ivCGQ`hT^}J$SuX+*xTFsXra&1oZaVF zwK^`GQey|=NP3@Bdl=bsle!J*3DQepHD>)Z+5$ib@OWxIA)(qbdr0sn5#n@VCW=U_ z1dN%xRyjF2ml$XiL5ea^(b(e_=$*+Ol55w+l8gzop0{RW8@CWGd8r(|bI!s*3EAmD zjHl9Axe#_f1_=nDRbf(GLo0Cm+t4w>R(ne8zHzk)hd@qWf}$$aTu-86)!E|)D}ok@ z^-+mIhurvAvuZF<`LbLMfMbsX!2XBFi?{Zkw8NIIvTXky)034tesE9o7lMTd9t@Hj>6*&BRr9oiReKfvHz_!5Zf$oTC0Ek#4gWp!|Su-hIkwwnOr9*b;z6z`^2|q{B4V* zZb!D|q|{+JykSe5o{E->f*Zf_a?NLtni>l^h1_&D?g(Nbdil`G=-yY%TS4k!Y`+fz zO>~(?VCrdPGN!qFy?xylst{<;{~4PUu?s4A#Vfz>@Js(m;QYqBAJw3}+4^k=gC&`S zv?wA79E_1r*~0x!PUl>|WP{fMdm9`{h3L92XtfD>ncM zWX>$M*SeR-(P_vI>TIX;Hj2Nm7att`i1j9Um|WWLmax6eZ;&FV0*HbN5dz!aoM19s z=D6a4RiD-S;#BEM((?FlUcGt@l-sHk{9#V_G2%wIWJ4TPZxh`{V60a zr$!?i4`g*Wbs|Em_y-}Jb%2QgVH!^rX!V1q4~uS^RdXWIf-U||ks!NYzwBpnH^TYD zi{w5qC9j?IbP}s)$dWQyPTz795m2q3)s4`N>Nb+#Wx|+q&xDb9XHd<*^mjg&1lG{L z&*C~7AXfqjx5Mkx>;5f|ji=jb^E8*mQu5qhquHFuQmPq|lqj%Gkn&vX_^k0TvG$dW zCG5y9XkW6ZI!f_1`Q_5Upl{TP#!6DOc_n#B#!))YIjEcWF5RDrqBA({SQRhge z!|snxR<6g?`c_NKU8?OukMK#5IXP!lgm8ay@r2cxzE*)C;S-pK)4`Rx1E>`0M1(H4 z2@Il@#GRouTh9tg?=@Uh+*KqyIOrO^6U)Y?czo9|TIP@Gc~zpLouu^dIc;8{7y@oW z+dnF!z9j|t3K)UbvYU-fUJ{SZ%}py)B-xGM^~Zeot6qkPH#&1&X!1=SUX5A6aP5N%OsA?Ox=>i8*Gt0K61SUm2_0|*$eRo70``bBig)J-PVo%gN4C6X0&*n3T81`778cB>pZ?>3G8l}!(RJB+xo>~p z;k`OmP*zbtz%IH?jD^(`+1GP3J<;c$6;Urq72X53OkdTo%v3bZb6$z4jzR(AX0|F& zsqSqv9iPqH;Z?+!V&oSP5?P`G84~9=Pb-N4#tLT=dTd3xl_3&Do(wl3MDQfmpa^nI zQBMl9Q=l$5Ht#(W9`s%)NhrizAYL7gaG4-+$*)Ui1vB1^O&JB)5gzP1EIJSN5+W?b zM22I32m(A387@;{Pi-p2yBk6*fs zc5{ekS+&c{A_hNKd2FV^m=_eUCDhV&1ePg}UEUcH+J2c1T(&ba)28Pj2a4t}otu<; zR$*Ux1@*9w+Kf5Kl`Q($dODmCuSyJ-4Q6H#%%z-W2)%p9+UAN7I&6k#3PQAO@xauB zUlBmlxv30w;IfzmFSOr37{4(L7m}}$OW)EdZ$7OD03_wdw|nP+^#m`}y2lMFUi7za z?f$zv)hHvrh+jN29<*#Hz3-oUGDi9VT`T?X;q0=`?{I)8)}A)G@!mY3su*jqziJas zk$8;JJtI=4!z*vn-ZbvpQIGI#GjKA<(c(-I1>{6^5G}Z-1=ftn2U5dnH`D%zFB}Ng zOT5(b9##M^T24#6kBfR4;5}{l;x%v>eRtDdp^r&mOSd4>_Ax}Xy)(f^cjvj2Pb7v< zBIuox7OtRwpkgQ>_iQH(CBvKZwwU@k&1tdp1((Gfq!%xg+3M!=BheVN z0ZCyN@;R{PQUtLYc~Pt|Z8%!YeAWmXeV5fo#l+RU(bBvkz78`;vG^ubcwMB4R7y9I z52t{penv(>ByPqAAEykW#Mb@S1RsCJkvRQ6_?Qx}!y8xi*}E$w@+uBu*b_(^#WKX< z{&Y2#@9>j9`)58Jf|mG_&1T+plv%9Qxos8BJQ}qcyWWSGe3|WIAdfvZo2En>(&_6R z|J+2cK!D#nR*;&Cnk{hw*-|dQB=JA@b~Y!8AP18II>A;tYGgbp`O&j{w!=)k3Pats42f^t>(5{EHwC2y)D1$QjmpF z%hl<0;GDhRM#nh!(xt6>M&jQ*%fsMPtFh@K8Do~Wi2zjtzQzyDZ~|E$8LOUS_J}l^pAd*iSs4U59*1)KqN~u zto;ua-^M{UQe8UU-llNmf8+SL-eb-L z?0QVeLmmN#zzN%sP~TtX1nNnE8;Kpvkb?}Fg_<9wu~|g@*q%2d*id+QPk`TmO%Z@W z$6ylW94e3%rwI%mE?}R=3S=&d)42f#EXn+NEEw%HrTT=J2*QXivMKl474F2Kf2zv} z$nm0Na=>BK{@<~zlRh-IsNQh&^C=~gjy_o9;_mHGW$DtUZ(I)Z*#ioopu`&+V?s;7 z4@JL*fUfq(4aSp^`OWpz;gmm4xfLS7a0uf1`j5SPpDMf=WflvzI$Aer} zH9rKa!wnNHoF6HZiCqu8n#TE(WKR8@gad}IEmwns?+(J(vj^7$T~d6nCIh?}JojdW zZN3#4FEDew7=yPGO?p(13ID_HD*NMLQLNxbAPKw0)1&eJ`@dw8}V> zMuYKzYNd&I1R?peSV?!(i|afq^!v*X-Be)euq^rRsZYWJyAJKE-#Bf%ck+9@1!JwCA+v z*wnEpc7qg1H@5SGnA21M2LlOt4zijXJZ4t%5eXJxiN4d!zN}#U;z!tcwe{MbVID*G zbT?O`gX$!eVbW|Bqji7K>fPOgE4gtmWYmFFS}_yO>$qqRStF8fv+8WHkQY^ z9S?ifGbGCxi>EF0V!=H@b^`>()1|`Gm{ct96BHwqQl-qQvp>j^kmzkxr51h@;4=&0 zWROaD7_$7^!_a%SCIIVOfqoMA*Inv%#Jf-2XWCI{o`{uK?#Xe>Lv@aaRfYO&xzz)v zU>UkE3dY`RX*xQ!7>Y@(_n){w|G2U)~1rhjbcE@x3u`Z`Vv0rpySdzkU!- z(j}*X0Q(UOOg;kH2bRgmK#hFGk-)`Y=2$520RkUH!@>9~Q`-<#~5$N_w&9A$3*-fMwY9Gt;Hp&!{Yc zr>cL?if+d$s-HtIP9R?f#-g^|-^8CM-!#=rLOh{T-|+7kayWd|06mWAx=Fa(IR{>)zoCdS zZsKL@whKWT_?O|P5IGWKDf%h8{>5@0az&h>KV{V^XLJ;uDs`Ka=0rae;O+2I1semVT>N36FysZplgg-YS4q0IB-Khx0FH+^MVdESdD7RwY z+9C3Z3pcohK;_%v-asYli12=qThfT^-u0Ql7zXIC{Iv-ncLcWqW4LqphMrBv5R06(%)pC3eynENgzw;+e zL2(Kk{;XOj8fe`A>QrZJpg!qZ+?>kZS_u+I0iAGaLRKYNiq5E?!e#?*J8joqH28L_&+|+N;UX!?-(DHqO-^+4Cv>VJc@Xu>V^X4v#-U3n3WdR;si)KDs`4P;4m(TSA&eC$@<$iVV#G zj#Y9}h!XF66oDMT%enMwDYSa}`Oz!T!Be8`UHHfLm2QIZy8D?$>6#uMdNDjaJ@4JT zMt#(tmbKtJ(rG9^Dler0k~l*~)56L}myvm(tn4tIvY#;_Ic(f!=7%==^EoQM)h9=n zO0!VMvz2=>`$M2b^j$>&5X&SaUwQATYG<@Ej!$oV7gIjs}(Zkm=@hurdZ5DsWVDC4YM^aZoNV&L#{_Uviv`*e4 zKCS7|R=1|U0huQRo#kR4V!#5Er?aOzX;~$9E?tk(Px<=egt%-_regV2)a`C(wuE(T zGV#bpJzma%surmI+l@_S`zF!n7No17Iq4R(_X-#80zgD#{+kLK(M2)j_vuWc&N910 zdSs6`H`9I;Z3Bn+xn453wI8Gw+j=iv%SFq5jKiVynRD>gNkM}97>?`pWca1qe;UEz z8sxYLlQ@SFzE@U;*jYaAyW4*R4vv(!e^5rkjEuy2xL`(%ZV;7+kNRu1AL3U7)Mx>V zrW9*O~#jZ=uS_U$J8 zMk{)I0=zSt|AY845A}3!3L5LAM1&R8`_+vek3KbdBOgY#uTaA#-giQUi*RKgp#nO} zIonrKb}BPd%Q-)9TIs6`3uXQgiiK_p>AB}2UI>&}Wh6TE1@}*5vBtgi99g-y=H@Pp z{X*EPdfBF1yjEU;B;<$S{N`>aK5)1pc<*=YT(Z#{fIN*j$6P}@WVh^HsX|db`U%LiUVD(*Mmf5Z=7g@{8UaCnWcDB_5 zVF!UmuDz{ZhK8^bjtN_ZhS*K-DE=J57i1D9-L452td~!p6235nIb{EJ*ejH_H7c-~ z0hAQ~Fdqn>pT8Jis4u%Iloqr35xWok3Rl(%SP%kh;xOQDyiT{VnadF$>UXPl`wdjJPwJHZE2LslO%0QJ*5T$(a%#h<~2c`fa0cBrdBaF>!KzrNFe| zZArQ5Ibhxi`V01SF?lNyY-~QT^!JG6ZXy~>d*E#;z)Es;y&BdR=+W+TSCU5XCs@ID z+N0A(@NU;Ad~`AbIDg#TVt)2Ax&C*+=pP2ay;N^ol7>3EkG`6vG=kVSE|<$m6F;K_ zU1T#ZdMx(yIqoF{T+efr2G-e3m-A47W%*T+^xaK%K-=Tx!+_%~&6mSbnkN`C)WZAq zpj4)gF1I$bW~3s4=V;41eYOIm@DaZ(*cv|N(Hu8WVU>>LKv*a;sb=d-dd~B4{0xim zIK5(fwhS9tTJz=mwOoifa9jpm4+{BuRH|IC)e|xAeis-2$X=fT$}=j6y+hp2MX?&t<^%oX0}a zFa%%idU~|2nMSuR!dh1LS)A$n(agGw#r8^|?WT*6_(tjzAvb6?JSH~VW5#5FwGvHW zEk?teE(XtG644{_ZCp*I!e3)_(-K#uZvAbLA3Qyoct9$x2$TMN=ut5FyIYU|4i+s! z`eo9G+<&>fJJgRi7OzBw#5!>=N)Uivc|V>dW&6l}ez)NH)-13XxDN24fveL@$3?NBoW-)<--3(204}~_n zvB}9a4Pn@{rXr`28suw3kzoE6MNl^aeYafUFDZ(1^Sh}1>J$YUi)X`V5(E-5QbDfb zg-|l(f>o?v^3!0wT&BQRY5I}&vk9XvYJ}#!HX+M=Jx}KTk5K0&46&Z=tfZr(o@nFf zC}jB*B`d;zGanVWXf0YgYGSgVWbK(|X^bom$a#p&65p)!^o{N+V29WnSE_tWVCh)8O!YM=B3S(F zKz4TS@%cXH#%{jpP^O`rfd*nPYXo@35x*rE-JE;e3BLP%kU$r&dSjkI3t(3=s;h5115J+Vu@QpD+UEm}hcH*YK57TDJ`| z4N;OF(zivXq@tUj2P-_6F#$PFmbWwa6W*(l$0f|x2k+mt7Tc`4+?{v(F?b)$S{{2X z?YKx?&%#R)*o-&FE};^Y7ei(-UMzzS$f*Cqr!%#kOm&cr_L{Z8X29uQ?VgcTn;A*kdyqp>J^z=Ir(2~{oRt=X8^v~*PPZC8?RnNVyDk*4 zV*Ph4#3;(t0#m@J1NkM1F`yWg_qgq(Ap6dB6>Flui8fP@F=mu_dJIqA?!%~XXPlou zoKxd;Y;obTPdX+VT;i%?Ccsze#A@?e>*It|?|r}HW03w@`%W3eI1hW_%U^yBCj=8e zMw~MVqWvZ3;*BbtobwbW+h`4kM3C#n%d%y0tl|-mX^~-gX9zV)qc7{~{@@*;rO;jI zH|OG&PF-VhRscz+L4UX?35Y?R%}{g1lJDL!gX#P)fTXDtEM8WZgWpp&_nO8@(OHb2 ziHuxJMdd6_om*}S)5z0gm8}Nri;;9~($>cb65MARxGL1+o z@jl&e1wueGW{Zb0T6o3UcG=O1Aa}ZyF6fU6Muzg~z?V124ec+=1Q>5_`zsk)#miH3 zbptv;7+p?=N_5^w11UzF6oCM{VP{u@k>S|6GrLIyn>6K516S`ff8Nx{d*D%0D_`(7 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 literal 0 HcmV?d00001 diff --git a/Filtration/Resources/DropIcons/Triangle.png b/Filtration/Resources/DropIcons/Triangle.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8d6d939c114287c5662832938f22fdf7406fe1 GIT binary patch literal 77169 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