Compare commits
15 Commits
1.0.0-beta
...
1.0.3
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
c96aa472d9 | ||
|
|
d4e8a72d47 | ||
|
|
4c826f42fd | ||
|
|
4022cf12a0 | ||
|
|
8073948cfe | ||
|
|
f331bffee7 | ||
|
|
f238bbf856 | ||
|
|
a0191576f0 | ||
|
|
1d96b69800 | ||
|
|
99abb276af | ||
|
|
073fe553ea | ||
|
|
0d81d0ef54 | ||
|
|
f04f9c20ed | ||
|
|
f71ba74425 | ||
|
|
04cbf218f3 |
@@ -230,6 +230,7 @@
|
|||||||
<Compile Include="UserControls\ThemeComponentSelectionControl.xaml.cs">
|
<Compile Include="UserControls\ThemeComponentSelectionControl.xaml.cs">
|
||||||
<DependentUpon>ThemeComponentSelectionControl.xaml</DependentUpon>
|
<DependentUpon>ThemeComponentSelectionControl.xaml</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="Utility\SplatNLogAdapter.cs" />
|
||||||
<Compile Include="ViewModels\DesignTime\DesignTimeSettingsPageViewModel.cs" />
|
<Compile Include="ViewModels\DesignTime\DesignTimeSettingsPageViewModel.cs" />
|
||||||
<Compile Include="Views\AttachedProperties\SelectedItemsAttachedProperty.cs" />
|
<Compile Include="Views\AttachedProperties\SelectedItemsAttachedProperty.cs" />
|
||||||
<Compile Include="Utility\RoutedCommandHandler.cs" />
|
<Compile Include="Utility\RoutedCommandHandler.cs" />
|
||||||
|
|||||||
@@ -9,29 +9,13 @@
|
|||||||
<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>### New Features
|
<releaseNotes>* Added missing AlertSound mp3 resources to installer
|
||||||
|
* Fixed a crash related to performing certain commands with no blocks selected
|
||||||
* Implemented copying and pasting of multiple blocks (multiple blocks can be selected by holding the Ctrl and/or Shift keys while clicking)
|
* Added extra logging to updater</releaseNotes>
|
||||||
* Added Expand All, Collapse All, and Clear All Filters buttons to the Block Group Browser
|
|
||||||
* It is now possible to add/remove Block Groups from blocks (there is a new text box and a + button on each block in the editor)
|
|
||||||
* The Block Group browser now has an additional column of checkboxes which enables block groups to be enabled/disabled as well as shown/hidden
|
|
||||||
* Implemented a new auto-update mechanism - previous versions of Filtration will need to be manually uninstalled
|
|
||||||
|
|
||||||
### Bug Fixes / Improvements
|
|
||||||
|
|
||||||
* Fixed incorrect filtering behavior in the Block Group Browser
|
|
||||||
* Increased the maximum value of Quality block items to 30 from 20
|
|
||||||
* Changed default opacity of colours to 240 from 255
|
|
||||||
* MinimapIcon preview icons have been improved in appearance and now have a transparent background
|
|
||||||
* Fixed an issue where several section-related commands didn't correctly mark the script as unsaved
|
|
||||||
* The state (maximised/restored) and size of the application window is now remembered
|
|
||||||
* The visibility of the Section Browser, Block Group Browser, and Block Output Preview tool panes is now remembered
|
|
||||||
* The last opened script is now re-opened on when the application is launched
|
|
||||||
* Increased the HasExplicitMod block item limit from 1 to 8 since it is possible to use up to 8 of these blocks together to only match items that have an explicit mod from all HasExplicitMod block items within a block
|
|
||||||
* Changed the default colours of TextColor, BorderColor and BackgroundColor block items to sensible defaults instead of 100% transparent</releaseNotes>
|
|
||||||
<dependencies />
|
<dependencies />
|
||||||
</metadata>
|
</metadata>
|
||||||
<files>
|
<files>
|
||||||
<file src="*.*" target="lib\net45\" exclude="*.pdb;*.nupkg;*.vshost.*;*.xml"/>
|
<file src="*.*" target="lib\net45\" exclude="*.pdb;*.nupkg;*.vshost.*;*.xml"/>
|
||||||
|
<file src="Resources\AlertSounds\*.mp3" target="lib\net45\Resources\AlertSounds\" />
|
||||||
</files>
|
</files>
|
||||||
</package>
|
</package>
|
||||||
@@ -10,15 +10,21 @@
|
|||||||
layout="${longdate} ${uppercase:${level}} ${message}" />
|
layout="${longdate} ${uppercase:${level}} ${message}" />
|
||||||
<target xsi:type="File" name="fDebug" fileName="${basedir}/Filtration_debug_${shortdate}.log"
|
<target xsi:type="File" name="fDebug" fileName="${basedir}/Filtration_debug_${shortdate}.log"
|
||||||
layout="${longdate} ${uppercase:${level}} ${message}" />
|
layout="${longdate} ${uppercase:${level}} ${message}" />
|
||||||
|
<target xsi:type="File" name="fUpdater" fileName="${basedir}/Filtration_updater_${shortdate}.log"
|
||||||
|
layout="${longdate} ${uppercase:${level}} ${message}" />
|
||||||
<target xsi:type="Debugger" name="cDebug" layout="${longdate} ${uppercase:${level}} ${message}"/>
|
<target xsi:type="Debugger" name="cDebug" layout="${longdate} ${uppercase:${level}} ${message}"/>
|
||||||
</targets>
|
</targets>
|
||||||
|
|
||||||
<rules>
|
<rules>
|
||||||
|
|
||||||
|
<!-- Squirrel Updater Log-->
|
||||||
|
<logger name="SquirrelLogger" minlevel="Trace" writeTo="fUpdater" />
|
||||||
|
|
||||||
<!-- Uncomment the Debug line to enable Debug logging -->
|
<!-- Uncomment the Debug line to enable Debug logging -->
|
||||||
<!--<logger name="*" minlevel="Debug" writeTo="fDebug" final="true" />-->
|
<!--<logger name="*" minlevel="Debug" writeTo="fDebug" final="true" />-->
|
||||||
<logger name="*" minlevel="Error" writeTo="fErrors" />
|
<logger name="*" minlevel="Error" writeTo="fErrors" />
|
||||||
<logger name="*" minlevel="Trace" writeTo="cDebug" />
|
<logger name="*" minlevel="Trace" writeTo="cDebug" />
|
||||||
|
|
||||||
|
|
||||||
</rules>
|
</rules>
|
||||||
</nlog>
|
</nlog>
|
||||||
@@ -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.3")]
|
||||||
[assembly: AssemblyInformationalVersion("1.0.0-beta4")]
|
[assembly: AssemblyInformationalVersion("1.0.3")]
|
||||||
|
|
||||||
[assembly: InternalsVisibleTo("Filtration.Tests")]
|
[assembly: InternalsVisibleTo("Filtration.Tests")]
|
||||||
[assembly: InternalsVisibleTo("Filtration.ItemFilterPreview.Tests")]
|
[assembly: InternalsVisibleTo("Filtration.ItemFilterPreview.Tests")]
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using System.Text.RegularExpressions;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Filtration.Enums;
|
using Filtration.Enums;
|
||||||
using Filtration.Properties;
|
using Filtration.Properties;
|
||||||
|
using Filtration.Utility;
|
||||||
using NLog;
|
using NLog;
|
||||||
using Squirrel;
|
using Squirrel;
|
||||||
|
|
||||||
@@ -76,11 +77,14 @@ namespace Filtration.Services
|
|||||||
private bool _downloadPrereleaseUpdates;
|
private bool _downloadPrereleaseUpdates;
|
||||||
private UpdateStatus _updateStatus;
|
private UpdateStatus _updateStatus;
|
||||||
|
|
||||||
public UpdateService(ISettingsService settingsService)
|
public UpdateService(ISettingsService settingsService,
|
||||||
|
ISplatNLogAdapter splatNLogAdapter)
|
||||||
{
|
{
|
||||||
_settingsService = settingsService;
|
_settingsService = settingsService;
|
||||||
|
|
||||||
UpdateStatus = UpdateStatus.NoUpdateAvailable;
|
UpdateStatus = UpdateStatus.NoUpdateAvailable;
|
||||||
|
|
||||||
|
Splat.Locator.CurrentMutable.Register(() => splatNLogAdapter, typeof(Splat.ILogger));
|
||||||
}
|
}
|
||||||
|
|
||||||
public event EventHandler<UpdateStatusChangedEventArgs> UpdateStatusChanged;
|
public event EventHandler<UpdateStatusChangedEventArgs> UpdateStatusChanged;
|
||||||
|
|||||||
52
Filtration/Utility/SplatNLogAdapter.cs
Normal file
52
Filtration/Utility/SplatNLogAdapter.cs
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
using System;
|
||||||
|
using NLog;
|
||||||
|
using ILogger = Splat.ILogger;
|
||||||
|
using LogLevel = Splat.LogLevel;
|
||||||
|
|
||||||
|
namespace Filtration.Utility
|
||||||
|
{
|
||||||
|
public interface ISplatNLogAdapter
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public class SplatNLogAdapter : ILogger, ISplatNLogAdapter
|
||||||
|
{
|
||||||
|
private static readonly Logger Logger = LogManager.GetLogger("SquirrelLogger");
|
||||||
|
|
||||||
|
public void Write(string message, LogLevel logLevel)
|
||||||
|
{
|
||||||
|
switch (logLevel)
|
||||||
|
{
|
||||||
|
case LogLevel.Debug:
|
||||||
|
{
|
||||||
|
Logger.Debug(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case LogLevel.Info:
|
||||||
|
{
|
||||||
|
Logger.Info(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case LogLevel.Error:
|
||||||
|
{
|
||||||
|
Logger.Error(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case LogLevel.Fatal:
|
||||||
|
{
|
||||||
|
Logger.Fatal(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
case LogLevel.Warn:
|
||||||
|
{
|
||||||
|
Logger.Warn(message);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
throw new ArgumentOutOfRangeException(nameof(logLevel), logLevel, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public LogLevel Level { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
@@ -378,7 +379,7 @@ namespace Filtration.ViewModels
|
|||||||
{
|
{
|
||||||
for (var i = 0; i < SelectedBlockViewModels.Count; i++)
|
for (var i = 0; i < SelectedBlockViewModels.Count; i++)
|
||||||
{
|
{
|
||||||
if (!ViewItemFilterBlockViewModels.Contains(SelectedBlockViewModels[i]))
|
if (SelectedBlockViewModels[i] == null || !ViewItemFilterBlockViewModels.Contains(SelectedBlockViewModels[i]))
|
||||||
{
|
{
|
||||||
SelectedBlockViewModels.RemoveAt(i--);
|
SelectedBlockViewModels.RemoveAt(i--);
|
||||||
}
|
}
|
||||||
@@ -553,6 +554,8 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public bool CanModifySelectedBlocks()
|
public bool CanModifySelectedBlocks()
|
||||||
{
|
{
|
||||||
|
ValidateSelectedBlocks();
|
||||||
|
|
||||||
if (SelectedBlockViewModels.Count < 1)
|
if (SelectedBlockViewModels.Count < 1)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -569,6 +572,9 @@ namespace Filtration.ViewModels
|
|||||||
|
|
||||||
public bool CanModifyBlock(IItemFilterBlockViewModelBase itemFilterBlock)
|
public bool CanModifyBlock(IItemFilterBlockViewModelBase itemFilterBlock)
|
||||||
{
|
{
|
||||||
|
if (itemFilterBlock == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
if (itemFilterBlock is IItemFilterBlockViewModel)
|
if (itemFilterBlock is IItemFilterBlockViewModel)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
|
|||||||
@@ -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")
|
||||||
{
|
|
||||||
case "LastSelectedBlockChanged":
|
|
||||||
{
|
|
||||||
OnLastSelectedBlockChanged(this, EventArgs.Empty);
|
OnLastSelectedBlockChanged(this, EventArgs.Empty);
|
||||||
break;
|
else if (message.Notification == "ActiveDocumentChanged")
|
||||||
}
|
|
||||||
case "ActiveDocumentChanged":
|
|
||||||
{
|
|
||||||
OnLastSelectedBlockChanged(this, EventArgs.Empty);
|
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,17 @@ 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 ||
|
||||||
|
AvalonDockWorkspaceViewModel.ActiveScriptViewModel.SelectedBlockViewModels.FirstOrDefault() == null)
|
||||||
{
|
{
|
||||||
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,6 +2,7 @@
|
|||||||
using Castle.MicroKernel.SubSystems.Configuration;
|
using Castle.MicroKernel.SubSystems.Configuration;
|
||||||
using Castle.Windsor;
|
using Castle.Windsor;
|
||||||
using Filtration.Services;
|
using Filtration.Services;
|
||||||
|
using Filtration.Utility;
|
||||||
|
|
||||||
namespace Filtration.WindsorInstallers
|
namespace Filtration.WindsorInstallers
|
||||||
{
|
{
|
||||||
@@ -43,6 +44,11 @@ namespace Filtration.WindsorInstallers
|
|||||||
Component.For<ISettingsService>()
|
Component.For<ISettingsService>()
|
||||||
.ImplementedBy<SettingsService>()
|
.ImplementedBy<SettingsService>()
|
||||||
.LifeStyle.Singleton);
|
.LifeStyle.Singleton);
|
||||||
|
|
||||||
|
container.Register(
|
||||||
|
Component.For<ISplatNLogAdapter>()
|
||||||
|
.ImplementedBy<SplatNLogAdapter>()
|
||||||
|
.LifeStyle.Singleton);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
11
README.md
11
README.md
@@ -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-09-01)
|
## Current Release (Released 2018-09-30)
|
||||||
<b>Installer</b> <a href="https://github.com/ben-wallis/Filtration/releases/download/0.20/filtration_0.20_setup.exe">filtration_0.20_setup.exe</a>
|
<b>Installer</b><br>
|
||||||
|
<a href="https://github.com/ben-wallis/Filtration/releases/download/1.0.2/Setup.exe">Setup.exe</a>
|
||||||
<b>Zip File</b> <a href="https://github.com/ben-wallis/Filtration/releases/download/0.20/filtration_0.20.zip">filtration_0.20.zip</a>
|
|
||||||
|
|
||||||
## System Requirements
|
## System Requirements
|
||||||
Filtration requires .NET Framework 4.6.1 installed.
|
Filtration requires .NET Framework 4.6.1 installed.
|
||||||
@@ -25,10 +24,10 @@ If you'd like to make your script fully compatible with Filtration, please take
|
|||||||
## Screenshots
|
## Screenshots
|
||||||
|
|
||||||
##### Main Window
|
##### Main Window
|
||||||
<img src="http://i.imgur.com/eAsMoSo.png" />
|
<img src="https://i.imgur.com/d3tKEab.png" />
|
||||||
|
|
||||||
##### Theme Editor
|
##### Theme Editor
|
||||||
<img src="http://i.imgur.com/FJWJknO.png" />
|
<img src="https://i.imgur.com/Pi9wds1.png" />
|
||||||
|
|
||||||
## Contact
|
## Contact
|
||||||
You can find me on irc.freenode.net in #filtration
|
You can find me on irc.freenode.net in #filtration
|
||||||
|
|||||||
Reference in New Issue
Block a user