Compare commits
14 Commits
1.0.0-beta
...
1.0.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
99abb276af | ||
|
|
073fe553ea | ||
|
|
0d81d0ef54 | ||
|
|
f04f9c20ed | ||
|
|
f71ba74425 | ||
|
|
04cbf218f3 | ||
|
|
6007306346 | ||
|
|
992bd21570 | ||
|
|
7d8b32b2e7 | ||
|
|
ac904c31ff | ||
|
|
0209de3817 | ||
|
|
1e26a2ae3e | ||
|
|
54b72e44b0 | ||
|
|
24df1d7687 |
@@ -7,6 +7,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
|||||||
{
|
{
|
||||||
public BackgroundColorBlockItem()
|
public BackgroundColorBlockItem()
|
||||||
{
|
{
|
||||||
|
Color = new Color { A = 240, R = 0, G = 0, B = 0 };
|
||||||
}
|
}
|
||||||
|
|
||||||
public BackgroundColorBlockItem(Color color) : base(color)
|
public BackgroundColorBlockItem(Color color) : base(color)
|
||||||
|
|||||||
@@ -7,6 +7,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
|||||||
{
|
{
|
||||||
public BorderColorBlockItem()
|
public BorderColorBlockItem()
|
||||||
{
|
{
|
||||||
|
Color = new Color {A = 240, R = 0, G = 0, B = 0};
|
||||||
}
|
}
|
||||||
|
|
||||||
public BorderColorBlockItem(Color color) : base(color)
|
public BorderColorBlockItem(Color color) : base(color)
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
using System.Windows.Media;
|
using System.Windows.Media;
|
||||||
using Filtration.ObjectModel.BlockItemBaseTypes;
|
using Filtration.ObjectModel.BlockItemBaseTypes;
|
||||||
|
using Filtration.ObjectModel.Enums;
|
||||||
|
|
||||||
namespace Filtration.ObjectModel.BlockItemTypes
|
namespace Filtration.ObjectModel.BlockItemTypes
|
||||||
{
|
{
|
||||||
@@ -7,6 +8,7 @@ namespace Filtration.ObjectModel.BlockItemTypes
|
|||||||
{
|
{
|
||||||
public TextColorBlockItem()
|
public TextColorBlockItem()
|
||||||
{
|
{
|
||||||
|
Color = PathOfExileNamedColors.Colors[PathOfExileNamedColor.WhiteItem];
|
||||||
}
|
}
|
||||||
|
|
||||||
public TextColorBlockItem(Color color) : base(color)
|
public TextColorBlockItem(Color color) : base(color)
|
||||||
|
|||||||
@@ -1308,6 +1308,86 @@ namespace Filtration.Parser.Tests.Services
|
|||||||
Assert.AreEqual(ItemRarity.Magic, (ItemRarity)rarityBlockItem.FilterPredicate.PredicateOperand);
|
Assert.AreEqual(ItemRarity.Magic, (ItemRarity)rarityBlockItem.FilterPredicate.PredicateOperand);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TranslateStringToItemFilterBlock_CustomSoundDocumentsFile()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var inputString = @"Show" + Environment.NewLine +
|
||||||
|
"CustomAlertSound \"test.mp3\"";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result.BlockItems.Count(b => b is CustomSoundBlockItem));
|
||||||
|
var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First();
|
||||||
|
Assert.AreEqual("test.mp3", customSoundBlockItem.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TranslateStringToItemFilterBlock_CustomSoundDocumentsRelativeFile()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var inputString = @"Show" + Environment.NewLine +
|
||||||
|
"CustomAlertSound \"Sounds\test.mp3\"";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result.BlockItems.Count(b => b is CustomSoundBlockItem));
|
||||||
|
var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First();
|
||||||
|
Assert.AreEqual("Sounds\test.mp3", customSoundBlockItem.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TranslateStringToItemFilterBlock_CustomSoundFullBackSlashPath()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var inputString = @"Show" + Environment.NewLine +
|
||||||
|
"CustomAlertSound \"C:\\Sounds\\test.mp3\"";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result.BlockItems.Count(b => b is CustomSoundBlockItem));
|
||||||
|
var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First();
|
||||||
|
Assert.AreEqual("C:\\Sounds\\test.mp3", customSoundBlockItem.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TranslateStringToItemFilterBlock_CustomSoundFullForwardSlashPath()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var inputString = @"Show" + Environment.NewLine +
|
||||||
|
"CustomAlertSound \"C:/Sounds/test.mp3\"";
|
||||||
|
|
||||||
|
//Act
|
||||||
|
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result.BlockItems.Count(b => b is CustomSoundBlockItem));
|
||||||
|
var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First();
|
||||||
|
Assert.AreEqual("C:/Sounds/test.mp3", customSoundBlockItem.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TranslateStringToItemFilterBlock_CustomSoundFullMixedPath()
|
||||||
|
{
|
||||||
|
// Arrange
|
||||||
|
var inputString = @"Show" + Environment.NewLine +
|
||||||
|
"CustomAlertSound \"C:\\Sounds/test.mp3\"";
|
||||||
|
|
||||||
|
// Act
|
||||||
|
var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, _testUtility.MockItemFilterScript);
|
||||||
|
|
||||||
|
// Assert
|
||||||
|
Assert.AreEqual(1, result.BlockItems.Count(b => b is CustomSoundBlockItem));
|
||||||
|
var customSoundBlockItem = result.BlockItems.OfType<CustomSoundBlockItem>().First();
|
||||||
|
Assert.AreEqual("C:\\Sounds/test.mp3", customSoundBlockItem.Value);
|
||||||
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TranslateItemFilterBlockToString_NothingPopulated_ReturnsCorrectString()
|
public void TranslateItemFilterBlockToString_NothingPopulated_ReturnsCorrectString()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -382,7 +382,7 @@ namespace Filtration.Parser.Services
|
|||||||
RemoveExistingBlockItemsOfType<SoundBlockItem>(block);
|
RemoveExistingBlockItemsOfType<SoundBlockItem>(block);
|
||||||
RemoveExistingBlockItemsOfType<PositionalSoundBlockItem>(block);
|
RemoveExistingBlockItemsOfType<PositionalSoundBlockItem>(block);
|
||||||
|
|
||||||
var match = Regex.Match(trimmedLine, @"\S+\s+""(\S+)""");
|
var match = Regex.Match(trimmedLine, @"\S+\s+""([^\*\<\>\?|]+)""");
|
||||||
|
|
||||||
if (match.Success)
|
if (match.Success)
|
||||||
{
|
{
|
||||||
|
|||||||
14
Filtration/Enums/UpdateSource.cs
Normal file
14
Filtration/Enums/UpdateSource.cs
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Filtration.Enums
|
||||||
|
{
|
||||||
|
internal enum UpdateSource
|
||||||
|
{
|
||||||
|
GitHub,
|
||||||
|
Local
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -203,6 +203,7 @@
|
|||||||
<Compile Include="Converters\HashSignRemovalConverter.cs" />
|
<Compile Include="Converters\HashSignRemovalConverter.cs" />
|
||||||
<Compile Include="Converters\ItemRarityConverter.cs" />
|
<Compile Include="Converters\ItemRarityConverter.cs" />
|
||||||
<Compile Include="Converters\TreeViewMarginConverter.cs" />
|
<Compile Include="Converters\TreeViewMarginConverter.cs" />
|
||||||
|
<Compile Include="Enums\UpdateSource.cs" />
|
||||||
<Compile Include="Models\UpdateData.cs" />
|
<Compile Include="Models\UpdateData.cs" />
|
||||||
<Compile Include="Properties\Annotations.cs" />
|
<Compile Include="Properties\Annotations.cs" />
|
||||||
<Compile Include="Repositories\ItemFilterScriptRepository.cs" />
|
<Compile Include="Repositories\ItemFilterScriptRepository.cs" />
|
||||||
|
|||||||
@@ -9,13 +9,9 @@
|
|||||||
<description>A Path of Exile loot filter script editor</description>
|
<description>A Path of Exile loot filter script editor</description>
|
||||||
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
<requireLicenseAcceptance>false</requireLicenseAcceptance>
|
||||||
<copyright>Copyright 2018</copyright>
|
<copyright>Copyright 2018</copyright>
|
||||||
<releaseNotes>Still no 1.0.0 release notes
|
<releaseNotes>* Fixed the Block Output Preview pane not working
|
||||||
|
* The Block Output Preview pane now supports previewing multiple selected blocks
|
||||||
Changes since 1.0.0-beta1:
|
* The Block Output Preview pane now supports selecting the text within it</releaseNotes>
|
||||||
|
|
||||||
* Static data (ItemBaseTypes and ItemClasses) is now correctly loaded from embedded resources instead of the legacy text files in appdata
|
|
||||||
* Updates to static data files
|
|
||||||
* Disabled setting themes for MinimapIcon, PlayEffect and SetFontSize blocks as a temporary fix for issue #68</releaseNotes>
|
|
||||||
<dependencies />
|
<dependencies />
|
||||||
</metadata>
|
</metadata>
|
||||||
<files>
|
<files>
|
||||||
|
|||||||
@@ -10,8 +10,8 @@ using System.Runtime.CompilerServices;
|
|||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
|
|
||||||
[assembly: AssemblyVersion("1.0.0")]
|
[assembly: AssemblyVersion("1.0.1")]
|
||||||
[assembly: AssemblyInformationalVersion("1.0.0-beta2")]
|
[assembly: AssemblyInformationalVersion("1.0.1")]
|
||||||
|
|
||||||
[assembly: InternalsVisibleTo("Filtration.Tests")]
|
[assembly: InternalsVisibleTo("Filtration.Tests")]
|
||||||
[assembly: InternalsVisibleTo("Filtration.ItemFilterPreview.Tests")]
|
[assembly: InternalsVisibleTo("Filtration.ItemFilterPreview.Tests")]
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ namespace Filtration.Services
|
|||||||
|
|
||||||
_mainWindow.Show();
|
_mainWindow.Show();
|
||||||
|
|
||||||
await _updateService.CheckForUpdates();
|
await _updateService.CheckForUpdatesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs e)
|
private void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs e)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Text.RegularExpressions;
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
using Filtration.Enums;
|
||||||
using Filtration.Properties;
|
using Filtration.Properties;
|
||||||
using NLog;
|
using NLog;
|
||||||
using Squirrel;
|
using Squirrel;
|
||||||
@@ -52,7 +53,7 @@ namespace Filtration.Services
|
|||||||
|
|
||||||
string LatestReleaseVersion { get; }
|
string LatestReleaseVersion { get; }
|
||||||
|
|
||||||
Task CheckForUpdates();
|
Task CheckForUpdatesAsync();
|
||||||
|
|
||||||
Task DownloadUpdatesAsync();
|
Task DownloadUpdatesAsync();
|
||||||
|
|
||||||
@@ -63,13 +64,16 @@ namespace Filtration.Services
|
|||||||
|
|
||||||
internal class UpdateService : IUpdateService
|
internal class UpdateService : IUpdateService
|
||||||
{
|
{
|
||||||
private readonly ISettingsService _settingsService;
|
|
||||||
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
private static readonly Logger Logger = LogManager.GetCurrentClassLogger();
|
||||||
|
|
||||||
private const string _localUpdatePath = @"C:\Repos\Filtration\Releases";
|
private const string _localUpdatePath = @"C:\Repos\Filtration\Releases";
|
||||||
|
|
||||||
|
private readonly ISettingsService _settingsService;
|
||||||
|
private readonly UpdateSource _updateSource = UpdateSource.GitHub;
|
||||||
|
|
||||||
private ReleaseEntry _latestRelease;
|
private ReleaseEntry _latestRelease;
|
||||||
private UpdateInfo _updates;
|
private UpdateInfo _updates;
|
||||||
|
private bool _downloadPrereleaseUpdates;
|
||||||
private UpdateStatus _updateStatus;
|
private UpdateStatus _updateStatus;
|
||||||
|
|
||||||
public UpdateService(ISettingsService settingsService)
|
public UpdateService(ISettingsService settingsService)
|
||||||
@@ -96,35 +100,42 @@ namespace Filtration.Services
|
|||||||
|
|
||||||
public string LatestReleaseVersion { get; private set; }
|
public string LatestReleaseVersion { get; private set; }
|
||||||
|
|
||||||
public async Task CheckForUpdates()
|
public async Task CheckForUpdatesAsync()
|
||||||
{
|
{
|
||||||
if (UpdateStatus != UpdateStatus.NoUpdateAvailable)
|
if (UpdateStatus != UpdateStatus.NoUpdateAvailable)
|
||||||
{
|
{
|
||||||
throw new InvalidOperationException();
|
throw new InvalidOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
Logger.Debug("Checking for update...");
|
Logger.Debug("Checking for update...");
|
||||||
UpdateStatus = UpdateStatus.CheckingForUpdate;
|
UpdateStatus = UpdateStatus.CheckingForUpdate;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
bool downloadPrereleaseUpdates;
|
_downloadPrereleaseUpdates = Settings.Default.DownloadPrereleaseUpdates;
|
||||||
downloadPrereleaseUpdates = Settings.Default.DownloadPrereleaseUpdates;
|
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
downloadPrereleaseUpdates = true;
|
_downloadPrereleaseUpdates = true;
|
||||||
#endif
|
#endif
|
||||||
using (var mgr = await UpdateManager.GitHubUpdateManager("https://github.com/ben-wallis/Filtration", prerelease: downloadPrereleaseUpdates))
|
|
||||||
|
async Task CheckForUpdatesAsync(IUpdateManager updateManager)
|
||||||
{
|
{
|
||||||
_updates = await mgr.CheckForUpdate(progress: progress => UpdateProgressChanged?.Invoke(this, new UpdateProgressChangedEventArgs(progress)));
|
_updates = await updateManager.CheckForUpdate(progress: progress => UpdateProgressChanged?.Invoke(this, new UpdateProgressChangedEventArgs(progress)));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Local file update source for testing
|
if (_updateSource == UpdateSource.GitHub)
|
||||||
//using (var mgr = new UpdateManager(_localUpdatePath))
|
{
|
||||||
//{
|
using (var updateManager = await UpdateManager.GitHubUpdateManager("https://github.com/ben-wallis/Filtration", prerelease: _downloadPrereleaseUpdates))
|
||||||
|
{
|
||||||
// _updates = await mgr.CheckForUpdate(progress: progress => UpdateProgressChanged?.Invoke(this, new UpdateProgressChangedEventArgs(progress)));
|
await CheckForUpdatesAsync(updateManager);
|
||||||
//}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var updateManager = new UpdateManager(_localUpdatePath))
|
||||||
|
{
|
||||||
|
await CheckForUpdatesAsync(updateManager);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
{
|
{
|
||||||
@@ -133,25 +144,12 @@ namespace Filtration.Services
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (_updates.ReleasesToApply.Any())
|
if (_updates.ReleasesToApply.Any())
|
||||||
{
|
{
|
||||||
_latestRelease = _updates.ReleasesToApply.OrderBy(x => x.Version).Last();
|
_latestRelease = _updates.ReleasesToApply.OrderBy(x => x.Version).Last();
|
||||||
LatestReleaseVersion = _latestRelease.Version.ToString();
|
LatestReleaseVersion = _latestRelease.Version.ToString();
|
||||||
|
|
||||||
Logger.Debug($"Update found ({LatestReleaseVersion}), fetching release notes...");
|
Logger.Debug($"Update found ({LatestReleaseVersion})");
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
var releaseNotes = _latestRelease.GetReleaseNotes(_localUpdatePath);
|
|
||||||
LatestReleaseNotes = ProcessReleaseNotes(releaseNotes);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
Logger.Error(e);
|
|
||||||
UpdateStatus = UpdateStatus.Error;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateStatus = UpdateStatus.UpdateAvailable;
|
UpdateStatus = UpdateStatus.UpdateAvailable;
|
||||||
}
|
}
|
||||||
@@ -162,7 +160,7 @@ namespace Filtration.Services
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string ProcessReleaseNotes(string rawReleaseNotes)
|
private static string ProcessReleaseNotes(string rawReleaseNotes)
|
||||||
{
|
{
|
||||||
var regex = new Regex(@"<!\[CDATA\[(.*)]]>", RegexOptions.Singleline);
|
var regex = new Regex(@"<!\[CDATA\[(.*)]]>", RegexOptions.Singleline);
|
||||||
var matches = regex.Match(rawReleaseNotes);
|
var matches = regex.Match(rawReleaseNotes);
|
||||||
@@ -184,11 +182,31 @@ namespace Filtration.Services
|
|||||||
|
|
||||||
UpdateStatus = UpdateStatus.Downloading;
|
UpdateStatus = UpdateStatus.Downloading;
|
||||||
|
|
||||||
|
async Task DownloadUpdatesAsync(IUpdateManager updateManager)
|
||||||
|
{
|
||||||
|
Logger.Debug("Downloading update...");
|
||||||
|
await updateManager.DownloadReleases(_updates.ReleasesToApply, OnProgressChanged);
|
||||||
|
|
||||||
|
Logger.Debug("Fetching release notes...");
|
||||||
|
var releaseNotes = _updates.FetchReleaseNotes();
|
||||||
|
LatestReleaseNotes = ProcessReleaseNotes(releaseNotes[_latestRelease]);
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var updateManager = new UpdateManager(_localUpdatePath))
|
if (_updateSource == UpdateSource.GitHub)
|
||||||
{
|
{
|
||||||
await updateManager.DownloadReleases(_updates.ReleasesToApply, OnProgressChanged);
|
using (var updateManager = await UpdateManager.GitHubUpdateManager("https://github.com/ben-wallis/Filtration", prerelease: _downloadPrereleaseUpdates))
|
||||||
|
{
|
||||||
|
await DownloadUpdatesAsync(updateManager);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var updateManager = new UpdateManager(_localUpdatePath))
|
||||||
|
{
|
||||||
|
await DownloadUpdatesAsync(updateManager);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@@ -215,11 +233,22 @@ namespace Filtration.Services
|
|||||||
// wipes out user settings due to the application directory changing with each update
|
// wipes out user settings due to the application directory changing with each update
|
||||||
_settingsService.BackupSettings();
|
_settingsService.BackupSettings();
|
||||||
|
|
||||||
|
Logger.Debug("Applying update...");
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
using (var updateManager = new UpdateManager(_localUpdatePath))
|
if (_updateSource == UpdateSource.GitHub)
|
||||||
{
|
{
|
||||||
await updateManager.ApplyReleases(_updates, OnProgressChanged);
|
using (var mgr = await UpdateManager.GitHubUpdateManager("https://github.com/ben-wallis/Filtration", prerelease: _downloadPrereleaseUpdates))
|
||||||
|
{
|
||||||
|
await mgr.ApplyReleases(_updates, OnProgressChanged);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
using (var updateManager = new UpdateManager(_localUpdatePath))
|
||||||
|
{
|
||||||
|
await updateManager.ApplyReleases(_updates, OnProgressChanged);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (Exception e)
|
catch (Exception e)
|
||||||
@@ -229,6 +258,7 @@ namespace Filtration.Services
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Logger.Debug("Update complete");
|
||||||
UpdateStatus = UpdateStatus.UpdateComplete;
|
UpdateStatus = UpdateStatus.UpdateComplete;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ using GalaSoft.MvvmLight.CommandWpf;
|
|||||||
using GalaSoft.MvvmLight.Messaging;
|
using GalaSoft.MvvmLight.Messaging;
|
||||||
using Microsoft.Win32;
|
using Microsoft.Win32;
|
||||||
using Xceed.Wpf.Toolkit;
|
using Xceed.Wpf.Toolkit;
|
||||||
|
using static System.Int32;
|
||||||
|
|
||||||
namespace Filtration.ViewModels
|
namespace Filtration.ViewModels
|
||||||
{
|
{
|
||||||
@@ -59,8 +60,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public override void Initialise(IItemFilterBlockBase itemFilterBlockBase, IItemFilterScriptViewModel parentScriptViewModel)
|
public override void Initialise(IItemFilterBlockBase itemFilterBlockBase, IItemFilterScriptViewModel parentScriptViewModel)
|
||||||
{
|
{
|
||||||
var itemFilterBlock = itemFilterBlockBase as IItemFilterBlock;
|
if (!(itemFilterBlockBase is IItemFilterBlock itemFilterBlock) || parentScriptViewModel == null)
|
||||||
if (itemFilterBlock == null || parentScriptViewModel == null)
|
|
||||||
{
|
{
|
||||||
throw new ArgumentNullException(nameof(itemFilterBlock));
|
throw new ArgumentNullException(nameof(itemFilterBlock));
|
||||||
}
|
}
|
||||||
@@ -136,7 +136,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public bool AudioVisualBlockItemsGridVisible
|
public bool AudioVisualBlockItemsGridVisible
|
||||||
{
|
{
|
||||||
get { return _audioVisualBlockItemsGridVisible; }
|
get => _audioVisualBlockItemsGridVisible;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_audioVisualBlockItemsGridVisible = value;
|
_audioVisualBlockItemsGridVisible = value;
|
||||||
@@ -150,7 +150,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public bool DisplaySettingsPopupOpen
|
public bool DisplaySettingsPopupOpen
|
||||||
{
|
{
|
||||||
get { return _displaySettingsPopupOpen; }
|
get => _displaySettingsPopupOpen;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
_displaySettingsPopupOpen = value;
|
_displaySettingsPopupOpen = value;
|
||||||
@@ -205,7 +205,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public bool BlockEnabled
|
public bool BlockEnabled
|
||||||
{
|
{
|
||||||
get { return Block.Enabled; }
|
get => Block.Enabled;
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (Block.Enabled != value)
|
if (Block.Enabled != value)
|
||||||
@@ -219,10 +219,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public string BlockDescription
|
public string BlockDescription
|
||||||
{
|
{
|
||||||
get
|
get => Block.Description;
|
||||||
{
|
|
||||||
return Block.Description;
|
|
||||||
}
|
|
||||||
set
|
set
|
||||||
{
|
{
|
||||||
if (Block.Description != value)
|
if (Block.Description != value)
|
||||||
@@ -269,8 +266,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
newBlockItem.PropertyChanged += OnBlockItemChanged;
|
newBlockItem.PropertyChanged += OnBlockItemChanged;
|
||||||
|
|
||||||
var customSoundBlockItem = newBlockItem as CustomSoundBlockItem;
|
if(newBlockItem is CustomSoundBlockItem customSoundBlockItem && _parentScriptViewModel.CustomSoundsAvailable.Count > 0)
|
||||||
if(customSoundBlockItem != null && _parentScriptViewModel.CustomSoundsAvailable.Count > 0)
|
|
||||||
{
|
{
|
||||||
customSoundBlockItem.Value = _parentScriptViewModel.CustomSoundsAvailable[0];
|
customSoundBlockItem.Value = _parentScriptViewModel.CustomSoundsAvailable[0];
|
||||||
}
|
}
|
||||||
@@ -364,16 +360,14 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
private string ComputeFilePartFromNumber(string identifier)
|
private string ComputeFilePartFromNumber(string identifier)
|
||||||
{
|
{
|
||||||
if (Int32.TryParse(identifier, out int x))
|
if (TryParse(identifier, out int x))
|
||||||
{
|
{
|
||||||
if (x <= 9)
|
if (x <= 9)
|
||||||
{
|
{
|
||||||
return "AlertSound_0" + x + ".mp3";
|
return "AlertSound_0" + x + ".mp3";
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
return "AlertSound_" + x + ".mp3";
|
||||||
return "AlertSound_" + x + ".mp3";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return "";
|
return "";
|
||||||
@@ -431,11 +425,9 @@ namespace Filtration.ViewModels
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
_mediaPlayer.Open(new Uri(prefix + filePart, UriKind.Relative));
|
||||||
_mediaPlayer.Open(new Uri(prefix + filePart, UriKind.Relative));
|
_mediaPlayer.Play();
|
||||||
_mediaPlayer.Play();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnPlayPositionalSoundCommand()
|
private void OnPlayPositionalSoundCommand()
|
||||||
@@ -448,11 +440,9 @@ namespace Filtration.ViewModels
|
|||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
|
||||||
{
|
_mediaPlayer.Open(new Uri(prefix + filePart, UriKind.Relative));
|
||||||
_mediaPlayer.Open(new Uri(prefix + filePart, UriKind.Relative));
|
_mediaPlayer.Play();
|
||||||
_mediaPlayer.Play();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnBlockEnabledStatusChanged(object sender, EventArgs e)
|
private void OnBlockEnabledStatusChanged(object sender, EventArgs e)
|
||||||
@@ -462,13 +452,12 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
private void OnBlockItemChanged(object sender, EventArgs e)
|
private void OnBlockItemChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
var itemFilterBlockItem = sender as IItemFilterBlockItem;
|
if (sender is IItemFilterBlockItem itemFilterBlockItem && itemFilterBlockItem.IsDirty)
|
||||||
if ( itemFilterBlockItem != null && itemFilterBlockItem.IsDirty)
|
|
||||||
{
|
{
|
||||||
IsDirty = true;
|
IsDirty = true;
|
||||||
}
|
}
|
||||||
var customSoundBlockItem = sender as CustomSoundBlockItem;
|
|
||||||
if (customSoundBlockItem != null)
|
if (sender is CustomSoundBlockItem customSoundBlockItem)
|
||||||
{
|
{
|
||||||
if (!string.IsNullOrWhiteSpace(customSoundBlockItem.Value) && _parentScriptViewModel.CustomSoundsAvailable.IndexOf(customSoundBlockItem.Value) < 0)
|
if (!string.IsNullOrWhiteSpace(customSoundBlockItem.Value) && _parentScriptViewModel.CustomSoundsAvailable.IndexOf(customSoundBlockItem.Value) < 0)
|
||||||
{
|
{
|
||||||
@@ -507,12 +496,11 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
private void OnCustomSoundFileDialog()
|
private void OnCustomSoundFileDialog()
|
||||||
{
|
{
|
||||||
OpenFileDialog fileDialog = new OpenFileDialog();
|
OpenFileDialog fileDialog = new OpenFileDialog {DefaultExt = ".mp3"};
|
||||||
fileDialog.DefaultExt = ".mp3";
|
var poePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\My Games\Path of Exile\";
|
||||||
var poePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).ToString() + @"\My Games\Path of Exile\";
|
|
||||||
fileDialog.InitialDirectory = poePath;
|
fileDialog.InitialDirectory = poePath;
|
||||||
|
|
||||||
Nullable<bool> result = fileDialog.ShowDialog();
|
bool? result = fileDialog.ShowDialog();
|
||||||
if (result == true)
|
if (result == true)
|
||||||
{
|
{
|
||||||
var fileName = fileDialog.FileName;
|
var fileName = fileDialog.FileName;
|
||||||
@@ -533,7 +521,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
private void OnPlayCustomSoundCommand()
|
private void OnPlayCustomSoundCommand()
|
||||||
{
|
{
|
||||||
var poePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments).ToString() + @"\My Games\Path of Exile\";
|
var poePath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + @"\My Games\Path of Exile\";
|
||||||
var identifier = BlockItems.OfType<CustomSoundBlockItem>().First().Value;
|
var identifier = BlockItems.OfType<CustomSoundBlockItem>().First().Value;
|
||||||
|
|
||||||
if(!Path.IsPathRooted(identifier))
|
if(!Path.IsPathRooted(identifier))
|
||||||
@@ -569,9 +557,11 @@ namespace Filtration.ViewModels
|
|||||||
var newGroup = new ItemFilterBlockGroup(BlockGroupSearch, null, AdvancedBlockGroup, false);
|
var newGroup = new ItemFilterBlockGroup(BlockGroupSearch, null, AdvancedBlockGroup, false);
|
||||||
if (baseBlock.BlockGroup == null)
|
if (baseBlock.BlockGroup == null)
|
||||||
{
|
{
|
||||||
baseBlock.BlockGroup = new ItemFilterBlockGroup("", null, false, true);
|
baseBlock.BlockGroup = new ItemFilterBlockGroup("", null, false, true)
|
||||||
baseBlock.BlockGroup.IsShowChecked = baseBlock.Action == BlockAction.Show;
|
{
|
||||||
baseBlock.BlockGroup.IsEnableChecked = BlockEnabled;
|
IsShowChecked = baseBlock.Action == BlockAction.Show,
|
||||||
|
IsEnableChecked = BlockEnabled
|
||||||
|
};
|
||||||
}
|
}
|
||||||
newGroup.AddOrJoinBlockGroup(baseBlock.BlockGroup);
|
newGroup.AddOrJoinBlockGroup(baseBlock.BlockGroup);
|
||||||
blockToAdd.AddOrJoinBlockGroup(newGroup);
|
blockToAdd.AddOrJoinBlockGroup(newGroup);
|
||||||
@@ -611,8 +601,7 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
private void UpdateBlockGroups()
|
private void UpdateBlockGroups()
|
||||||
{
|
{
|
||||||
var baseBlock = Block as ItemFilterBlock;
|
if (!(Block is ItemFilterBlock baseBlock))
|
||||||
if (baseBlock == null)
|
|
||||||
return;
|
return;
|
||||||
|
|
||||||
var currentGroup = baseBlock.BlockGroup;
|
var currentGroup = baseBlock.BlockGroup;
|
||||||
|
|||||||
@@ -143,6 +143,7 @@ namespace Filtration.ViewModels
|
|||||||
{
|
{
|
||||||
RaisePropertyChanged(nameof(SelectedBlockViewModels));
|
RaisePropertyChanged(nameof(SelectedBlockViewModels));
|
||||||
RaisePropertyChanged(nameof(LastSelectedBlockViewModel));
|
RaisePropertyChanged(nameof(LastSelectedBlockViewModel));
|
||||||
|
Messenger.Default.Send(new NotificationMessage("LastSelectedBlockChanged"));
|
||||||
};
|
};
|
||||||
_lastAddedBlocks = new List<IItemFilterBlockViewModelBase>();
|
_lastAddedBlocks = new List<IItemFilterBlockViewModelBase>();
|
||||||
_showAdvanced = Settings.Default.ShowAdvanced;
|
_showAdvanced = Settings.Default.ShowAdvanced;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System;
|
using System;
|
||||||
|
using System.Linq;
|
||||||
using System.Windows.Media.Imaging;
|
using System.Windows.Media.Imaging;
|
||||||
using Filtration.Parser.Interface.Services;
|
using Filtration.Parser.Interface.Services;
|
||||||
using GalaSoft.MvvmLight.Messaging;
|
using GalaSoft.MvvmLight.Messaging;
|
||||||
@@ -28,19 +29,10 @@ namespace Filtration.ViewModels.ToolPanes
|
|||||||
|
|
||||||
Messenger.Default.Register<NotificationMessage>(this, message =>
|
Messenger.Default.Register<NotificationMessage>(this, message =>
|
||||||
{
|
{
|
||||||
switch (message.Notification)
|
if (message.Notification == "LastSelectedBlockChanged")
|
||||||
{
|
OnLastSelectedBlockChanged(this, EventArgs.Empty);
|
||||||
case "LastSelectedBlockChanged":
|
else if (message.Notification == "ActiveDocumentChanged")
|
||||||
{
|
OnLastSelectedBlockChanged(this, EventArgs.Empty);
|
||||||
OnLastSelectedBlockChanged(this, EventArgs.Empty);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
case "ActiveDocumentChanged":
|
|
||||||
{
|
|
||||||
OnLastSelectedBlockChanged(this, EventArgs.Empty);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -49,7 +41,7 @@ namespace Filtration.ViewModels.ToolPanes
|
|||||||
|
|
||||||
public string PreviewText
|
public string PreviewText
|
||||||
{
|
{
|
||||||
get { return _previewText; }
|
get => _previewText;
|
||||||
private set
|
private set
|
||||||
{
|
{
|
||||||
_previewText = value;
|
_previewText = value;
|
||||||
@@ -64,15 +56,16 @@ namespace Filtration.ViewModels.ToolPanes
|
|||||||
|
|
||||||
private void OnLastSelectedBlockChanged(object sender, EventArgs e)
|
private void OnLastSelectedBlockChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if (AvalonDockWorkspaceViewModel.ActiveScriptViewModel?.LastSelectedBlockViewModel == null)
|
if (AvalonDockWorkspaceViewModel.ActiveScriptViewModel?.SelectedBlockViewModels == null ||
|
||||||
|
AvalonDockWorkspaceViewModel.ActiveScriptViewModel.SelectedBlockViewModels.Count == 0)
|
||||||
{
|
{
|
||||||
PreviewText = string.Empty;
|
PreviewText = string.Empty;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
PreviewText =
|
PreviewText = AvalonDockWorkspaceViewModel.ActiveScriptViewModel.SelectedBlockViewModels
|
||||||
_itemFilterBlockTranslator.TranslateItemFilterBlockBaseToString(
|
.Select(s => _itemFilterBlockTranslator.TranslateItemFilterBlockBaseToString(s.BaseBlock))
|
||||||
AvalonDockWorkspaceViewModel.ActiveScriptViewModel.LastSelectedBlockViewModel.BaseBlock);
|
.Aggregate((prev, curr) => prev + Environment.NewLine + Environment.NewLine + curr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -106,33 +106,33 @@ namespace Filtration.ViewModels
|
|||||||
switch (UpdateStatus)
|
switch (UpdateStatus)
|
||||||
{
|
{
|
||||||
case UpdateStatus.UpdateAvailable:
|
case UpdateStatus.UpdateAvailable:
|
||||||
{
|
{
|
||||||
await _updateService.DownloadUpdatesAsync();
|
await _updateService.DownloadUpdatesAsync();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case UpdateStatus.ReadyToApplyUpdate:
|
case UpdateStatus.ReadyToApplyUpdate:
|
||||||
{
|
|
||||||
if (!_updateTabShown)
|
|
||||||
{
|
{
|
||||||
// When the update has downloaded and is ready to apply, clicking the button
|
if (!_updateTabShown)
|
||||||
// closes the update popup and shows the update tab.
|
{
|
||||||
_avalonDockWorkspaceViewModel.AddDocument(this);
|
// When the update has downloaded and is ready to apply, clicking the button
|
||||||
Visible = false;
|
// closes the update popup and shows the update tab.
|
||||||
_updateTabShown = true;
|
_avalonDockWorkspaceViewModel.AddDocument(this);
|
||||||
NextStepButtonText = "Update";
|
Visible = false;
|
||||||
}
|
_updateTabShown = true;
|
||||||
else
|
NextStepButtonText = "Update";
|
||||||
{
|
}
|
||||||
await _updateService.ApplyUpdatesAsync();
|
else
|
||||||
}
|
{
|
||||||
|
await _updateService.ApplyUpdatesAsync();
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case UpdateStatus.UpdateComplete:
|
case UpdateStatus.UpdateComplete:
|
||||||
{
|
{
|
||||||
_updateService.RestartAfterUpdate();
|
_updateService.RestartAfterUpdate();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -144,7 +144,6 @@ namespace Filtration.ViewModels
|
|||||||
{
|
{
|
||||||
Visible = true;
|
Visible = true;
|
||||||
NextStepButtonText = "Download";
|
NextStepButtonText = "Download";
|
||||||
RaisePropertyChanged(nameof(ReleaseNotes));
|
|
||||||
RaisePropertyChanged(nameof(Version));
|
RaisePropertyChanged(nameof(Version));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -156,6 +155,7 @@ namespace Filtration.ViewModels
|
|||||||
}
|
}
|
||||||
case UpdateStatus.ReadyToApplyUpdate:
|
case UpdateStatus.ReadyToApplyUpdate:
|
||||||
{
|
{
|
||||||
|
RaisePropertyChanged(nameof(ReleaseNotes));
|
||||||
NextStepButtonText = "Update Ready";
|
NextStepButtonText = "Update Ready";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -8,6 +8,6 @@
|
|||||||
mc:Ignorable="d"
|
mc:Ignorable="d"
|
||||||
d:DesignHeight="300" d:DesignWidth="300">
|
d:DesignHeight="300" d:DesignWidth="300">
|
||||||
<Grid>
|
<Grid>
|
||||||
<TextBlock Text="{Binding PreviewText}" ToolTip="{Binding PreviewText}" Margin="10" />
|
<TextBox IsReadOnly="True" Text="{Binding PreviewText, Mode=OneWay}" ToolTip="{Binding PreviewText}" Padding="5" Background="Transparent" BorderThickness="0" />
|
||||||
</Grid>
|
</Grid>
|
||||||
</UserControl>
|
</UserControl>
|
||||||
|
|||||||
@@ -2,10 +2,9 @@
|
|||||||
|
|
||||||
Filtration is an editor for Path of Exile item filter scripts.
|
Filtration is an editor for Path of Exile item filter scripts.
|
||||||
|
|
||||||
## Current Release (Released 2018-08-30)
|
## Current Release (Released 2018-09-30)
|
||||||
<b>Installer</b> <a href="https://github.com/ben-wallis/Filtration/releases/download/0.19/filtration_0.19_setup.exe">filtration_0.19_setup.exe</a>
|
<b>Installer</b><br>
|
||||||
|
<a href="https://github.com/ben-wallis/Filtration/releases/download/1.0.0/Setup.exe">Setup.exe</a>
|
||||||
<b>Zip File</b> <a href="https://github.com/ben-wallis/Filtration/releases/download/0.19/filtration_0.19.zip">filtration_0.19.zip</a>
|
|
||||||
|
|
||||||
## System Requirements
|
## System Requirements
|
||||||
Filtration requires .NET Framework 4.6.1 installed.
|
Filtration requires .NET Framework 4.6.1 installed.
|
||||||
|
|||||||
Reference in New Issue
Block a user