Replaced all instances of "LootFilter" with "ItemFilter"

This commit is contained in:
Ben
2015-06-08 20:17:34 +01:00
parent 5bd5ce8b0f
commit d48f7a58ec
45 changed files with 539 additions and 534 deletions

View File

@@ -9,7 +9,7 @@ namespace Filtration.Converters
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
var test = (ILootFilterBlockItem)Activator.CreateInstance((Type) value);
var test = (IItemFilterBlockItem)Activator.CreateInstance((Type) value);
return test.DisplayHeading;
}

View File

@@ -130,19 +130,20 @@
<Compile Include="Models\BlockItemTypes\QualityBlockItem.cs" />
<Compile Include="Models\BlockItemTypes\ItemLevelBlockItem.cs" />
<Compile Include="Models\IAudioVisualBlockItem.cs" />
<Compile Include="Models\LootFilterBlock.cs" />
<Compile Include="Models\ILootFilterBlockItem.cs" />
<Compile Include="Models\LootFilterScript.cs" />
<Compile Include="Models\LootFilterSection.cs" />
<Compile Include="Models\ItemFilterBlockGroup.cs" />
<Compile Include="Models\ItemFilterBlock.cs" />
<Compile Include="Models\IItemFilterBlockItem.cs" />
<Compile Include="Models\ItemFilterScript.cs" />
<Compile Include="Models\ItemFilterSection.cs" />
<Compile Include="Models\NumericFilterPredicate.cs" />
<Compile Include="Models\BlockItemBaseTypes\SocketGroupBlockItemBase.cs" />
<Compile Include="Models\ReplaceColorsParameterSet.cs" />
<Compile Include="Properties\Annotations.cs" />
<Compile Include="Services\FileSystemService.cs" />
<Compile Include="Services\LootFilterPersistenceService.cs" />
<Compile Include="Services\ItemFilterPersistenceService.cs" />
<Compile Include="Services\StaticDataService.cs" />
<Compile Include="Translators\LootFilterBlockTranslator.cs" />
<Compile Include="Translators\LootFilterScriptTranslator.cs" />
<Compile Include="Translators\ItemFilterBlockTranslator.cs" />
<Compile Include="Translators\ItemFilterScriptTranslator.cs" />
<Compile Include="UserControls\AutoScrollingListBox.cs" />
<Compile Include="UserControls\CrossButton.cs" />
<Compile Include="UserControls\EditableListBoxControl.xaml.cs">
@@ -153,27 +154,27 @@
</Compile>
<Compile Include="Utilities\LineReader.cs" />
<Compile Include="ViewModels\FiltrationViewModelBase.cs" />
<Compile Include="ViewModels\ILootFilterScriptViewModelFactory.cs" />
<Compile Include="ViewModels\ILootFilterBlockViewModelFactory.cs" />
<Compile Include="ViewModels\LootFilterBlockViewModel.cs" />
<Compile Include="ViewModels\LootFilterScriptViewModel.cs" />
<Compile Include="ViewModels\IItemFilterScriptViewModelFactory.cs" />
<Compile Include="ViewModels\IItemFilterBlockViewModelFactory.cs" />
<Compile Include="ViewModels\ItemFilterBlockViewModel.cs" />
<Compile Include="ViewModels\ItemFilterScriptViewModel.cs" />
<Compile Include="ViewModels\ReplaceColorsViewModel.cs" />
<Compile Include="Views\BindingProxy.cs" />
<Compile Include="Views\BlockTemplateSelector.cs" />
<Compile Include="Views\LootFilterBlockDisplaySettingsView.xaml.cs">
<DependentUpon>LootFilterBlockDisplaySettingsView.xaml</DependentUpon>
<Compile Include="Views\ItemFilterBlockDisplaySettingsView.xaml.cs">
<DependentUpon>ItemFilterBlockDisplaySettingsView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\LootFilterScriptView.xaml.cs">
<DependentUpon>LootFilterScriptView.xaml</DependentUpon>
<Compile Include="Views\ItemFilterScriptView.xaml.cs">
<DependentUpon>ItemFilterScriptView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\LootFilterBlockView.xaml.cs">
<DependentUpon>LootFilterBlockView.xaml</DependentUpon>
<Compile Include="Views\ItemFilterBlockView.xaml.cs">
<DependentUpon>ItemFilterBlockView.xaml</DependentUpon>
</Compile>
<Compile Include="UserControls\NumericFilterPredicateControl.xaml.cs">
<DependentUpon>NumericFilterPredicateControl.xaml</DependentUpon>
</Compile>
<Compile Include="Views\LootFilterSectionView.xaml.cs">
<DependentUpon>LootFilterSectionView.xaml</DependentUpon>
<Compile Include="Views\ItemFilterSectionView.xaml.cs">
<DependentUpon>ItemFilterSectionView.xaml</DependentUpon>
</Compile>
<Compile Include="Views\AboutWindow.xaml.cs">
<DependentUpon>AboutWindow.xaml</DependentUpon>
@@ -206,7 +207,7 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\LootFilterBlockDisplaySettingsView.xaml">
<Page Include="Views\ItemFilterBlockDisplaySettingsView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
@@ -214,15 +215,15 @@
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\LootFilterScriptView.xaml">
<Page Include="Views\ItemFilterScriptView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\LootFilterBlockView.xaml">
<Page Include="Views\ItemFilterBlockView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>
<Page Include="Views\LootFilterSectionView.xaml">
<Page Include="Views\ItemFilterSectionView.xaml">
<SubType>Designer</SubType>
<Generator>MSBuild:Compile</Generator>
</Page>

View File

@@ -5,7 +5,7 @@ using Filtration.Annotations;
namespace Filtration.Models.BlockItemBaseTypes
{
abstract class BlockItemBase : ILootFilterBlockItem
abstract class BlockItemBase : IItemFilterBlockItem
{
public abstract string PrefixText { get; }
public abstract int MaximumAllowed { get; }

View File

@@ -3,7 +3,7 @@ using System.Windows.Media;
namespace Filtration.Models
{
internal interface ILootFilterBlockItem : INotifyPropertyChanged
internal interface IItemFilterBlockItem : INotifyPropertyChanged
{
string PrefixText { get; }
int MaximumAllowed { get; }

View File

@@ -3,15 +3,14 @@ using System.Collections.ObjectModel;
using System.Linq;
using Filtration.Enums;
using Filtration.Models.BlockItemBaseTypes;
using Filtration.Models.BlockItemTypes;
namespace Filtration.Models
{
internal class LootFilterBlock
internal class ItemFilterBlock
{
public LootFilterBlock()
public ItemFilterBlock()
{
BlockItems = new ObservableCollection<ILootFilterBlockItem> {new ActionBlockItem(BlockAction.Show)};
BlockItems = new ObservableCollection<IItemFilterBlockItem> {new ActionBlockItem(BlockAction.Show)};
}
public string Description { get; set; }
@@ -30,7 +29,7 @@ namespace Filtration.Models
}
}
public ObservableCollection<ILootFilterBlockItem> BlockItems { get; private set; }
public ObservableCollection<IItemFilterBlockItem> BlockItems { get; private set; }
public int BlockCount(Type type)
{
@@ -39,7 +38,7 @@ namespace Filtration.Models
public bool AddBlockItemAllowed(Type type)
{
var blockItem = (ILootFilterBlockItem)Activator.CreateInstance(type);
var blockItem = (IItemFilterBlockItem)Activator.CreateInstance(type);
return BlockCount(type) < blockItem.MaximumAllowed;
}

View File

@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Filtration.Models
{
class ItemFilterBlockGroup
{
}
}

View File

@@ -3,19 +3,17 @@ using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Linq;
using Filtration.Models.BlockItemTypes;
using Filtration.ViewModels;
using Filtration.Views;
namespace Filtration.Models
{
internal class LootFilterScript
internal class ItemFilterScript
{
public LootFilterScript()
public ItemFilterScript()
{
LootFilterBlocks = new ObservableCollection<LootFilterBlock>();
ItemFilterBlocks = new ObservableCollection<ItemFilterBlock>();
}
public ObservableCollection<LootFilterBlock> LootFilterBlocks { get; set; }
public ObservableCollection<ItemFilterBlock> ItemFilterBlocks { get; set; }
public string FilePath { get; set; }
public string Description { get; set; }
public DateTime DateModified { get; set; }
@@ -24,7 +22,7 @@ namespace Filtration.Models
{
var validationErrors = new List<string>();
if (LootFilterBlocks.Count == 0)
if (ItemFilterBlocks.Count == 0)
{
validationErrors.Add("A script must have at least one block");
}
@@ -37,7 +35,7 @@ namespace Filtration.Models
foreach (
var block in
LootFilterBlocks.Where(b => BlockIsColorReplacementCandidate(replaceColorsParameterSet, b)))
ItemFilterBlocks.Where(b => BlockIsColorReplacementCandidate(replaceColorsParameterSet, b)))
{
if (replaceColorsParameterSet.ReplaceTextColor)
{
@@ -58,7 +56,7 @@ namespace Filtration.Models
}
private bool BlockIsColorReplacementCandidate(ReplaceColorsParameterSet replaceColorsParameterSet, LootFilterBlock block)
private bool BlockIsColorReplacementCandidate(ReplaceColorsParameterSet replaceColorsParameterSet, ItemFilterBlock block)
{
var textColorItem = block.HasBlockItemOfType<TextColorBlockItem>()
? block.BlockItems.OfType<TextColorBlockItem>().First()

View File

@@ -0,0 +1,6 @@
namespace Filtration.Models
{
internal class ItemFilterSection : ItemFilterBlock
{
}
}

View File

@@ -1,6 +0,0 @@
namespace Filtration.Models
{
internal class LootFilterSection : LootFilterBlock
{
}
}

View File

@@ -7,7 +7,7 @@ using System.Windows;
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("Filtration")]
[assembly: AssemblyDescription("A loot filter script manager for Path of Exile")]
[assembly: AssemblyDescription("An item filter script manager for Path of Exile")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("XVar Industries Inc.")]
[assembly: AssemblyProduct("Filtration")]

View File

@@ -3,41 +3,41 @@ using Filtration.Translators;
namespace Filtration.Services
{
internal interface ILootFilterPersistenceService
internal interface IItemFilterPersistenceService
{
string LootFilterScriptDirectory { get; set; }
LootFilterScript LoadLootFilterScript(string filePath);
void SaveLootFilterScript(LootFilterScript script);
string ItemFilterScriptDirectory { get; set; }
ItemFilterScript LoadItemFilterScript(string filePath);
void SaveItemFilterScript(ItemFilterScript script);
string DefaultPathOfExileDirectory();
}
internal class LootFilterPersistenceService : ILootFilterPersistenceService
internal class ItemFilterPersistenceService : IItemFilterPersistenceService
{
private readonly IFileSystemService _fileSystemService;
private readonly ILootFilterScriptTranslator _lootFilterScriptTranslator;
private readonly IItemFilterScriptTranslator _itemFilterScriptTranslator;
public LootFilterPersistenceService(IFileSystemService fileSystemService, ILootFilterScriptTranslator lootFilterScriptTranslator)
public ItemFilterPersistenceService(IFileSystemService fileSystemService, IItemFilterScriptTranslator itemFilterScriptTranslator)
{
_fileSystemService = fileSystemService;
_lootFilterScriptTranslator = lootFilterScriptTranslator;
_itemFilterScriptTranslator = itemFilterScriptTranslator;
}
public string LootFilterScriptDirectory { get; set; }
public string ItemFilterScriptDirectory { get; set; }
public LootFilterScript LoadLootFilterScript(string filePath)
public ItemFilterScript LoadItemFilterScript(string filePath)
{
var script =
_lootFilterScriptTranslator.TranslateStringToLootFilterScript(
_itemFilterScriptTranslator.TranslateStringToItemFilterScript(
_fileSystemService.ReadFileAsString(filePath));
script.FilePath = filePath;
return script;
}
public void SaveLootFilterScript(LootFilterScript script)
public void SaveItemFilterScript(ItemFilterScript script)
{
_fileSystemService.WriteFileFromString(script.FilePath,
_lootFilterScriptTranslator.TranslateLootFilterScriptToString(script));
_itemFilterScriptTranslator.TranslateItemFilterScriptToString(script));
}
public string DefaultPathOfExileDirectory()

View File

@@ -13,28 +13,28 @@ using Filtration.Utilities;
namespace Filtration.Translators
{
internal interface ILootFilterBlockTranslator
internal interface IItemFilterBlockTranslator
{
LootFilterBlock TranslateStringToLootFilterBlock(string inputString);
string TranslateLootFilterBlockToString(LootFilterBlock block);
ItemFilterBlock TranslateStringToItemFilterBlock(string inputString);
string TranslateItemFilterBlockToString(ItemFilterBlock block);
}
internal class LootFilterBlockTranslator : ILootFilterBlockTranslator
internal class ItemFilterBlockTranslator : IItemFilterBlockTranslator
{
private const string Indent = " ";
private readonly string _newLine = Environment.NewLine + Indent;
// This method converts a string into a LootFilterBlock. This is used for pasting LootFilterBlocks
// and reading LootFilterScripts from a file.
public LootFilterBlock TranslateStringToLootFilterBlock(string inputString)
// This method converts a string into a ItemFilterBlock. This is used for pasting ItemFilterBlocks
// and reading ItemFilterScripts from a file.
public ItemFilterBlock TranslateStringToItemFilterBlock(string inputString)
{
var block = new LootFilterBlock();
var block = new ItemFilterBlock();
var showHideFound = false;
foreach (var line in new LineReader(() => new StringReader(inputString)))
{
if (line.StartsWith(@"# Section:"))
{
var section = new LootFilterSection
var section = new ItemFilterSection
{
Description = line.Substring(line.IndexOf(":", StringComparison.Ordinal) + 1).Trim()
};
@@ -215,7 +215,7 @@ namespace Filtration.Translators
return block;
}
private static void RemoveExistingBlockItemsOfType<T>(LootFilterBlock block)
private static void RemoveExistingBlockItemsOfType<T>(ItemFilterBlock block)
{
var existingBlockItemCount = block.BlockItems.Count(b => b.GetType() == typeof(T));
if (existingBlockItemCount > 0)
@@ -225,7 +225,7 @@ namespace Filtration.Translators
}
}
private static void AddNumericFilterPredicateItemToBlockItems<T>(LootFilterBlock block, string inputString) where T : NumericFilterPredicateBlockItem
private static void AddNumericFilterPredicateItemToBlockItems<T>(ItemFilterBlock block, string inputString) where T : NumericFilterPredicateBlockItem
{
var blockItem = Activator.CreateInstance<T>();
@@ -243,7 +243,7 @@ namespace Filtration.Translators
predicate.PredicateOperand = Convert.ToInt16(result.Groups[2].Value);
}
private static void AddStringListItemToBlockItems<T>(LootFilterBlock block, string inputString) where T : StringListBlockItem
private static void AddStringListItemToBlockItems<T>(ItemFilterBlock block, string inputString) where T : StringListBlockItem
{
var blockItem = Activator.CreateInstance<T>();
PopulateListFromString(blockItem.Items, inputString.Substring(inputString.IndexOf(" ", StringComparison.Ordinal) + 1).Trim());
@@ -261,7 +261,7 @@ namespace Filtration.Translators
}
}
private static void AddColorItemToBlockItems<T>(LootFilterBlock block, string inputString) where T : ColorBlockItem
private static void AddColorItemToBlockItems<T>(ItemFilterBlock block, string inputString) where T : ColorBlockItem
{
var blockItem = Activator.CreateInstance<T>();
blockItem.Color = GetColorFromString(inputString);
@@ -294,11 +294,11 @@ namespace Filtration.Translators
return new Color();
}
// This method converts a LootFilterBlock object into a string. This is used for copying a LootFilterBlock
// to the clipboard, and when saving a LootFilterScript.
public string TranslateLootFilterBlockToString(LootFilterBlock block)
// This method converts a ItemFilterBlock object into a string. This is used for copying a ItemFilterBlock
// to the clipboard, and when saving a ItemFilterScript.
public string TranslateItemFilterBlockToString(ItemFilterBlock block)
{
if (block.GetType() == typeof (LootFilterSection))
if (block.GetType() == typeof (ItemFilterSection))
{
return "# Section: " + block.Description;
}
@@ -312,7 +312,7 @@ namespace Filtration.Translators
outputString += block.Action.GetAttributeDescription();
// This could be refactored to use the upcasted NumericFilterPredicateBlockItem (or even ILootFilterBlockItem) instead
// This could be refactored to use the upcasted NumericFilterPredicateBlockItem (or even IItemFilterBlockItem) instead
// of the specific downcasts. Leaving it like this currently to preserve sorting since the different
// downcasts have no defined sort order (yet).
foreach (var blockItem in block.BlockItems.OfType<ItemLevelBlockItem>())

View File

@@ -7,24 +7,24 @@ using Filtration.Utilities;
namespace Filtration.Translators
{
internal interface ILootFilterScriptTranslator
internal interface IItemFilterScriptTranslator
{
LootFilterScript TranslateStringToLootFilterScript(string inputString);
string TranslateLootFilterScriptToString(LootFilterScript script);
ItemFilterScript TranslateStringToItemFilterScript(string inputString);
string TranslateItemFilterScriptToString(ItemFilterScript script);
}
internal class LootFilterScriptTranslator : ILootFilterScriptTranslator
internal class ItemFilterScriptTranslator : IItemFilterScriptTranslator
{
private readonly ILootFilterBlockTranslator _blockTranslator;
private readonly IItemFilterBlockTranslator _blockTranslator;
public LootFilterScriptTranslator(ILootFilterBlockTranslator blockTranslator)
public ItemFilterScriptTranslator(IItemFilterBlockTranslator blockTranslator)
{
_blockTranslator = blockTranslator;
}
public LootFilterScript TranslateStringToLootFilterScript(string inputString)
public ItemFilterScript TranslateStringToItemFilterScript(string inputString)
{
var script = new LootFilterScript();
var script = new ItemFilterScript();
inputString = inputString.Replace("\t", "");
var conditionBoundaries = IdentifyBlockBoundaries(inputString);
@@ -40,8 +40,8 @@ namespace Filtration.Translators
}
script.Description = script.Description.TrimEnd('\n').TrimEnd('\r');
// Extract each block from between boundaries and translate it into a LootFilterBlock object
// and add that object to the LootFilterBlocks list
// Extract each block from between boundaries and translate it into a ItemFilterBlock object
// and add that object to the ItemFilterBlocks list
for (var boundary = conditionBoundaries.First; boundary != null; boundary = boundary.Next)
{
var begin = boundary.Value;
@@ -49,7 +49,7 @@ namespace Filtration.Translators
var block = new string[end - begin];
Array.Copy(lines, begin, block, 0, end - begin);
var blockString = string.Join("\r\n", block);
script.LootFilterBlocks.Add(_blockTranslator.TranslateStringToLootFilterBlock(blockString));
script.ItemFilterBlocks.Add(_blockTranslator.TranslateStringToItemFilterBlock(blockString));
}
return script;
@@ -78,7 +78,7 @@ namespace Filtration.Translators
return blockBoundaries;
}
public string TranslateLootFilterScriptToString(LootFilterScript script)
public string TranslateItemFilterScriptToString(ItemFilterScript script)
{
var outputString = string.Empty;
@@ -99,9 +99,9 @@ namespace Filtration.Translators
}
// ReSharper disable once LoopCanBeConvertedToQuery
foreach (var block in script.LootFilterBlocks)
foreach (var block in script.ItemFilterBlocks)
{
outputString += _blockTranslator.TranslateLootFilterBlockToString(block) + Environment.NewLine + Environment.NewLine;
outputString += _blockTranslator.TranslateItemFilterBlockToString(block) + Environment.NewLine + Environment.NewLine;
}
return outputString;

View File

@@ -26,7 +26,7 @@
VerticalAlignment="Stretch" SelectionMode="Single" x:Name="ControlListBox" BorderBrush="#CCCCCC">
<ListBox.Resources>
<Style TargetType="ListBoxItem">
<!-- Undo the style that we set in the parent LootFilterScriptView to hide the condition selections -->
<!-- Undo the style that we set in the parent ItemFilterScriptView to hide the condition selections -->
<Style.Resources>
<!-- SelectedItem with focus -->
<SolidColorBrush x:Key="{x:Static SystemColors.HighlightBrushKey}" Color="Silver" />

View File

@@ -0,0 +1,8 @@
namespace Filtration.ViewModels
{
internal interface IItemFilterBlockViewModelFactory
{
IItemFilterBlockViewModel Create();
void Release(IItemFilterBlockViewModel itemFilterBlockViewModel);
}
}

View File

@@ -0,0 +1,8 @@
namespace Filtration.ViewModels
{
internal interface IItemFilterScriptViewModelFactory
{
IItemFilterScriptViewModel Create();
void Release(IItemFilterScriptViewModel itemFilterScriptViewModel);
}
}

View File

@@ -1,8 +0,0 @@
namespace Filtration.ViewModels
{
internal interface ILootFilterBlockViewModelFactory
{
ILootFilterBlockViewModel Create();
void Release(ILootFilterBlockViewModel lootFilterBlockViewModel);
}
}

View File

@@ -1,8 +0,0 @@
namespace Filtration.ViewModels
{
internal interface ILootFilterScriptViewModelFactory
{
ILootFilterScriptViewModel Create();
void Release(ILootFilterScriptViewModel lootFilterScriptViewModel);
}
}

View File

@@ -14,23 +14,23 @@ using GalaSoft.MvvmLight.CommandWpf;
namespace Filtration.ViewModels
{
internal interface ILootFilterBlockViewModel
internal interface IItemFilterBlockViewModel
{
void Initialise(LootFilterBlock lootFilterBlock, LootFilterScriptViewModel parentScriptViewModel);
void Initialise(ItemFilterBlock itemFilterBlock, ItemFilterScriptViewModel parentScriptViewModel);
bool IsDirty { get; set; }
LootFilterBlock Block { get; }
ItemFilterBlock Block { get; }
}
internal class LootFilterBlockViewModel : FiltrationViewModelBase, ILootFilterBlockViewModel
internal class ItemFilterBlockViewModel : FiltrationViewModelBase, IItemFilterBlockViewModel
{
private readonly IStaticDataService _staticDataService;
private readonly IReplaceColorsViewModel _replaceColorsViewModel;
private readonly MediaPlayer _mediaPlayer = new MediaPlayer();
private LootFilterScriptViewModel _parentScriptViewModel;
private ItemFilterScriptViewModel _parentScriptViewModel;
private bool _displaySettingsPopupOpen;
public LootFilterBlockViewModel(IStaticDataService staticDataService, IReplaceColorsViewModel replaceColorsViewModel)
public ItemFilterBlockViewModel(IStaticDataService staticDataService, IReplaceColorsViewModel replaceColorsViewModel)
{
_staticDataService = staticDataService;
_replaceColorsViewModel = replaceColorsViewModel;
@@ -48,24 +48,24 @@ namespace Filtration.ViewModels
AddFilterBlockItemCommand = new RelayCommand<Type>(OnAddFilterBlockItemCommand);
ToggleBlockActionCommand = new RelayCommand(OnToggleBlockActionCommand);
AddAudioVisualBlockItemCommand = new RelayCommand<Type>(OnAddAudioVisualBlockItemCommand);
RemoveFilterBlockItemCommand = new RelayCommand<ILootFilterBlockItem>(OnRemoveFilterBlockItemCommand);
RemoveAudioVisualBlockItemCommand = new RelayCommand<ILootFilterBlockItem>(OnRemoveAudioVisualBlockItemCommand);
RemoveFilterBlockItemCommand = new RelayCommand<IItemFilterBlockItem>(OnRemoveFilterBlockItemCommand);
RemoveAudioVisualBlockItemCommand = new RelayCommand<IItemFilterBlockItem>(OnRemoveAudioVisualBlockItemCommand);
PlaySoundCommand = new RelayCommand(OnPlaySoundCommand, () => HasSound);
}
public void Initialise(LootFilterBlock lootFilterBlock, LootFilterScriptViewModel parentScriptViewModel)
public void Initialise(ItemFilterBlock itemFilterBlock, ItemFilterScriptViewModel parentScriptViewModel)
{
if (lootFilterBlock == null || parentScriptViewModel == null)
if (itemFilterBlock == null || parentScriptViewModel == null)
{
throw new ArgumentNullException("lootFilterBlock");
throw new ArgumentNullException("itemFilterBlock");
}
_parentScriptViewModel = parentScriptViewModel;
Block = lootFilterBlock;
lootFilterBlock.BlockItems.CollectionChanged += OnBlockItemsCollectionChanged;
Block = itemFilterBlock;
itemFilterBlock.BlockItems.CollectionChanged += OnBlockItemsCollectionChanged;
foreach (var blockItem in lootFilterBlock.BlockItems.OfType<IAudioVisualBlockItem>())
foreach (var blockItem in itemFilterBlock.BlockItems.OfType<IAudioVisualBlockItem>())
{
blockItem.PropertyChanged += OnAudioVisualBlockItemChanged;
}
@@ -84,24 +84,24 @@ namespace Filtration.ViewModels
public RelayCommand ReplaceColorsCommand { get; private set; }
public RelayCommand<Type> AddFilterBlockItemCommand { get; private set; }
public RelayCommand<Type> AddAudioVisualBlockItemCommand { get; private set; }
public RelayCommand<ILootFilterBlockItem> RemoveFilterBlockItemCommand { get; private set; }
public RelayCommand<ILootFilterBlockItem> RemoveAudioVisualBlockItemCommand { get; private set; }
public RelayCommand<IItemFilterBlockItem> RemoveFilterBlockItemCommand { get; private set; }
public RelayCommand<IItemFilterBlockItem> RemoveAudioVisualBlockItemCommand { get; private set; }
public RelayCommand PlaySoundCommand { get; private set; }
public LootFilterBlock Block { get; private set; }
public ItemFilterBlock Block { get; private set; }
public bool IsDirty { get; set; }
public ObservableCollection<ILootFilterBlockItem> FilterBlockItems
public ObservableCollection<IItemFilterBlockItem> FilterBlockItems
{
get { return Block.BlockItems; }
}
public IEnumerable<ILootFilterBlockItem> SummaryBlockItems
public IEnumerable<IItemFilterBlockItem> SummaryBlockItems
{
get { return Block.BlockItems.Where(b => !(b is IAudioVisualBlockItem)); }
}
public IEnumerable<ILootFilterBlockItem> AudioVisualBlockItems
public IEnumerable<IItemFilterBlockItem> AudioVisualBlockItems
{
get { return Block.BlockItems.Where(b => b is IAudioVisualBlockItem); }
}
@@ -261,13 +261,13 @@ namespace Filtration.ViewModels
private void OnAddFilterBlockItemCommand(Type blockItemType)
{
if (!AddBlockItemAllowed(blockItemType)) return;
var newBlockItem = (ILootFilterBlockItem) Activator.CreateInstance(blockItemType);
var newBlockItem = (IItemFilterBlockItem) Activator.CreateInstance(blockItemType);
FilterBlockItems.Add(newBlockItem);
IsDirty = true;
}
private void OnRemoveFilterBlockItemCommand(ILootFilterBlockItem blockItem)
private void OnRemoveFilterBlockItemCommand(IItemFilterBlockItem blockItem)
{
FilterBlockItems.Remove(blockItem);
IsDirty = true;
@@ -276,7 +276,7 @@ namespace Filtration.ViewModels
private void OnAddAudioVisualBlockItemCommand(Type blockItemType)
{
if (!AddBlockItemAllowed(blockItemType)) return;
var newBlockItem = (ILootFilterBlockItem) Activator.CreateInstance(blockItemType);
var newBlockItem = (IItemFilterBlockItem) Activator.CreateInstance(blockItemType);
newBlockItem.PropertyChanged += OnAudioVisualBlockItemChanged;
FilterBlockItems.Add(newBlockItem);
@@ -284,7 +284,7 @@ namespace Filtration.ViewModels
IsDirty = true;
}
private void OnRemoveAudioVisualBlockItemCommand(ILootFilterBlockItem blockItem)
private void OnRemoveAudioVisualBlockItemCommand(IItemFilterBlockItem blockItem)
{
blockItem.PropertyChanged -= OnAudioVisualBlockItemChanged;
FilterBlockItems.Remove(blockItem);
@@ -347,7 +347,7 @@ namespace Filtration.ViewModels
private bool AddBlockItemAllowed(Type type)
{
var blockItem = (ILootFilterBlockItem)Activator.CreateInstance(type);
var blockItem = (IItemFilterBlockItem)Activator.CreateInstance(type);
var blockCount = FilterBlockItems.Count(b => b.GetType() == type);
return blockCount < blockItem.MaximumAllowed;
}

View File

@@ -10,29 +10,29 @@ using GalaSoft.MvvmLight.CommandWpf;
namespace Filtration.ViewModels
{
internal interface ILootFilterScriptViewModel
internal interface IItemFilterScriptViewModel
{
LootFilterScript Script { get; }
ItemFilterScript Script { get; }
bool IsDirty { get; }
string Description { get; set; }
string DisplayName { get; }
void Initialise(LootFilterScript lootFilterScript);
ILootFilterBlockViewModel SelectedBlockViewModel { get; set; }
void Initialise(ItemFilterScript itemFilterScript);
IItemFilterBlockViewModel SelectedBlockViewModel { get; set; }
void RemoveDirtyFlag();
void AddSection(ILootFilterBlockViewModel targetBlockViewModel);
void AddBlock(ILootFilterBlockViewModel targetBlockViewModel);
void CopyBlock(ILootFilterBlockViewModel targetBlockViewModel);
void PasteBlock(ILootFilterBlockViewModel targetBlockViewModel);
void AddSection(IItemFilterBlockViewModel targetBlockViewModel);
void AddBlock(IItemFilterBlockViewModel targetBlockViewModel);
void CopyBlock(IItemFilterBlockViewModel targetBlockViewModel);
void PasteBlock(IItemFilterBlockViewModel targetBlockViewModel);
}
internal class LootFilterScriptViewModel : FiltrationViewModelBase, ILootFilterScriptViewModel
internal class ItemFilterScriptViewModel : FiltrationViewModelBase, IItemFilterScriptViewModel
{
private readonly ILootFilterBlockViewModelFactory _lootFilterBlockViewModelFactory;
private readonly ILootFilterBlockTranslator _blockTranslator;
private readonly IItemFilterBlockViewModelFactory _itemFilterBlockViewModelFactory;
private readonly IItemFilterBlockTranslator _blockTranslator;
private bool _isDirty;
private ILootFilterBlockViewModel _selectedBlockViewModel;
private IItemFilterBlockViewModel _selectedBlockViewModel;
public LootFilterScriptViewModel(ILootFilterBlockViewModelFactory lootFilterBlockViewModelFactory, ILootFilterBlockTranslator blockTranslator)
public ItemFilterScriptViewModel(IItemFilterBlockViewModelFactory itemFilterBlockViewModelFactory, IItemFilterBlockTranslator blockTranslator)
{
DeleteBlockCommand = new RelayCommand(OnDeleteBlockCommand, () => SelectedBlockViewModel != null);
MoveBlockToTopCommand = new RelayCommand(OnMoveBlockToTopCommand, () => SelectedBlockViewModel != null);
@@ -43,9 +43,9 @@ namespace Filtration.ViewModels
AddSectionCommand = new RelayCommand(OnAddSectionCommand, () => SelectedBlockViewModel != null);
CopyBlockCommand = new RelayCommand(OnCopyBlockCommand, () => SelectedBlockViewModel != null);
PasteBlockCommand = new RelayCommand(OnPasteBlockCommand, () => SelectedBlockViewModel != null);
_lootFilterBlockViewModelFactory = lootFilterBlockViewModelFactory;
_itemFilterBlockViewModelFactory = itemFilterBlockViewModelFactory;
_blockTranslator = blockTranslator;
LootFilterBlockViewModels = new ObservableCollection<ILootFilterBlockViewModel>();
ItemFilterBlockViewModels = new ObservableCollection<IItemFilterBlockViewModel>();
}
@@ -59,14 +59,14 @@ namespace Filtration.ViewModels
public RelayCommand CopyBlockCommand { get; private set; }
public RelayCommand PasteBlockCommand { get; private set; }
public ObservableCollection<ILootFilterBlockViewModel> LootFilterBlockViewModels { get; private set; }
public ObservableCollection<IItemFilterBlockViewModel> ItemFilterBlockViewModels { get; private set; }
public IEnumerable<ILootFilterBlockViewModel> LootFilterSectionViewModels
public IEnumerable<IItemFilterBlockViewModel> ItemFilterSectionViewModels
{
get { return LootFilterBlockViewModels.Where(b => b.Block.GetType() == typeof (LootFilterSection)); }
get { return ItemFilterBlockViewModels.Where(b => b.Block.GetType() == typeof (ItemFilterSection)); }
}
public ILootFilterBlockViewModel SectionBrowserSelectedViewModel { get; set; }
public IItemFilterBlockViewModel SectionBrowserSelectedViewModel { get; set; }
public string Description
{
@@ -79,7 +79,7 @@ namespace Filtration.ViewModels
}
}
public ILootFilterBlockViewModel SelectedBlockViewModel
public IItemFilterBlockViewModel SelectedBlockViewModel
{
get { return _selectedBlockViewModel; }
set
@@ -89,7 +89,7 @@ namespace Filtration.ViewModels
}
}
public LootFilterScript Script { get; private set; }
public ItemFilterScript Script { get; private set; }
public bool IsDirty
{
@@ -102,12 +102,12 @@ namespace Filtration.ViewModels
private bool HasDirtyChildren
{
get { return LootFilterBlockViewModels.Any(vm => vm.IsDirty); }
get { return ItemFilterBlockViewModels.Any(vm => vm.IsDirty); }
}
private void CleanChildren()
{
foreach (var vm in LootFilterBlockViewModels)
foreach (var vm in ItemFilterBlockViewModels)
{
vm.IsDirty = false;
}
@@ -136,16 +136,16 @@ namespace Filtration.ViewModels
get { return Script.FilePath; }
}
public void Initialise(LootFilterScript lootFilterScript)
public void Initialise(ItemFilterScript itemFilterScript)
{
LootFilterBlockViewModels.Clear();
ItemFilterBlockViewModels.Clear();
Script = lootFilterScript;
foreach (var block in Script.LootFilterBlocks)
Script = itemFilterScript;
foreach (var block in Script.ItemFilterBlocks)
{
var vm = _lootFilterBlockViewModelFactory.Create();
var vm = _itemFilterBlockViewModelFactory.Create();
vm.Initialise(block, this);
LootFilterBlockViewModels.Add(vm);
ItemFilterBlockViewModels.Add(vm);
}
}
@@ -154,9 +154,9 @@ namespace Filtration.ViewModels
CopyBlock(SelectedBlockViewModel);
}
public void CopyBlock(ILootFilterBlockViewModel targetBlockViewModel)
public void CopyBlock(IItemFilterBlockViewModel targetBlockViewModel)
{
Clipboard.SetText(_blockTranslator.TranslateLootFilterBlockToString(SelectedBlockViewModel.Block));
Clipboard.SetText(_blockTranslator.TranslateItemFilterBlockToString(SelectedBlockViewModel.Block));
}
private void OnPasteBlockCommand()
@@ -164,26 +164,26 @@ namespace Filtration.ViewModels
PasteBlock(SelectedBlockViewModel);
}
public void PasteBlock(ILootFilterBlockViewModel targetBlockViewModel)
public void PasteBlock(IItemFilterBlockViewModel targetBlockViewModel)
{
var clipboardText = Clipboard.GetText();
if (clipboardText.IsNullOrEmpty()) return;
var translatedBlock = _blockTranslator.TranslateStringToLootFilterBlock(clipboardText);
var translatedBlock = _blockTranslator.TranslateStringToItemFilterBlock(clipboardText);
if (translatedBlock == null) return;
var vm = _lootFilterBlockViewModelFactory.Create();
var vm = _itemFilterBlockViewModelFactory.Create();
vm.Initialise(translatedBlock, this);
if (LootFilterBlockViewModels.Count > 0)
if (ItemFilterBlockViewModels.Count > 0)
{
Script.LootFilterBlocks.Insert(Script.LootFilterBlocks.IndexOf(targetBlockViewModel.Block) + 1, translatedBlock);
LootFilterBlockViewModels.Insert(LootFilterBlockViewModels.IndexOf(targetBlockViewModel) + 1, vm);
Script.ItemFilterBlocks.Insert(Script.ItemFilterBlocks.IndexOf(targetBlockViewModel.Block) + 1, translatedBlock);
ItemFilterBlockViewModels.Insert(ItemFilterBlockViewModels.IndexOf(targetBlockViewModel) + 1, vm);
}
else
{
Script.LootFilterBlocks.Add(translatedBlock);
LootFilterBlockViewModels.Add(vm);
Script.ItemFilterBlocks.Add(translatedBlock);
ItemFilterBlockViewModels.Add(vm);
}
SelectedBlockViewModel = vm;
@@ -197,18 +197,18 @@ namespace Filtration.ViewModels
}
public void MoveBlockToTop(ILootFilterBlockViewModel targetBlockViewModel)
public void MoveBlockToTop(IItemFilterBlockViewModel targetBlockViewModel)
{
var currentIndex = LootFilterBlockViewModels.IndexOf(targetBlockViewModel);
var currentIndex = ItemFilterBlockViewModels.IndexOf(targetBlockViewModel);
if (currentIndex > 0)
{
var block = targetBlockViewModel.Block;
Script.LootFilterBlocks.Remove(block);
Script.LootFilterBlocks.Insert(0, block);
LootFilterBlockViewModels.Move(currentIndex, 0);
Script.ItemFilterBlocks.Remove(block);
Script.ItemFilterBlocks.Insert(0, block);
ItemFilterBlockViewModels.Move(currentIndex, 0);
_isDirty = true;
RaisePropertyChanged("LootFilterSectionViewModels");
RaisePropertyChanged("ItemFilterSectionViewModels");
}
}
@@ -217,19 +217,19 @@ namespace Filtration.ViewModels
MoveBlockUp(SelectedBlockViewModel);
}
public void MoveBlockUp(ILootFilterBlockViewModel targetBlockViewModel)
public void MoveBlockUp(IItemFilterBlockViewModel targetBlockViewModel)
{
var currentIndex = LootFilterBlockViewModels.IndexOf(targetBlockViewModel);
var currentIndex = ItemFilterBlockViewModels.IndexOf(targetBlockViewModel);
if (currentIndex > 0)
{
var block = targetBlockViewModel.Block;
var blockPos = Script.LootFilterBlocks.IndexOf(block);
Script.LootFilterBlocks.RemoveAt(blockPos);
Script.LootFilterBlocks.Insert(blockPos - 1, block);
LootFilterBlockViewModels.Move(currentIndex, currentIndex - 1);
var blockPos = Script.ItemFilterBlocks.IndexOf(block);
Script.ItemFilterBlocks.RemoveAt(blockPos);
Script.ItemFilterBlocks.Insert(blockPos - 1, block);
ItemFilterBlockViewModels.Move(currentIndex, currentIndex - 1);
_isDirty = true;
RaisePropertyChanged("LootFilterSectionViewModels");
RaisePropertyChanged("ItemFilterSectionViewModels");
}
}
@@ -238,19 +238,19 @@ namespace Filtration.ViewModels
MoveBlockDown(SelectedBlockViewModel);
}
public void MoveBlockDown(ILootFilterBlockViewModel targetBlockViewModel)
public void MoveBlockDown(IItemFilterBlockViewModel targetBlockViewModel)
{
var currentIndex = LootFilterBlockViewModels.IndexOf(targetBlockViewModel);
var currentIndex = ItemFilterBlockViewModels.IndexOf(targetBlockViewModel);
if (currentIndex < LootFilterBlockViewModels.Count - 1)
if (currentIndex < ItemFilterBlockViewModels.Count - 1)
{
var block = targetBlockViewModel.Block;
var blockPos = Script.LootFilterBlocks.IndexOf(block);
Script.LootFilterBlocks.RemoveAt(blockPos);
Script.LootFilterBlocks.Insert(blockPos + 1, block);
LootFilterBlockViewModels.Move(currentIndex, currentIndex + 1);
var blockPos = Script.ItemFilterBlocks.IndexOf(block);
Script.ItemFilterBlocks.RemoveAt(blockPos);
Script.ItemFilterBlocks.Insert(blockPos + 1, block);
ItemFilterBlockViewModels.Move(currentIndex, currentIndex + 1);
_isDirty = true;
RaisePropertyChanged("LootFilterSectionViewModels");
RaisePropertyChanged("ItemFilterSectionViewModels");
}
}
@@ -259,18 +259,18 @@ namespace Filtration.ViewModels
MoveBlockToBottom(SelectedBlockViewModel);
}
public void MoveBlockToBottom(ILootFilterBlockViewModel targetBlockViewModel)
public void MoveBlockToBottom(IItemFilterBlockViewModel targetBlockViewModel)
{
var currentIndex = LootFilterBlockViewModels.IndexOf(targetBlockViewModel);
var currentIndex = ItemFilterBlockViewModels.IndexOf(targetBlockViewModel);
if (currentIndex < LootFilterBlockViewModels.Count - 1)
if (currentIndex < ItemFilterBlockViewModels.Count - 1)
{
var block = targetBlockViewModel.Block;
Script.LootFilterBlocks.Remove(block);
Script.LootFilterBlocks.Add(block);
LootFilterBlockViewModels.Move(currentIndex, LootFilterBlockViewModels.Count - 1);
Script.ItemFilterBlocks.Remove(block);
Script.ItemFilterBlocks.Add(block);
ItemFilterBlockViewModels.Move(currentIndex, ItemFilterBlockViewModels.Count - 1);
_isDirty = true;
RaisePropertyChanged("LootFilterSectionViewModels");
RaisePropertyChanged("ItemFilterSectionViewModels");
}
}
@@ -279,21 +279,21 @@ namespace Filtration.ViewModels
AddBlock(SelectedBlockViewModel);
}
public void AddBlock(ILootFilterBlockViewModel targetBlockViewModel)
public void AddBlock(IItemFilterBlockViewModel targetBlockViewModel)
{
var vm = _lootFilterBlockViewModelFactory.Create();
var newBlock = new LootFilterBlock();
var vm = _itemFilterBlockViewModelFactory.Create();
var newBlock = new ItemFilterBlock();
vm.Initialise(newBlock, this);
if (targetBlockViewModel != null)
{
Script.LootFilterBlocks.Insert(Script.LootFilterBlocks.IndexOf(targetBlockViewModel.Block) + 1, newBlock);
LootFilterBlockViewModels.Insert(LootFilterBlockViewModels.IndexOf(targetBlockViewModel) + 1, vm);
Script.ItemFilterBlocks.Insert(Script.ItemFilterBlocks.IndexOf(targetBlockViewModel.Block) + 1, newBlock);
ItemFilterBlockViewModels.Insert(ItemFilterBlockViewModels.IndexOf(targetBlockViewModel) + 1, vm);
}
else
{
Script.LootFilterBlocks.Add(newBlock);
LootFilterBlockViewModels.Add(vm);
Script.ItemFilterBlocks.Add(newBlock);
ItemFilterBlockViewModels.Add(vm);
}
SelectedBlockViewModel = vm;
@@ -305,17 +305,17 @@ namespace Filtration.ViewModels
AddSection(SelectedBlockViewModel);
}
public void AddSection(ILootFilterBlockViewModel targetBlockViewModel)
public void AddSection(IItemFilterBlockViewModel targetBlockViewModel)
{
var vm = _lootFilterBlockViewModelFactory.Create();
var newSection = new LootFilterSection { Description = "New Section" };
var vm = _itemFilterBlockViewModelFactory.Create();
var newSection = new ItemFilterSection { Description = "New Section" };
vm.Initialise(newSection, this);
Script.LootFilterBlocks.Insert(Script.LootFilterBlocks.IndexOf(targetBlockViewModel.Block) + 1, newSection);
LootFilterBlockViewModels.Insert(LootFilterBlockViewModels.IndexOf(targetBlockViewModel) + 1, vm);
Script.ItemFilterBlocks.Insert(Script.ItemFilterBlocks.IndexOf(targetBlockViewModel.Block) + 1, newSection);
ItemFilterBlockViewModels.Insert(ItemFilterBlockViewModels.IndexOf(targetBlockViewModel) + 1, vm);
_isDirty = true;
SelectedBlockViewModel = vm;
RaisePropertyChanged("LootFilterSectionViewModels");
RaisePropertyChanged("ItemFilterSectionViewModels");
}
private void OnDeleteBlockCommand()
@@ -323,15 +323,15 @@ namespace Filtration.ViewModels
DeleteBlock(SelectedBlockViewModel);
}
public void DeleteBlock(ILootFilterBlockViewModel targetBlockViewModel)
public void DeleteBlock(IItemFilterBlockViewModel targetBlockViewModel)
{
var result = MessageBox.Show("Are you sure you wish to delete this block?", "Delete Confirmation",
MessageBoxButton.YesNo, MessageBoxImage.Question);
if (result == MessageBoxResult.Yes)
{
Script.LootFilterBlocks.Remove(targetBlockViewModel.Block);
LootFilterBlockViewModels.Remove(targetBlockViewModel);
Script.ItemFilterBlocks.Remove(targetBlockViewModel.Block);
ItemFilterBlockViewModels.Remove(targetBlockViewModel);
_isDirty = true;
}
SelectedBlockViewModel = null;

View File

@@ -21,26 +21,26 @@ namespace Filtration.ViewModels
internal class MainWindowViewModel : FiltrationViewModelBase, IMainWindowViewModel
{
private LootFilterScript _loadedScript;
private ItemFilterScript _loadedScript;
private readonly ILootFilterScriptViewModelFactory _lootFilterScriptViewModelFactory;
private readonly ILootFilterPersistenceService _persistenceService;
private readonly ILootFilterScriptTranslator _lootFilterScriptTranslator;
private readonly IItemFilterScriptViewModelFactory _itemFilterScriptViewModelFactory;
private readonly IItemFilterPersistenceService _persistenceService;
private readonly IItemFilterScriptTranslator _itemFilterScriptTranslator;
private readonly IReplaceColorsViewModel _replaceColorsViewModel;
private ILootFilterScriptViewModel _currentScriptViewModel;
private readonly ObservableCollection<ILootFilterScriptViewModel> _scriptViewModels;
private IItemFilterScriptViewModel _currentScriptViewModel;
private readonly ObservableCollection<IItemFilterScriptViewModel> _scriptViewModels;
public MainWindowViewModel(ILootFilterScriptViewModelFactory lootFilterScriptViewModelFactory,
ILootFilterPersistenceService persistenceService,
ILootFilterScriptTranslator lootFilterScriptTranslator,
public MainWindowViewModel(IItemFilterScriptViewModelFactory itemFilterScriptViewModelFactory,
IItemFilterPersistenceService persistenceService,
IItemFilterScriptTranslator itemFilterScriptTranslator,
IReplaceColorsViewModel replaceColorsViewModel)
{
_lootFilterScriptViewModelFactory = lootFilterScriptViewModelFactory;
_itemFilterScriptViewModelFactory = itemFilterScriptViewModelFactory;
_persistenceService = persistenceService;
_lootFilterScriptTranslator = lootFilterScriptTranslator;
_itemFilterScriptTranslator = itemFilterScriptTranslator;
_replaceColorsViewModel = replaceColorsViewModel;
_scriptViewModels = new ObservableCollection<ILootFilterScriptViewModel>();
_scriptViewModels = new ObservableCollection<IItemFilterScriptViewModel>();
OpenAboutWindowCommand = new RelayCommand(OnOpenAboutWindowCommand);
OpenScriptCommand = new RelayCommand(OnOpenScriptCommand);
@@ -50,12 +50,12 @@ namespace Filtration.ViewModels
CopyBlockCommand = new RelayCommand(OnCopyBlockCommand, () => CurrentScriptViewModel != null && CurrentScriptViewModel.SelectedBlockViewModel != null);
PasteCommand = new RelayCommand(OnPasteCommand, () => CurrentScriptViewModel != null && CurrentScriptViewModel.SelectedBlockViewModel != null);
NewScriptCommand = new RelayCommand(OnNewScriptCommand);
CloseScriptCommand = new RelayCommand<ILootFilterScriptViewModel>(OnCloseScriptCommand, v => CurrentScriptViewModel != null);
CloseScriptCommand = new RelayCommand<IItemFilterScriptViewModel>(OnCloseScriptCommand, v => CurrentScriptViewModel != null);
ReplaceColorsCommand = new RelayCommand(OnReplaceColorsCommand, () => CurrentScriptViewModel != null);
//LoadScriptFromFile("C:\\ThioleLootFilter.txt");
SetLootFilterScriptDirectory();
SetItemFilterScriptDirectory();
}
public RelayCommand OpenScriptCommand { get; private set; }
@@ -65,11 +65,11 @@ namespace Filtration.ViewModels
public RelayCommand PasteCommand { get; private set; }
public RelayCommand CopyScriptCommand { get; private set; }
public RelayCommand NewScriptCommand { get; private set; }
public RelayCommand<ILootFilterScriptViewModel> CloseScriptCommand { get; private set; }
public RelayCommand<IItemFilterScriptViewModel> CloseScriptCommand { get; private set; }
public RelayCommand OpenAboutWindowCommand { get; private set; }
public RelayCommand ReplaceColorsCommand { get; private set; }
public ObservableCollection<ILootFilterScriptViewModel> ScriptViewModels
public ObservableCollection<IItemFilterScriptViewModel> ScriptViewModels
{
get { return _scriptViewModels; }
}
@@ -85,7 +85,7 @@ namespace Filtration.ViewModels
}
[DoNotWire]
public ILootFilterScriptViewModel CurrentScriptViewModel
public IItemFilterScriptViewModel CurrentScriptViewModel
{
get { return _currentScriptViewModel; }
set
@@ -114,7 +114,7 @@ namespace Filtration.ViewModels
var openFileDialog = new OpenFileDialog
{
Filter = "Filter Files (*.filter)|*.filter|All Files (*.*)|*.*",
InitialDirectory = _persistenceService.LootFilterScriptDirectory
InitialDirectory = _persistenceService.ItemFilterScriptDirectory
};
if (openFileDialog.ShowDialog() != true) return;
@@ -126,7 +126,7 @@ namespace Filtration.ViewModels
{
try
{
_loadedScript = _persistenceService.LoadLootFilterScript(path);
_loadedScript = _persistenceService.LoadItemFilterScript(path);
}
catch (Exception e)
{
@@ -135,18 +135,18 @@ namespace Filtration.ViewModels
return;
}
var newViewModel = _lootFilterScriptViewModelFactory.Create();
var newViewModel = _itemFilterScriptViewModelFactory.Create();
newViewModel.Initialise(_loadedScript);
ScriptViewModels.Add(newViewModel);
CurrentScriptViewModel = newViewModel;
}
private void SetLootFilterScriptDirectory()
private void SetItemFilterScriptDirectory()
{
var defaultDir = _persistenceService.DefaultPathOfExileDirectory();
if (!string.IsNullOrEmpty(defaultDir))
{
_persistenceService.LootFilterScriptDirectory = defaultDir;
_persistenceService.ItemFilterScriptDirectory = defaultDir;
}
else
{
@@ -159,7 +159,7 @@ namespace Filtration.ViewModels
if (result == DialogResult.OK)
{
_persistenceService.LootFilterScriptDirectory = dlg.SelectedPath;
_persistenceService.ItemFilterScriptDirectory = dlg.SelectedPath;
}
}
}
@@ -176,7 +176,7 @@ namespace Filtration.ViewModels
try
{
_persistenceService.SaveLootFilterScript(CurrentScriptViewModel.Script);
_persistenceService.SaveItemFilterScript(CurrentScriptViewModel.Script);
CurrentScriptViewModel.RemoveDirtyFlag();
}
catch (Exception e)
@@ -195,7 +195,7 @@ namespace Filtration.ViewModels
{
DefaultExt = ".filter",
Filter = @"Filter Files (*.filter)|*.filter|All Files (*.*)|*.*",
InitialDirectory = _persistenceService.LootFilterScriptDirectory
InitialDirectory = _persistenceService.ItemFilterScriptDirectory
};
var result = saveDialog.ShowDialog();
@@ -206,7 +206,7 @@ namespace Filtration.ViewModels
try
{
CurrentScriptViewModel.Script.FilePath = saveDialog.FileName;
_persistenceService.SaveLootFilterScript(CurrentScriptViewModel.Script);
_persistenceService.SaveItemFilterScript(CurrentScriptViewModel.Script);
CurrentScriptViewModel.RemoveDirtyFlag();
}
catch (Exception e)
@@ -245,7 +245,7 @@ namespace Filtration.ViewModels
private void OnCopyScriptCommand()
{
Clipboard.SetText(_lootFilterScriptTranslator.TranslateLootFilterScriptToString(_currentScriptViewModel.Script));
Clipboard.SetText(_itemFilterScriptTranslator.TranslateItemFilterScriptToString(_currentScriptViewModel.Script));
}
private void OnCopyBlockCommand()
@@ -260,15 +260,15 @@ namespace Filtration.ViewModels
private void OnNewScriptCommand()
{
var newScript = new LootFilterScript();
var newViewModel = _lootFilterScriptViewModelFactory.Create();
var newScript = new ItemFilterScript();
var newViewModel = _itemFilterScriptViewModelFactory.Create();
newViewModel.Initialise(newScript);
newViewModel.Description = "New Script";
ScriptViewModels.Add(newViewModel);
CurrentScriptViewModel = newViewModel;
}
private void OnCloseScriptCommand(ILootFilterScriptViewModel scriptViewModel)
private void OnCloseScriptCommand(IItemFilterScriptViewModel scriptViewModel)
{
CurrentScriptViewModel = scriptViewModel;
if (!CurrentScriptViewModel.IsDirty)

View File

@@ -8,13 +8,13 @@ namespace Filtration.ViewModels
{
internal interface IReplaceColorsViewModel
{
void Initialise(LootFilterScript lootFilterScript, LootFilterBlock initialiseFromBlock);
void Initialise(LootFilterScript lootFilterScript);
void Initialise(ItemFilterScript itemFilterScript, ItemFilterBlock initialiseFromBlock);
void Initialise(ItemFilterScript itemFilterScript);
}
internal class ReplaceColorsViewModel : FiltrationViewModelBase, IReplaceColorsViewModel
{
private LootFilterScript _lootFilterScript;
private ItemFilterScript _itemFilterScript;
private ReplaceColorsParameterSet _replaceColorsParameterSet;
public ReplaceColorsViewModel()
@@ -24,7 +24,7 @@ namespace Filtration.ViewModels
public RelayCommand ReplaceColorsCommand { get; private set; }
public void Initialise(LootFilterScript lootFilterScript, LootFilterBlock initialiseFromBlock)
public void Initialise(ItemFilterScript itemFilterScript, ItemFilterBlock initialiseFromBlock)
{
_replaceColorsParameterSet = new ReplaceColorsParameterSet();
@@ -55,7 +55,7 @@ namespace Filtration.ViewModels
_replaceColorsParameterSet.NewBorderColor = existingBlockColor;
}
_lootFilterScript = lootFilterScript;
_itemFilterScript = itemFilterScript;
}
public Color NewTextColor
@@ -159,15 +159,15 @@ namespace Filtration.ViewModels
}
}
public void Initialise(LootFilterScript lootFilterScript)
public void Initialise(ItemFilterScript itemFilterScript)
{
_replaceColorsParameterSet = new ReplaceColorsParameterSet();
_lootFilterScript = lootFilterScript;
_itemFilterScript = itemFilterScript;
}
private void OnReplaceColorsCommand()
{
_lootFilterScript.ReplaceColors(_replaceColorsParameterSet);
_itemFilterScript.ReplaceColors(_replaceColorsParameterSet);
}
}

View File

@@ -9,18 +9,18 @@ namespace Filtration.Views
{
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
var viewModel = item as LootFilterBlockViewModel;
var viewModel = item as ItemFilterBlockViewModel;
var element = container as FrameworkElement;
if (viewModel == null || element == null)
return null;
if (viewModel.Block is LootFilterSection)
if (viewModel.Block is ItemFilterSection)
{
return element.FindResource("LootFilterSectionTemplate") as DataTemplate;
return element.FindResource("ItemFilterSectionTemplate") as DataTemplate;
}
return element.FindResource("LootFilterBlockTemplate") as DataTemplate;
return element.FindResource("ItemFilterBlockTemplate") as DataTemplate;
}
}
}

View File

@@ -1,4 +1,4 @@
<UserControl x:Class="Filtration.Views.LootFilterBlockDisplaySettingsView"
<UserControl x:Class="Filtration.Views.ItemFilterBlockDisplaySettingsView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@@ -10,7 +10,7 @@
xmlns:blockItemTypes="clr-namespace:Filtration.Models.BlockItemTypes"
xmlns:componentModel="clr-namespace:System.ComponentModel;assembly=WindowsBase"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=viewModels:LootFilterBlockViewModel}"
d:DataContext="{d:DesignInstance Type=viewModels:ItemFilterBlockViewModel}"
d:DesignHeight="120" d:DesignWidth="175">
<UserControl.Resources>
<ResourceDictionary>

View File

@@ -0,0 +1,10 @@
namespace Filtration.Views
{
public partial class ItemFilterBlockDisplaySettingsView
{
public ItemFilterBlockDisplaySettingsView()
{
InitializeComponent();
}
}
}

View File

@@ -1,4 +1,4 @@
<UserControl x:Class="Filtration.Views.LootFilterBlockView"
<UserControl x:Class="Filtration.Views.ItemFilterBlockView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@@ -11,7 +11,7 @@
xmlns:enums="clr-namespace:Filtration.Enums"
xmlns:extensions="clr-namespace:Filtration.Extensions"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=viewModels:LootFilterBlockViewModel}"
d:DataContext="{d:DesignInstance Type=viewModels:ItemFilterBlockViewModel}"
d:DesignHeight="200" d:DesignWidth="800">
<UserControl.Resources>
<ResourceDictionary>
@@ -114,7 +114,7 @@
AllowsTransparency="True"
HorizontalOffset="-5"
Width="250">
<views:LootFilterBlockDisplaySettingsView />
<views:ItemFilterBlockDisplaySettingsView />
</Popup>
</Grid>
</Expander.Header>

View File

@@ -1,8 +1,8 @@
namespace Filtration.Views
{
public partial class LootFilterBlockView
public partial class ItemFilterBlockView
{
public LootFilterBlockView()
public ItemFilterBlockView()
{
InitializeComponent();
}

View File

@@ -1,4 +1,4 @@
<UserControl x:Class="Filtration.Views.LootFilterScriptView"
<UserControl x:Class="Filtration.Views.ItemFilterScriptView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
@@ -7,19 +7,19 @@
xmlns:viewModels="clr-namespace:Filtration.ViewModels"
xmlns:userControls="clr-namespace:Filtration.UserControls"
mc:Ignorable="d"
d:DataContext="{d:DesignInstance Type=viewModels:LootFilterScriptViewModel}"
d:DataContext="{d:DesignInstance Type=viewModels:ItemFilterScriptViewModel}"
d:DesignHeight="300" d:DesignWidth="600">
<UserControl.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary>
<!-- ReSharper disable once Xaml.RedundantResource -->
<DataTemplate x:Key="LootFilterBlockTemplate">
<views:LootFilterBlockView Margin="0,2,0,2" />
<DataTemplate x:Key="ItemFilterBlockTemplate">
<views:ItemFilterBlockView Margin="0,2,0,2" />
</DataTemplate>
<!-- ReSharper disable once Xaml.RedundantResource -->
<DataTemplate x:Key="LootFilterSectionTemplate">
<views:LootFilterSectionView Margin="0,2,0,2" />
<DataTemplate x:Key="ItemFilterSectionTemplate">
<views:ItemFilterSectionView Margin="0,2,0,2" />
</DataTemplate>
<views:BlockTemplateSelector x:Key="BlockTemplateSelector" />
</ResourceDictionary>
@@ -67,7 +67,7 @@
</TextBlock.LayoutTransform>
</TextBlock>
</Expander.Header>
<ListBox ItemsSource="{Binding LootFilterSectionViewModels}"
<ListBox ItemsSource="{Binding ItemFilterSectionViewModels}"
SelectedItem="{Binding SectionBrowserSelectedViewModel}"
x:Name="SectionBrowserListBox"
SelectionChanged="SectionBrowserListBox_OnSelectionChanged"
@@ -79,7 +79,7 @@
</ListBox.ItemTemplate>
</ListBox>
</Expander>
<userControls:AutoScrollingListBox ItemsSource="{Binding LootFilterBlockViewModels}"
<userControls:AutoScrollingListBox ItemsSource="{Binding ItemFilterBlockViewModels}"
Margin="5,5,5,5"
Padding="5"
HorizontalContentAlignment="Stretch"

View File

@@ -2,9 +2,9 @@
namespace Filtration.Views
{
public partial class LootFilterScriptView
public partial class ItemFilterScriptView
{
public LootFilterScriptView()
public ItemFilterScriptView()
{
InitializeComponent();
}

View File

@@ -1,10 +1,10 @@
<UserControl x:Class="Filtration.Views.LootFilterSectionView"
<UserControl x:Class="Filtration.Views.ItemFilterSectionView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:viewModels="clr-namespace:Filtration.ViewModels"
d:DataContext="{d:DesignInstance Type=viewModels:LootFilterBlockViewModel}"
d:DataContext="{d:DesignInstance Type=viewModels:ItemFilterBlockViewModel}"
mc:Ignorable="d"
d:DesignHeight="50" d:DesignWidth="300">
<UserControl.Resources>

View File

@@ -1,8 +1,8 @@
namespace Filtration.Views
{
public partial class LootFilterSectionView
public partial class ItemFilterSectionView
{
public LootFilterSectionView()
public ItemFilterSectionView()
{
InitializeComponent();
}

View File

@@ -1,10 +0,0 @@
namespace Filtration.Views
{
public partial class LootFilterBlockDisplaySettingsView
{
public LootFilterBlockDisplaySettingsView()
{
InitializeComponent();
}
}
}

View File

@@ -58,7 +58,7 @@
<TabControl.ContentTemplate>
<DataTemplate>
<controls:MetroContentControl>
<views:LootFilterScriptView DataContext="{Binding}" />
<views:ItemFilterScriptView DataContext="{Binding}" />
</controls:MetroContentControl>
</DataTemplate>
</TabControl.ContentTemplate>

View File

@@ -15,8 +15,8 @@ namespace Filtration.WindsorInstallers
.LifeStyle.Singleton);
container.Register(
Component.For<ILootFilterPersistenceService>()
.ImplementedBy<LootFilterPersistenceService>()
Component.For<IItemFilterPersistenceService>()
.ImplementedBy<ItemFilterPersistenceService>()
.LifeStyle.Singleton);
container.Register(

View File

@@ -10,13 +10,13 @@ namespace Filtration.WindsorInstallers
public void Install(IWindsorContainer container, IConfigurationStore store)
{
container.Register(
Component.For<ILootFilterScriptTranslator>()
.ImplementedBy<LootFilterScriptTranslator>()
Component.For<IItemFilterScriptTranslator>()
.ImplementedBy<ItemFilterScriptTranslator>()
.LifeStyle.Singleton);
container.Register(
Component.For<ILootFilterBlockTranslator>()
.ImplementedBy<LootFilterBlockTranslator>()
Component.For<IItemFilterBlockTranslator>()
.ImplementedBy<ItemFilterBlockTranslator>()
.LifeStyle.Singleton);
}
}

View File

@@ -16,13 +16,13 @@ namespace Filtration.WindsorInstallers
.LifeStyle.Transient);
container.Register(
Component.For<ILootFilterBlockViewModel>()
.ImplementedBy<LootFilterBlockViewModel>()
Component.For<IItemFilterBlockViewModel>()
.ImplementedBy<ItemFilterBlockViewModel>()
.LifeStyle.Transient);
container.Register(
Component.For<ILootFilterScriptViewModel>()
.ImplementedBy<LootFilterScriptViewModel>()
Component.For<IItemFilterScriptViewModel>()
.ImplementedBy<ItemFilterScriptViewModel>()
.LifeStyle.Transient);
container.Register(
@@ -32,10 +32,10 @@ namespace Filtration.WindsorInstallers
container.AddFacility<TypedFactoryFacility>();
container.Register(
Component.For<ILootFilterBlockViewModelFactory>().AsFactory());
Component.For<IItemFilterBlockViewModelFactory>().AsFactory());
container.Register(
Component.For<ILootFilterScriptViewModelFactory>().AsFactory());
Component.For<IItemFilterScriptViewModelFactory>().AsFactory());
}
}
}