diff --git a/Filtration.Tests/Filtration.Tests.csproj b/Filtration.Tests/Filtration.Tests.csproj
index 3eaad95..ff854ef 100644
--- a/Filtration.Tests/Filtration.Tests.csproj
+++ b/Filtration.Tests/Filtration.Tests.csproj
@@ -41,6 +41,7 @@
..\packages\FluentAssertions.4.19.2\lib\net45\FluentAssertions.Core.dll
+
..\packages\Moq.4.5.30\lib\net45\Moq.dll
@@ -66,6 +67,7 @@
+
diff --git a/Filtration.Tests/Repositories/TestItemFilterScriptRepository.cs b/Filtration.Tests/Repositories/TestItemFilterScriptRepository.cs
index 12a911e..cbb31b2 100644
--- a/Filtration.Tests/Repositories/TestItemFilterScriptRepository.cs
+++ b/Filtration.Tests/Repositories/TestItemFilterScriptRepository.cs
@@ -63,49 +63,6 @@ namespace Filtration.Tests.Repositories
result.ShouldThrow();
}
- [Test]
- public void SetItemFilterScriptDirectory_CallsPersistenceServiceSetItemFilterScriptDirectory()
- {
- // Arrange
- var testInputPath = "C:\\Test\\Path";
-
- var mockPersistenceService = new Mock();
- mockPersistenceService.Setup(p => p.SetItemFilterScriptDirectory(testInputPath)).Verifiable();
-
- var mockItemFilterScriptViewModelFactory = new Mock();
-
- var repository = CreateItemFilterScriptRepository(itemFilterPersistenceService: mockPersistenceService.Object,
- itemFilterScriptViewModelFactory: mockItemFilterScriptViewModelFactory.Object);
-
- // Act
- repository.SetItemFilterScriptDirectory(testInputPath);
-
- // Assert
- mockPersistenceService.Verify();
- }
-
- [Test]
- public void GetItemFilterScriptDirectory_ReturnsItemFilterScriptDirectoryFromPersistenceService()
- {
- // Arrange
- var testInputPath = "C:\\Test\\Path";
-
- var mockPersistenceService = new Mock();
- mockPersistenceService.SetupGet(p => p.ItemFilterScriptDirectory).Returns(testInputPath).Verifiable();
-
- var mockItemFilterScriptViewModelFactory = new Mock();
-
- var repository = CreateItemFilterScriptRepository(itemFilterPersistenceService: mockPersistenceService.Object,
- itemFilterScriptViewModelFactory: mockItemFilterScriptViewModelFactory.Object);
-
- // Act
- string result = repository.GetItemFilterScriptDirectory();
-
- // Assert
- mockPersistenceService.Verify();
- Assert.AreEqual(result, testInputPath);
- }
-
[Test]
public void NewScript_ReturnsScriptFromViewModelFactory()
{
diff --git a/Filtration.Tests/Services/TestItemFilterScriptDirectoryService.cs b/Filtration.Tests/Services/TestItemFilterScriptDirectoryService.cs
new file mode 100644
index 0000000..d799a90
--- /dev/null
+++ b/Filtration.Tests/Services/TestItemFilterScriptDirectoryService.cs
@@ -0,0 +1,95 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using Filtration.Common.Services;
+using Filtration.Services;
+using Microsoft.WindowsAPICodePack.Dialogs;
+using Moq;
+using NUnit.Framework;
+
+namespace Filtration.Tests.Services
+{
+ [TestFixture]
+ public class TestItemFilterScriptDirectoryService
+ {
+
+ [Test]
+ public void PromptForFilterScriptDirectoryIfRequired_ItemFilterScriptDirectoryNotNull_DoesNotSetItemFilterScriptDirectory()
+ {
+ //Arrange
+ var mockItemFilterPersistenceService = new Mock();
+ mockItemFilterPersistenceService.Setup(i => i.ItemFilterScriptDirectory)
+ .Returns("testdir");
+
+ var service = CreateItemFilterScriptDirectoryService(itemFilterPersistenceService: mockItemFilterPersistenceService.Object);
+
+ //Act
+ service.PromptForFilterScriptDirectoryIfRequired();
+
+ //Assert
+ mockItemFilterPersistenceService.Verify(i => i.SetItemFilterScriptDirectory(It.IsAny()), Times.Never);
+ }
+
+ [Test]
+ public void PromptForFilterScriptDirectoryIfRequired_NotSet_DefaultDirectoryExists_SetsDirectoryToDefaultDirectory()
+ {
+ //Arrange
+ var mockItemFilterPersistenceService = new Mock();
+ var testInputDefaultDirectory = "testdefaultdirectory";
+ mockItemFilterPersistenceService.Setup(i => i.DefaultPathOfExileDirectory())
+ .Returns(testInputDefaultDirectory);
+
+ var mockFileSystemService = new Mock();
+ mockFileSystemService.Setup(f => f.DirectoryExists(testInputDefaultDirectory))
+ .Returns(true);
+
+ var service = CreateItemFilterScriptDirectoryService(fileSystemService: mockFileSystemService.Object,
+ itemFilterPersistenceService: mockItemFilterPersistenceService.Object);
+
+ //Act
+ service.PromptForFilterScriptDirectoryIfRequired();
+
+ //Assert
+ mockItemFilterPersistenceService.Verify(i => i.SetItemFilterScriptDirectory(testInputDefaultDirectory));
+ }
+
+ [Test, Timeout(1000)]
+ public void PromptForFilterScriptDirectoryIfRequired_NotSet_DefaultDirectoryDoesNotExist_SetsDirectoryToUserSelected()
+ {
+ //Arrange
+ var testInputUserSelectedDirectory = "blah";
+
+ var mockItemFilterPersistenceService = new Mock();
+ var mockDialogService = new Mock();
+
+ mockDialogService.Setup(d => d.ShowFolderPickerDialog(It.IsAny(), out testInputUserSelectedDirectory))
+ .Returns(CommonFileDialogResult.Ok);
+
+ mockItemFilterPersistenceService.Setup(i => i.SetItemFilterScriptDirectory(testInputUserSelectedDirectory))
+ .Callback(() => mockItemFilterPersistenceService.Setup(f => f.ItemFilterScriptDirectory)
+ .Returns(testInputUserSelectedDirectory));
+
+ var service = CreateItemFilterScriptDirectoryService(dialogService: mockDialogService.Object,
+ itemFilterPersistenceService: mockItemFilterPersistenceService.Object);
+
+ //Act
+ service.PromptForFilterScriptDirectoryIfRequired();
+
+ //Assert
+ mockItemFilterPersistenceService.Verify(i => i.SetItemFilterScriptDirectory(testInputUserSelectedDirectory));
+ }
+
+ private ItemFilterScriptDirectoryService CreateItemFilterScriptDirectoryService(IDialogService dialogService = null,
+ IFileSystemService fileSystemService = null,
+ IItemFilterPersistenceService itemFilterPersistenceService = null,
+ IMessageBoxService messageBoxService = null)
+ {
+ return new ItemFilterScriptDirectoryService(dialogService ?? new Mock().Object,
+ fileSystemService ?? new Mock().Object,
+ itemFilterPersistenceService ?? new Mock().Object,
+ messageBoxService ?? new Mock().Object);
+ }
+ }
+}
diff --git a/Filtration/Filtration.csproj b/Filtration/Filtration.csproj
index c23e09c..daac6b1 100644
--- a/Filtration/Filtration.csproj
+++ b/Filtration/Filtration.csproj
@@ -209,8 +209,10 @@
+
+
diff --git a/Filtration/Repositories/ItemFilterScriptRepository.cs b/Filtration/Repositories/ItemFilterScriptRepository.cs
index 2348b2a..057df46 100644
--- a/Filtration/Repositories/ItemFilterScriptRepository.cs
+++ b/Filtration/Repositories/ItemFilterScriptRepository.cs
@@ -1,5 +1,4 @@
using System.Threading.Tasks;
-using Filtration.ObjectModel;
using Filtration.ObjectModel.Factories;
using Filtration.Services;
using Filtration.ViewModels;
@@ -11,8 +10,6 @@ namespace Filtration.Repositories
{
Task LoadScriptFromFileAsync(string path);
IItemFilterScriptViewModel NewScript();
- string GetItemFilterScriptDirectory();
- void SetItemFilterScriptDirectory(string path);
}
internal class ItemFilterScriptRepository : IItemFilterScriptRepository
@@ -48,15 +45,6 @@ namespace Filtration.Repositories
return newViewModel;
}
-
- public void SetItemFilterScriptDirectory(string path)
- {
- _itemFilterPersistenceService.SetItemFilterScriptDirectory(path);
- }
-
- public string GetItemFilterScriptDirectory()
- {
- return _itemFilterPersistenceService.ItemFilterScriptDirectory;
- }
}
}
+;
\ No newline at end of file
diff --git a/Filtration/Services/Bootstrapper.cs b/Filtration/Services/Bootstrapper.cs
index fbdf410..a969b05 100644
--- a/Filtration/Services/Bootstrapper.cs
+++ b/Filtration/Services/Bootstrapper.cs
@@ -15,14 +15,17 @@ namespace Filtration.Services
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
+ private readonly IItemFilterScriptDirectoryService _itemFilterScriptDirectoryService;
private readonly IMainWindow _mainWindow;
private readonly ISettingsService _settingsService;
private readonly IUpdateService _updateService;
- public Bootstrapper(IMainWindow mainWindow,
+ public Bootstrapper(IItemFilterScriptDirectoryService itemFilterScriptDirectoryService,
+ IMainWindow mainWindow,
ISettingsService settingsService,
IUpdateService updateService)
{
+ _itemFilterScriptDirectoryService = itemFilterScriptDirectoryService;
_mainWindow = mainWindow;
_settingsService = settingsService;
_updateService = updateService;
@@ -37,6 +40,8 @@ namespace Filtration.Services
// with each update
_settingsService.RestoreSettings();
+ _itemFilterScriptDirectoryService.PromptForFilterScriptDirectoryIfRequired();
+
_mainWindow.Show();
await _updateService.CheckForUpdatesAsync();
diff --git a/Filtration/Services/DialogService.cs b/Filtration/Services/DialogService.cs
new file mode 100644
index 0000000..9531903
--- /dev/null
+++ b/Filtration/Services/DialogService.cs
@@ -0,0 +1,25 @@
+using Microsoft.WindowsAPICodePack.Dialogs;
+
+namespace Filtration.Services
+{
+ internal interface IDialogService
+ {
+ CommonFileDialogResult ShowFolderPickerDialog(string dialogTitle, out string folderName);
+ }
+
+ internal sealed class DialogService : IDialogService
+ {
+ public CommonFileDialogResult ShowFolderPickerDialog(string dialogTitle, out string folderName)
+ {
+ using (var dialog = new CommonOpenFileDialog(dialogTitle))
+ {
+ dialog.IsFolderPicker = true;
+ var result = dialog.ShowDialog();
+
+ folderName = result == CommonFileDialogResult.Ok ? dialog.FileName : string.Empty;
+
+ return result;
+ }
+ }
+ }
+}
diff --git a/Filtration/Services/ItemFilterPersistenceService.cs b/Filtration/Services/ItemFilterPersistenceService.cs
index 14cd9dc..5bb22fe 100644
--- a/Filtration/Services/ItemFilterPersistenceService.cs
+++ b/Filtration/Services/ItemFilterPersistenceService.cs
@@ -25,16 +25,6 @@ namespace Filtration.Services
{
_fileSystemService = fileSystemService;
_itemFilterScriptTranslator = itemFilterScriptTranslator;
-
- if (string.IsNullOrEmpty(Settings.Default.DefaultFilterDirectory))
- {
- ItemFilterScriptDirectory = DefaultPathOfExileDirectory();
- Settings.Default.DefaultFilterDirectory = ItemFilterScriptDirectory;
- }
- else
- {
- ItemFilterScriptDirectory = Settings.Default.DefaultFilterDirectory;
- }
}
public string ItemFilterScriptDirectory { get; private set; }
diff --git a/Filtration/Services/ItemFilterScriptDirectoryService.cs b/Filtration/Services/ItemFilterScriptDirectoryService.cs
new file mode 100644
index 0000000..df4211f
--- /dev/null
+++ b/Filtration/Services/ItemFilterScriptDirectoryService.cs
@@ -0,0 +1,78 @@
+using System.IO;
+using System.Windows;
+using Filtration.Common.Services;
+using Microsoft.WindowsAPICodePack.Dialogs;
+
+namespace Filtration.Services
+{
+ internal interface IItemFilterScriptDirectoryService
+ {
+ string ItemFilterScriptDirectory { get; }
+ void PromptForFilterScriptDirectoryIfRequired();
+ void SetItemFilterScriptDirectory();
+ }
+
+ internal sealed class ItemFilterScriptDirectoryService : IItemFilterScriptDirectoryService
+ {
+ private readonly IDialogService _dialogService;
+ private readonly IFileSystemService _fileSystemService;
+ private readonly IItemFilterPersistenceService _itemFilterPersistenceService;
+ private readonly IMessageBoxService _messageBoxService;
+
+ public ItemFilterScriptDirectoryService(IDialogService dialogService,
+ IFileSystemService fileSystemService,
+ IItemFilterPersistenceService itemFilterPersistenceService,
+ IMessageBoxService messageBoxService)
+ {
+ _dialogService = dialogService;
+ _fileSystemService = fileSystemService;
+ _itemFilterPersistenceService = itemFilterPersistenceService;
+ _messageBoxService = messageBoxService;
+ }
+
+
+ public string ItemFilterScriptDirectory => _itemFilterPersistenceService.ItemFilterScriptDirectory;
+
+ public void PromptForFilterScriptDirectoryIfRequired()
+ {
+ // If the directory is already set, do nothing
+ if (!string.IsNullOrEmpty(_itemFilterPersistenceService.ItemFilterScriptDirectory))
+ {
+ return;
+ }
+
+ // If the directory is not set but the default directory exists, set the directory to the default directory
+ if (_fileSystemService.DirectoryExists(_itemFilterPersistenceService.DefaultPathOfExileDirectory()))
+ {
+ _itemFilterPersistenceService.SetItemFilterScriptDirectory(_itemFilterPersistenceService.DefaultPathOfExileDirectory());
+ return;
+ }
+
+ // Otherwise, prompt the user to select the directory
+ _messageBoxService.Show("Data directory required", @"The Path of Exile user data directory was not found in the default location (Documents\My Games\Path of Exile), please select it manually.", MessageBoxButton.OK, MessageBoxImage.Information);
+ while (string.IsNullOrEmpty(_itemFilterPersistenceService.ItemFilterScriptDirectory))
+ {
+ SetItemFilterScriptDirectory();
+ }
+ }
+
+ public void SetItemFilterScriptDirectory()
+ {
+ var result = _dialogService.ShowFolderPickerDialog(@"Select Path of Exile user data directory", out var filepath);
+ if (result != CommonFileDialogResult.Ok)
+ {
+ return;
+ }
+
+ try
+ {
+ _itemFilterPersistenceService.SetItemFilterScriptDirectory(filepath);
+ }
+ catch (DirectoryNotFoundException)
+ {
+ _messageBoxService.Show("Error", "The entered Default Filter Directory is invalid or does not exist.",
+ MessageBoxButton.OK, MessageBoxImage.Exclamation);
+ }
+ }
+ }
+}
diff --git a/Filtration/ViewModels/ItemFilterScriptViewModel.cs b/Filtration/ViewModels/ItemFilterScriptViewModel.cs
index 6cb4de4..f7f1b5d 100644
--- a/Filtration/ViewModels/ItemFilterScriptViewModel.cs
+++ b/Filtration/ViewModels/ItemFilterScriptViewModel.cs
@@ -6,7 +6,6 @@ using System.ComponentModel;
using System.Diagnostics;
using System.IO;
using System.Linq;
-using System.Text.RegularExpressions;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Data;
@@ -16,7 +15,6 @@ using Filtration.Common.Services;
using Filtration.Common.ViewModels;
using Filtration.Interface;
using Filtration.ObjectModel;
-using Filtration.ObjectModel.BlockItemBaseTypes;
using Filtration.ObjectModel.BlockItemTypes;
using Filtration.ObjectModel.Commands;
using Filtration.ObjectModel.Commands.ItemFilterScript;
@@ -185,23 +183,6 @@ namespace Filtration.ViewModels
icon.UriSource = new Uri("pack://application:,,,/Filtration;component/Resources/Icons/script_icon.png");
icon.EndInit();
IconSource = icon;
-
- _customSoundsAvailable = new ObservableCollection();
-
- var poeFolderFiles = Directory.GetFiles(persistenceService.DefaultPathOfExileDirectory() + "\\").Where(
- s => s.EndsWith(".mp3")
- || s.EndsWith(".wav")
- || s.EndsWith(".wma")
- || s.EndsWith(".3gp")
- || s.EndsWith(".aag")
- || s.EndsWith(".m4a")
- || s.EndsWith(".ogg")
- ).OrderBy(f => f);
-
- foreach(var file in poeFolderFiles)
- {
- _customSoundsAvailable.Add(file.Replace(persistenceService.DefaultPathOfExileDirectory() + "\\", ""));
- }
}
public void Initialise(IItemFilterScript itemFilterScript, bool newScript)
@@ -226,6 +207,23 @@ namespace Filtration.ViewModels
}
}
+ _customSoundsAvailable = new ObservableCollection();
+
+ var poeFolderFiles = Directory.GetFiles(_persistenceService.ItemFilterScriptDirectory + "\\").Where(
+ s => s.EndsWith(".mp3")
+ || s.EndsWith(".wav")
+ || s.EndsWith(".wma")
+ || s.EndsWith(".3gp")
+ || s.EndsWith(".aag")
+ || s.EndsWith(".m4a")
+ || s.EndsWith(".ogg")
+ ).OrderBy(f => f);
+
+ foreach (var file in poeFolderFiles)
+ {
+ _customSoundsAvailable.Add(file.Replace(_persistenceService.ItemFilterScriptDirectory + "\\", ""));
+ }
+
Script.ItemFilterBlocks.CollectionChanged += ItemFilterBlocksOnCollectionChanged;
_customSoundsAvailable.CollectionChanged += CustomSoundsAvailableOnCollectionChanged;
diff --git a/Filtration/ViewModels/MainWindowViewModel.cs b/Filtration/ViewModels/MainWindowViewModel.cs
index 8c0fd30..c549ae9 100644
--- a/Filtration/ViewModels/MainWindowViewModel.cs
+++ b/Filtration/ViewModels/MainWindowViewModel.cs
@@ -6,7 +6,6 @@ using System.Linq;
using System.Reflection;
using System.Threading.Tasks;
using System.Windows;
-using System.Windows.Forms;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using Filtration.Common.Services;
@@ -45,6 +44,7 @@ namespace Filtration.ViewModels
{
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
+ private readonly IItemFilterScriptDirectoryService _itemFilterScriptDirectoryService;
private readonly IItemFilterScriptRepository _itemFilterScriptRepository;
private readonly IItemFilterScriptTranslator _itemFilterScriptTranslator;
private readonly IReplaceColorsViewModel _replaceColorsViewModel;
@@ -58,7 +58,8 @@ namespace Filtration.ViewModels
private int _windowWidth;
private int _windowHeight;
- public MainWindowViewModel(IItemFilterScriptRepository itemFilterScriptRepository,
+ public MainWindowViewModel(IItemFilterScriptDirectoryService itemFilterScriptDirectoryService,
+ IItemFilterScriptRepository itemFilterScriptRepository,
IItemFilterScriptTranslator itemFilterScriptTranslator,
IReplaceColorsViewModel replaceColorsViewModel,
IAvalonDockWorkspaceViewModel avalonDockWorkspaceViewModel,
@@ -69,6 +70,7 @@ namespace Filtration.ViewModels
IClipboardService clipboardService,
IUpdateViewModel updateViewModel)
{
+ _itemFilterScriptDirectoryService = itemFilterScriptDirectoryService;
_itemFilterScriptRepository = itemFilterScriptRepository;
_itemFilterScriptTranslator = itemFilterScriptTranslator;
_replaceColorsViewModel = replaceColorsViewModel;
@@ -144,11 +146,6 @@ namespace Filtration.ViewModels
ClearFiltersCommand = new RelayCommand(OnClearFiltersCommand, () => ActiveDocumentIsScript);
ClearStylesCommand = new RelayCommand(OnClearStylesCommand, () => ActiveDocumentIsScript);
- if (string.IsNullOrEmpty(_itemFilterScriptRepository.GetItemFilterScriptDirectory()))
- {
- SetItemFilterScriptDirectory();
- }
-
var icon = new BitmapImage();
icon.BeginInit();
icon.UriSource = new Uri("pack://application:,,,/Filtration;component/Resources/Icons/filtration_icon.png");
@@ -547,7 +544,7 @@ namespace Filtration.ViewModels
var openFileDialog = new OpenFileDialog
{
Filter = "Filter Files (*.filter)|*.filter|All Files (*.*)|*.*",
- InitialDirectory = _itemFilterScriptRepository.GetItemFilterScriptDirectory()
+ InitialDirectory = _itemFilterScriptDirectoryService.ItemFilterScriptDirectory
};
return openFileDialog.ShowDialog() != true ? string.Empty : openFileDialog.FileName;
@@ -558,27 +555,12 @@ namespace Filtration.ViewModels
var openFileDialog = new OpenFileDialog
{
Filter = "Filter Theme Files (*.filtertheme)|*.filtertheme|All Files (*.*)|*.*",
- InitialDirectory = _itemFilterScriptRepository.GetItemFilterScriptDirectory()
- };
+ InitialDirectory = _itemFilterScriptDirectoryService.ItemFilterScriptDirectory
+ };
return openFileDialog.ShowDialog() != true ? string.Empty : openFileDialog.FileName;
}
- private void SetItemFilterScriptDirectory()
- {
- var dlg = new FolderBrowserDialog
- {
- Description = @"Select your Path of Exile data directory, usually in Documents\My Games",
- ShowNewFolderButton = false
- };
- var result = dlg.ShowDialog();
-
- if (result == DialogResult.OK)
- {
- _itemFilterScriptRepository.SetItemFilterScriptDirectory(dlg.SelectedPath);
- }
- }
-
private async Task OnSaveDocumentCommandAsync()
{
await ((IEditableDocument)_avalonDockWorkspaceViewModel.ActiveDocument).SaveAsync();
diff --git a/Filtration/ViewModels/SettingsPageViewModel.cs b/Filtration/ViewModels/SettingsPageViewModel.cs
index 53102b5..a2600fa 100644
--- a/Filtration/ViewModels/SettingsPageViewModel.cs
+++ b/Filtration/ViewModels/SettingsPageViewModel.cs
@@ -1,11 +1,7 @@
-using System.IO;
-using System.Windows;
-using Filtration.Common.Services;
-using Filtration.Properties;
+using Filtration.Properties;
using Filtration.Services;
using GalaSoft.MvvmLight;
using GalaSoft.MvvmLight.CommandWpf;
-using Microsoft.WindowsAPICodePack.Dialogs;
namespace Filtration.ViewModels
{
@@ -20,13 +16,11 @@ namespace Filtration.ViewModels
internal class SettingsPageViewModel : ViewModelBase, ISettingsPageViewModel
{
- private readonly IItemFilterPersistenceService _itemFilterPersistenceService;
- private readonly IMessageBoxService _messageBoxService;
+ private readonly IItemFilterScriptDirectoryService _itemFilterScriptDirectoryService;
- public SettingsPageViewModel(IItemFilterPersistenceService itemFilterPersistenceService, IMessageBoxService messageBoxService)
+ public SettingsPageViewModel(IItemFilterScriptDirectoryService itemFilterScriptDirectoryService)
{
- _itemFilterPersistenceService = itemFilterPersistenceService;
- _messageBoxService = messageBoxService;
+ _itemFilterScriptDirectoryService = itemFilterScriptDirectoryService;
SetItemFilterScriptDirectoryCommand = new RelayCommand(OnSetItemFilterScriptDirectoryCommand);
}
@@ -48,24 +42,8 @@ namespace Filtration.ViewModels
private void OnSetItemFilterScriptDirectoryCommand()
{
- using (var dialog = new CommonOpenFileDialog())
- {
- dialog.IsFolderPicker = true;
- var result = dialog.ShowDialog();
- if (result == CommonFileDialogResult.Ok)
- {
- try
- {
- _itemFilterPersistenceService.SetItemFilterScriptDirectory(dialog.FileName);
- RaisePropertyChanged(nameof(DefaultFilterDirectory));
- }
- catch (DirectoryNotFoundException)
- {
- _messageBoxService.Show("Error", "The entered Default Filter Directory is invalid or does not exist.",
- MessageBoxButton.OK, MessageBoxImage.Exclamation);
- }
- }
- }
+ _itemFilterScriptDirectoryService.SetItemFilterScriptDirectory();
+ RaisePropertyChanged(nameof(DefaultFilterDirectory));
}
}
}
diff --git a/Filtration/WindsorInstallers/ServicesInstaller.cs b/Filtration/WindsorInstallers/ServicesInstaller.cs
index f736c1e..8bf6258 100644
--- a/Filtration/WindsorInstallers/ServicesInstaller.cs
+++ b/Filtration/WindsorInstallers/ServicesInstaller.cs
@@ -14,6 +14,11 @@ namespace Filtration.WindsorInstallers
.ImplementedBy()
.LifeStyle.Singleton);
+ container.Register(
+ Component.For()
+ .ImplementedBy()
+ .LifeStyle.Singleton);
+
container.Register(
Component.For()
.ImplementedBy()
@@ -43,6 +48,11 @@ namespace Filtration.WindsorInstallers
Component.For()
.ImplementedBy()
.LifeStyle.Singleton);
+
+ container.Register(
+ Component.For()
+ .ImplementedBy()
+ .LifeStyle.Singleton);
}
}
}