1
0
mirror of https://github.com/Artemis-RGB/Artemis synced 2025-12-13 05:48:35 +00:00

Replaced Extended WPF Toolkit with ColorBox this closes #143 and closes #171

Fixed VolumeDisplay settings not loading
Fixed Bubbles settings not loading
Updated Nuget packages
This commit is contained in:
SpoinkyNL 2016-10-10 23:56:11 +02:00
parent edd9cf5332
commit 64e2d4b4c8
13 changed files with 185 additions and 88 deletions

View File

@ -333,6 +333,10 @@
<assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" /> <assemblyIdentity name="NLog" publicKeyToken="5120e14c03d0593c" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" /> <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
</dependentAssembly> </dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="DeltaCompressionDotNet.MsDelta" publicKeyToken="46b2138a390abf55" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.1.0.0" />
</dependentAssembly>
</assemblyBinding> </assemblyBinding>
</runtime> </runtime>

View File

@ -147,20 +147,20 @@
<HintPath>..\packages\Colore.5.0.0\lib\net35\Corale.Colore.dll</HintPath> <HintPath>..\packages\Colore.5.0.0\lib\net35\Corale.Colore.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="CUE.NET, Version=1.1.0.1, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="CUE.NET, Version=1.1.0.2, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\CUE.NET.1.1.0.1\lib\net45\CUE.NET.dll</HintPath> <HintPath>..\packages\CUE.NET.1.1.0.2\lib\net45\CUE.NET.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="DeltaCompressionDotNet, Version=1.0.0.0, Culture=neutral, PublicKeyToken=1d14d6e5194e7f4a, processorArchitecture=MSIL"> <Reference Include="DeltaCompressionDotNet, Version=1.1.0.0, Culture=neutral, PublicKeyToken=1d14d6e5194e7f4a, processorArchitecture=MSIL">
<HintPath>..\packages\DeltaCompressionDotNet.1.0.0\lib\net45\DeltaCompressionDotNet.dll</HintPath> <HintPath>..\packages\DeltaCompressionDotNet.1.1.0\lib\net20\DeltaCompressionDotNet.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="DeltaCompressionDotNet.MsDelta, Version=1.0.0.0, Culture=neutral, PublicKeyToken=46b2138a390abf55, processorArchitecture=MSIL"> <Reference Include="DeltaCompressionDotNet.MsDelta, Version=1.1.0.0, Culture=neutral, PublicKeyToken=46b2138a390abf55, processorArchitecture=MSIL">
<HintPath>..\packages\DeltaCompressionDotNet.1.0.0\lib\net45\DeltaCompressionDotNet.MsDelta.dll</HintPath> <HintPath>..\packages\DeltaCompressionDotNet.1.1.0\lib\net20\DeltaCompressionDotNet.MsDelta.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="DeltaCompressionDotNet.PatchApi, Version=1.0.0.0, Culture=neutral, PublicKeyToken=3e8888ee913ed789, processorArchitecture=MSIL"> <Reference Include="DeltaCompressionDotNet.PatchApi, Version=1.1.0.0, Culture=neutral, PublicKeyToken=3e8888ee913ed789, processorArchitecture=MSIL">
<HintPath>..\packages\DeltaCompressionDotNet.1.0.0\lib\net45\DeltaCompressionDotNet.PatchApi.dll</HintPath> <HintPath>..\packages\DeltaCompressionDotNet.1.1.0\lib\net20\DeltaCompressionDotNet.PatchApi.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="DynamicExpresso.Core, Version=1.3.3.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="DynamicExpresso.Core, Version=1.3.3.0, Culture=neutral, processorArchitecture=MSIL">
@ -191,19 +191,19 @@
<SpecificVersion>False</SpecificVersion> <SpecificVersion>False</SpecificVersion>
</Reference> </Reference>
<Reference Include="Mono.Cecil, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> <Reference Include="Mono.Cecil, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<HintPath>..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.dll</HintPath> <HintPath>..\packages\Mono.Cecil.0.9.6.4\lib\net45\Mono.Cecil.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="Mono.Cecil.Mdb, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> <Reference Include="Mono.Cecil.Mdb, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<HintPath>..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Mdb.dll</HintPath> <HintPath>..\packages\Mono.Cecil.0.9.6.4\lib\net45\Mono.Cecil.Mdb.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="Mono.Cecil.Pdb, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> <Reference Include="Mono.Cecil.Pdb, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<HintPath>..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Pdb.dll</HintPath> <HintPath>..\packages\Mono.Cecil.0.9.6.4\lib\net45\Mono.Cecil.Pdb.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="Mono.Cecil.Rocks, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL"> <Reference Include="Mono.Cecil.Rocks, Version=0.9.6.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756, processorArchitecture=MSIL">
<HintPath>..\packages\Mono.Cecil.0.9.6.1\lib\net45\Mono.Cecil.Rocks.dll</HintPath> <HintPath>..\packages\Mono.Cecil.0.9.6.4\lib\net45\Mono.Cecil.Rocks.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="NAudio, Version=1.7.3.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="NAudio, Version=1.7.3.0, Culture=neutral, processorArchitecture=MSIL">
@ -235,7 +235,7 @@
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL"> <Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.3.7\lib\net45\NLog.dll</HintPath> <HintPath>..\packages\NLog.4.3.9\lib\net45\NLog.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="NuGet.Squirrel, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="NuGet.Squirrel, Version=3.0.0.0, Culture=neutral, processorArchitecture=MSIL">
@ -243,7 +243,7 @@
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="Process.NET, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Process.NET, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Process.NET.1.0.1\lib\Process.NET.dll</HintPath> <HintPath>..\packages\Process.NET.1.0.5\lib\Process.NET.dll</HintPath>
<Private>True</Private> <Private>True</Private>
</Reference> </Reference>
<Reference Include="Splat, Version=1.6.2.0, Culture=neutral, processorArchitecture=MSIL"> <Reference Include="Splat, Version=1.6.2.0, Culture=neutral, processorArchitecture=MSIL">
@ -292,30 +292,6 @@
<Reference Include="WindowsBase" /> <Reference Include="WindowsBase" />
<Reference Include="PresentationCore" /> <Reference Include="PresentationCore" />
<Reference Include="PresentationFramework" /> <Reference Include="PresentationFramework" />
<Reference Include="Xceed.Wpf.AvalonDock, Version=2.9.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.9\lib\net40\Xceed.Wpf.AvalonDock.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Aero, Version=2.9.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.9\lib\net40\Xceed.Wpf.AvalonDock.Themes.Aero.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.Metro, Version=2.9.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.9\lib\net40\Xceed.Wpf.AvalonDock.Themes.Metro.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xceed.Wpf.AvalonDock.Themes.VS2010, Version=2.9.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.9\lib\net40\Xceed.Wpf.AvalonDock.Themes.VS2010.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xceed.Wpf.DataGrid, Version=2.9.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.9\lib\net40\Xceed.Wpf.DataGrid.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xceed.Wpf.Toolkit, Version=2.9.0.0, Culture=neutral, PublicKeyToken=3e4669d2f30244f4, processorArchitecture=MSIL">
<HintPath>..\packages\Extended.Wpf.Toolkit.2.9\lib\net40\Xceed.Wpf.Toolkit.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ApplicationDefinition Include="App.xaml"> <ApplicationDefinition Include="App.xaml">
@ -648,6 +624,9 @@
<Compile Include="Properties\AssemblyInfo.cs"> <Compile Include="Properties\AssemblyInfo.cs">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<None Include="NLog.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Resources\keypress.png" /> <None Include="Resources\keypress.png" />
<None Include="Resources\mousemat.png" /> <None Include="Resources\mousemat.png" />
<EmbeddedResource Include="Modules\Games\UnrealTournament\Resources\ut-plugin.zip" /> <EmbeddedResource Include="Modules\Games\UnrealTournament\Resources\ut-plugin.zip" />
@ -655,9 +634,6 @@
<None Include="app.manifest"> <None Include="app.manifest">
<SubType>Designer</SubType> <SubType>Designer</SubType>
</None> </None>
<None Include="NLog.xsd">
<SubType>Designer</SubType>
</None>
<None Include="Resources\generic.png" /> <None Include="Resources\generic.png" />
<None Include="Resources\Keyboards\g810.png" /> <None Include="Resources\Keyboards\g810.png" />
<EmbeddedResource Include="Properties\Resources.resx"> <EmbeddedResource Include="Properties\Resources.resx">
@ -889,12 +865,12 @@
</ProjectReference> </ProjectReference>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\CUE.NET.1.1.0.1\build\net45\CUE.NET.targets" Condition="Exists('..\packages\CUE.NET.1.1.0.1\build\net45\CUE.NET.targets')" /> <Import Project="..\packages\CUE.NET.1.1.0.2\build\net45\CUE.NET.targets" Condition="Exists('..\packages\CUE.NET.1.1.0.2\build\net45\CUE.NET.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild"> <Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup> <PropertyGroup>
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText> <ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup> </PropertyGroup>
<Error Condition="!Exists('..\packages\CUE.NET.1.1.0.1\build\net45\CUE.NET.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CUE.NET.1.1.0.1\build\net45\CUE.NET.targets'))" /> <Error Condition="!Exists('..\packages\CUE.NET.1.1.0.2\build\net45\CUE.NET.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\CUE.NET.1.1.0.2\build\net45\CUE.NET.targets'))" />
</Target> </Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets. Other similar extension points exist, see Microsoft.Common.targets.

View File

@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Windows; using System.Windows;
using Artemis.DAL;
using Artemis.Managers; using Artemis.Managers;
using Artemis.Models; using Artemis.Models;
using Artemis.Profiles.Layers.Models; using Artemis.Profiles.Layers.Models;
@ -14,7 +15,7 @@ namespace Artemis.Modules.Effects.Bubbles
{ {
#region Constructors #region Constructors
public BubblesModel(MainManager mainManager) : base(mainManager, new BubblesSettings(), null) public BubblesModel(MainManager mainManager) : base(mainManager, SettingsProvider.Load<BubblesSettings>(), null)
{ {
Name = "Bubbles"; Name = "Bubbles";
Initialized = false; Initialized = false;

View File

@ -6,6 +6,7 @@
xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls" xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:cal="http://www.caliburnproject.org" xmlns:cal="http://www.caliburnproject.org"
xmlns:ncore="http://schemas.ncore.com/wpf/xaml/colorbox"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="476.986" d:DesignWidth="538.772"> d:DesignHeight="476.986" d:DesignWidth="538.772">
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"> <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
@ -56,11 +57,9 @@
Height="16" Margin="0,8"> Height="16" Margin="0,8">
Bubble color Bubble color
</TextBlock> </TextBlock>
<xctk:ColorPicker x:Name="MiddleColor" <ncore:ColorBox Brush="{Binding BubbleColor, Mode=TwoWay}" Grid.Row="1" Grid.Column="1" Width="110"
SelectedColor="{Binding Path=EffectSettings.BubbleColor, Mode=TwoWay}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,5,-1,5" Height="22"
Grid.Row="1" Grid.Column="1" Width="110" HorizontalAlignment="Right" ShowNone="False" ShowLinear="False" ShowRadial="False"/>
VerticalAlignment="Center" Margin="0,5,-1,5" Height="22" />
<!-- Random colors --> <!-- Random colors -->
<TextBlock Grid.Row="2" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" <TextBlock Grid.Row="2" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center"
Height="16" Margin="0,8"> Height="16" Margin="0,8">

View File

@ -1,13 +1,35 @@
using Artemis.Managers; using System.Windows.Media;
using Artemis.Managers;
using Artemis.ViewModels.Abstract; using Artemis.ViewModels.Abstract;
namespace Artemis.Modules.Effects.Bubbles namespace Artemis.Modules.Effects.Bubbles
{ {
public sealed class BubblesViewModel : EffectViewModel public sealed class BubblesViewModel : EffectViewModel
{ {
private readonly BubblesModel _model;
private SolidColorBrush _bubbleColor;
public BubblesViewModel(MainManager main, BubblesModel model) : base(main, model) public BubblesViewModel(MainManager main, BubblesModel model) : base(main, model)
{ {
_model = model;
DisplayName = "Bubbles"; DisplayName = "Bubbles";
BubbleColor = new SolidColorBrush(model.Settings.BubbleColor);
}
/// <summary>
/// The bubble color wrapped in a brush to allow color selection using ColorBox
/// </summary>
public Brush BubbleColor
{
get { return _bubbleColor; }
set
{
if (Equals(value, _bubbleColor)) return;
_bubbleColor = (SolidColorBrush) value;
_model.Settings.BubbleColor = _bubbleColor.Color;
NotifyOfPropertyChange(() => BubbleColor);
}
} }
} }
} }

View File

@ -9,6 +9,7 @@ using Artemis.Profiles.Layers.Models;
using Artemis.Settings; using Artemis.Settings;
using Artemis.Utilities.Memory; using Artemis.Utilities.Memory;
using Process.NET; using Process.NET;
using Process.NET.Memory;
namespace Artemis.Modules.Games.WoW namespace Artemis.Modules.Games.WoW
{ {
@ -68,8 +69,7 @@ namespace Artemis.Modules.Games.WoW
if (tempProcess == null) if (tempProcess == null)
return; return;
_process = new ProcessSharp(tempProcess); _process = new ProcessSharp(tempProcess, MemoryType.Remote);
_process.Memory = new ExternalProcessMemory(_process.Handle);
Initialized = true; Initialized = true;
} }

View File

@ -2,6 +2,7 @@
using System.Drawing; using System.Drawing;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
using System.Windows.Forms; using System.Windows.Forms;
using Artemis.DAL;
using Artemis.Managers; using Artemis.Managers;
using Artemis.Models; using Artemis.Models;
using Artemis.Profiles.Layers.Models; using Artemis.Profiles.Layers.Models;
@ -12,13 +13,15 @@ namespace Artemis.Modules.Overlays.VolumeDisplay
{ {
public class VolumeDisplayModel : OverlayModel public class VolumeDisplayModel : OverlayModel
{ {
public VolumeDisplayModel(MainManager mainManager) : base(mainManager, new VolumeDisplaySettings()) public VolumeDisplayModel(MainManager mainManager)
: base(mainManager, SettingsProvider.Load<VolumeDisplaySettings>())
{ {
Name = "VolumeDisplay"; Name = "VolumeDisplay";
Settings = (VolumeDisplaySettings) base.Settings;
VolumeDisplay = new VolumeBar(MainManager.DeviceManager, (VolumeDisplaySettings) Settings); VolumeDisplay = new VolumeBar(MainManager.DeviceManager, Settings);
} }
public new VolumeDisplaySettings Settings { get; set; }
public VolumeBar VolumeDisplay { get; set; } public VolumeBar VolumeDisplay { get; set; }
public override void Dispose() public override void Dispose()
@ -67,7 +70,7 @@ namespace Artemis.Modules.Overlays.VolumeDisplay
private void KeyPressTask(KeyEventArgs e) private void KeyPressTask(KeyEventArgs e)
{ {
if (e.KeyCode != Keys.VolumeUp && e.KeyCode != Keys.VolumeDown) if ((e.KeyCode != Keys.VolumeUp) && (e.KeyCode != Keys.VolumeDown))
return; return;
VolumeDisplay.Ttl = 1000; VolumeDisplay.Ttl = 1000;
@ -76,7 +79,7 @@ namespace Artemis.Modules.Overlays.VolumeDisplay
public override void RenderOverlay(RenderFrame frame, bool keyboardOnly) public override void RenderOverlay(RenderFrame frame, bool keyboardOnly)
{ {
if (MainManager.DeviceManager.ActiveKeyboard == null || VolumeDisplay == null || VolumeDisplay.Ttl < 1) if ((MainManager.DeviceManager.ActiveKeyboard == null) || (VolumeDisplay == null) || (VolumeDisplay.Ttl < 1))
return; return;
using (var g = Graphics.FromImage(frame.KeyboardBitmap)) using (var g = Graphics.FromImage(frame.KeyboardBitmap))

View File

@ -1,5 +1,7 @@
using System.Windows.Media; using System.Windows.Media;
using Artemis.DAL;
using Artemis.Settings; using Artemis.Settings;
using Newtonsoft.Json;
namespace Artemis.Modules.Overlays.VolumeDisplay namespace Artemis.Modules.Overlays.VolumeDisplay
{ {
@ -7,5 +9,19 @@ namespace Artemis.Modules.Overlays.VolumeDisplay
{ {
public Color MainColor { get; set; } public Color MainColor { get; set; }
public Color SecondaryColor { get; set; } public Color SecondaryColor { get; set; }
public new void Reset(bool save = false)
{
JsonConvert.PopulateObject("{}", this, new JsonSerializerSettings
{
ObjectCreationHandling = ObjectCreationHandling.Reuse
});
MainColor = Colors.Red;
SecondaryColor = Colors.GreenYellow;
if (save)
SettingsProvider.Save(this);
}
} }
} }

View File

@ -5,6 +5,7 @@
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit" xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
xmlns:cal="http://www.caliburnproject.org" xmlns:cal="http://www.caliburnproject.org"
xmlns:ncore="http://schemas.ncore.com/wpf/xaml/colorbox"
mc:Ignorable="d" mc:Ignorable="d"
d:DesignHeight="476.986" d:DesignWidth="538.772"> d:DesignHeight="476.986" d:DesignWidth="538.772">
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto"> <ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
@ -42,21 +43,19 @@
Margin="0,8"> Margin="0,8">
Main volume display color Main volume display color
</TextBlock> </TextBlock>
<xctk:ColorPicker x:Name="MainColor" <ncore:ColorBox Brush="{Binding MainColor, Mode=TwoWay}" Grid.Row="1" Grid.Column="1" Width="110"
SelectedColor="{Binding Path=OverlaySettings.MainColor, Mode=TwoWay}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,5,-1,5" Height="22"
Grid.Row="1" Grid.Column="1" Width="110" HorizontalAlignment="Right" ShowNone="False" ShowLinear="False" ShowRadial="False" />
VerticalAlignment="Center" Margin="0,5,-1,5" Height="22" />
<!-- Secondary color --> <!-- Secondary color -->
<TextBlock Grid.Row="2" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" Height="16" <TextBlock Grid.Row="2" Grid.Column="0" HorizontalAlignment="Left" VerticalAlignment="Center" Height="16"
Margin="0,8"> Margin="0,8">
Secondary volume display color Secondary volume display color
</TextBlock> </TextBlock>
<xctk:ColorPicker x:Name="SecondaryColor" <ncore:ColorBox Brush="{Binding SecondaryColor, Mode=TwoWay}" Grid.Row="2" Grid.Column="1" Width="110"
SelectedColor="{Binding Path=OverlaySettings.SecondaryColor, Mode=TwoWay}" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,5,-1,5" Height="22"
Grid.Row="2" Grid.Column="1" Width="110" HorizontalAlignment="Right" ShowNone="False" ShowLinear="False" ShowRadial="False" />
VerticalAlignment="Center" Margin="0,5,-1,5" Height="22" />
<TextBlock Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" VerticalAlignment="Center" Margin="0,8" <TextBlock Grid.Row="3" Grid.Column="0" Grid.ColumnSpan="2" VerticalAlignment="Center" Margin="0,8"
TextWrapping="Wrap" HorizontalAlignment="Left" FontFamily="Segoe UI Semibold" TextWrapping="Wrap" HorizontalAlignment="Left" FontFamily="Segoe UI Semibold"
MaxWidth="520" TextAlignment="Justify"> MaxWidth="520" TextAlignment="Justify">

View File

@ -1,13 +1,48 @@
using Artemis.Managers; using System.Windows.Media;
using Artemis.Managers;
using Artemis.ViewModels.Abstract; using Artemis.ViewModels.Abstract;
namespace Artemis.Modules.Overlays.VolumeDisplay namespace Artemis.Modules.Overlays.VolumeDisplay
{ {
public sealed class VolumeDisplayViewModel : OverlayViewModel public sealed class VolumeDisplayViewModel : OverlayViewModel
{ {
private readonly VolumeDisplayModel _model;
private SolidColorBrush _mainColor;
private SolidColorBrush _secondaryColor;
public VolumeDisplayViewModel(MainManager mainManager, VolumeDisplayModel model) : base(mainManager, model) public VolumeDisplayViewModel(MainManager mainManager, VolumeDisplayModel model) : base(mainManager, model)
{ {
_model = model;
DisplayName = "Volume Display"; DisplayName = "Volume Display";
MainColor = new SolidColorBrush(model.Settings.MainColor);
SecondaryColor = new SolidColorBrush(model.Settings.SecondaryColor);
}
public Brush MainColor
{
get { return _mainColor; }
set
{
if (Equals(value, _mainColor)) return;
_mainColor = (SolidColorBrush) value;
_model.Settings.MainColor = _mainColor.Color;
NotifyOfPropertyChange(() => MainColor);
}
}
public Brush SecondaryColor
{
get { return _secondaryColor; }
set
{
if (Equals(value, _secondaryColor)) return;
_secondaryColor = (SolidColorBrush) value;
_model.Settings.SecondaryColor = _secondaryColor.Color;
NotifyOfPropertyChange(() => SecondaryColor);
}
} }
} }
} }

View File

@ -368,6 +368,7 @@
<xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" /> <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" /> <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" /> <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
<xs:element name="lineEnding" minOccurs="0" maxOccurs="1" type="LineEndingMode" />
<xs:element name="maxMessageSize" minOccurs="0" maxOccurs="1" type="xs:integer" /> <xs:element name="maxMessageSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="newLine" minOccurs="0" maxOccurs="1" type="xs:boolean" /> <xs:element name="newLine" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="onConnectionOverflow" minOccurs="0" maxOccurs="1" type="NLog.Targets.NetworkTargetConnectionsOverflowAction" /> <xs:element name="onConnectionOverflow" minOccurs="0" maxOccurs="1" type="NLog.Targets.NetworkTargetConnectionsOverflowAction" />
@ -401,6 +402,11 @@
<xs:documentation>Instance of that is used to format log messages.</xs:documentation> <xs:documentation>Instance of that is used to format log messages.</xs:documentation>
</xs:annotation> </xs:annotation>
</xs:attribute> </xs:attribute>
<xs:attribute name="lineEnding" type="LineEndingMode">
<xs:annotation>
<xs:documentation>End of line value if a newline is appended at the end of log message .</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="maxMessageSize" type="xs:integer"> <xs:attribute name="maxMessageSize" type="xs:integer">
<xs:annotation> <xs:annotation>
<xs:documentation>Maximum message size in bytes.</xs:documentation> <xs:documentation>Maximum message size in bytes.</xs:documentation>
@ -1021,8 +1027,11 @@
<xs:element name="archiveAboveSize" minOccurs="0" maxOccurs="1" type="xs:long" /> <xs:element name="archiveAboveSize" minOccurs="0" maxOccurs="1" type="xs:long" />
<xs:element name="enableArchiveFileCompression" minOccurs="0" maxOccurs="1" type="xs:boolean" /> <xs:element name="enableArchiveFileCompression" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="maxArchiveFiles" minOccurs="0" maxOccurs="1" type="xs:integer" /> <xs:element name="maxArchiveFiles" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="forceManaged" minOccurs="0" maxOccurs="1" type="xs:boolean" /> <xs:element name="fileNameKind" minOccurs="0" maxOccurs="1" type="NLog.Targets.FilePathKind" />
<xs:element name="archiveFileKind" minOccurs="0" maxOccurs="1" type="NLog.Targets.FilePathKind" />
<xs:element name="cleanupFileName" minOccurs="0" maxOccurs="1" type="xs:boolean" /> <xs:element name="cleanupFileName" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="forceManaged" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="writeFooterOnArchivingOnly" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="fileName" minOccurs="0" maxOccurs="1" type="Layout" /> <xs:element name="fileName" minOccurs="0" maxOccurs="1" type="Layout" />
<xs:element name="archiveDateFormat" minOccurs="0" maxOccurs="1" type="xs:string" /> <xs:element name="archiveDateFormat" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="archiveOldFileOnStartup" minOccurs="0" maxOccurs="1" type="xs:boolean" /> <xs:element name="archiveOldFileOnStartup" minOccurs="0" maxOccurs="1" type="xs:boolean" />
@ -1032,15 +1041,15 @@
<xs:element name="deleteOldFileOnStartup" minOccurs="0" maxOccurs="1" type="xs:boolean" /> <xs:element name="deleteOldFileOnStartup" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="replaceFileContentsOnEachWrite" minOccurs="0" maxOccurs="1" type="xs:boolean" /> <xs:element name="replaceFileContentsOnEachWrite" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="concurrentWrites" minOccurs="0" maxOccurs="1" type="xs:boolean" /> <xs:element name="concurrentWrites" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="concurrentWriteAttemptDelay" minOccurs="0" maxOccurs="1" type="xs:integer" /> <xs:element name="keepFileOpen" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="maxLogFilenames" minOccurs="0" maxOccurs="1" type="xs:integer" /> <xs:element name="maxLogFilenames" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="networkWrites" minOccurs="0" maxOccurs="1" type="xs:boolean" /> <xs:element name="networkWrites" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="openFileCacheSize" minOccurs="0" maxOccurs="1" type="xs:integer" /> <xs:element name="openFileCacheSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="openFileCacheTimeout" minOccurs="0" maxOccurs="1" type="xs:integer" /> <xs:element name="openFileCacheTimeout" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="bufferSize" minOccurs="0" maxOccurs="1" type="xs:integer" /> <xs:element name="bufferSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="autoFlush" minOccurs="0" maxOccurs="1" type="xs:boolean" /> <xs:element name="autoFlush" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="concurrentWriteAttemptDelay" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="concurrentWriteAttempts" minOccurs="0" maxOccurs="1" type="xs:integer" /> <xs:element name="concurrentWriteAttempts" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="keepFileOpen" minOccurs="0" maxOccurs="1" type="xs:boolean" />
</xs:choice> </xs:choice>
<xs:attribute name="name" type="xs:string"> <xs:attribute name="name" type="xs:string">
<xs:annotation> <xs:annotation>
@ -1102,9 +1111,14 @@
<xs:documentation>Maximum number of archive files that should be kept.</xs:documentation> <xs:documentation>Maximum number of archive files that should be kept.</xs:documentation>
</xs:annotation> </xs:annotation>
</xs:attribute> </xs:attribute>
<xs:attribute name="forceManaged" type="xs:boolean"> <xs:attribute name="fileNameKind" type="NLog.Targets.FilePathKind">
<xs:annotation> <xs:annotation>
<xs:documentation>Gets or set a value indicating whether a managed file stream is forced, instead of used the native implementation.</xs:documentation> <xs:documentation>Is the an absolute or relative path?</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="archiveFileKind" type="NLog.Targets.FilePathKind">
<xs:annotation>
<xs:documentation>Is the an absolute or relative path?</xs:documentation>
</xs:annotation> </xs:annotation>
</xs:attribute> </xs:attribute>
<xs:attribute name="cleanupFileName" type="xs:boolean"> <xs:attribute name="cleanupFileName" type="xs:boolean">
@ -1112,6 +1126,16 @@
<xs:documentation>Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. If set to false, nothing gets written when the filename is wrong.</xs:documentation> <xs:documentation>Cleanup invalid values in a filename, e.g. slashes in a filename. If set to true, this can impact the performance of massive writes. If set to false, nothing gets written when the filename is wrong.</xs:documentation>
</xs:annotation> </xs:annotation>
</xs:attribute> </xs:attribute>
<xs:attribute name="forceManaged" type="xs:boolean">
<xs:annotation>
<xs:documentation>Gets or set a value indicating whether a managed file stream is forced, instead of used the native implementation.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="writeFooterOnArchivingOnly" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether the footer should be written only when the file is archived.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="fileName" type="SimpleLayoutAttribute"> <xs:attribute name="fileName" type="SimpleLayoutAttribute">
<xs:annotation> <xs:annotation>
<xs:documentation>Name of the file to write to.</xs:documentation> <xs:documentation>Name of the file to write to.</xs:documentation>
@ -1157,9 +1181,9 @@
<xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on the same host.</xs:documentation> <xs:documentation>Indicates whether concurrent writes to the log file by multiple processes on the same host.</xs:documentation>
</xs:annotation> </xs:annotation>
</xs:attribute> </xs:attribute>
<xs:attribute name="concurrentWriteAttemptDelay" type="xs:integer"> <xs:attribute name="keepFileOpen" type="xs:boolean">
<xs:annotation> <xs:annotation>
<xs:documentation>Delay in milliseconds to wait before attempting to write to the file again.</xs:documentation> <xs:documentation>Indicates whether to keep log file open instead of opening and closing it on each logging event.</xs:documentation>
</xs:annotation> </xs:annotation>
</xs:attribute> </xs:attribute>
<xs:attribute name="maxLogFilenames" type="xs:integer"> <xs:attribute name="maxLogFilenames" type="xs:integer">
@ -1192,16 +1216,16 @@
<xs:documentation>Indicates whether to automatically flush the file buffers after each log message.</xs:documentation> <xs:documentation>Indicates whether to automatically flush the file buffers after each log message.</xs:documentation>
</xs:annotation> </xs:annotation>
</xs:attribute> </xs:attribute>
<xs:attribute name="concurrentWriteAttemptDelay" type="xs:integer">
<xs:annotation>
<xs:documentation>Delay in milliseconds to wait before attempting to write to the file again.</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="concurrentWriteAttempts" type="xs:integer"> <xs:attribute name="concurrentWriteAttempts" type="xs:integer">
<xs:annotation> <xs:annotation>
<xs:documentation>Number of times the write is appended on the file before NLog discards the log message.</xs:documentation> <xs:documentation>Number of times the write is appended on the file before NLog discards the log message.</xs:documentation>
</xs:annotation> </xs:annotation>
</xs:attribute> </xs:attribute>
<xs:attribute name="keepFileOpen" type="xs:boolean">
<xs:annotation>
<xs:documentation>Indicates whether to keep log file open instead of opening and closing it on each logging event.</xs:documentation>
</xs:annotation>
</xs:attribute>
</xs:extension> </xs:extension>
</xs:complexContent> </xs:complexContent>
</xs:complexType> </xs:complexType>
@ -1223,6 +1247,13 @@
<xs:enumeration value="Minute" /> <xs:enumeration value="Minute" />
</xs:restriction> </xs:restriction>
</xs:simpleType> </xs:simpleType>
<xs:simpleType name="NLog.Targets.FilePathKind">
<xs:restriction base="xs:string">
<xs:enumeration value="Unknown" />
<xs:enumeration value="Relative" />
<xs:enumeration value="Absolute" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="NLog.Targets.Win32FileAttributes"> <xs:simpleType name="NLog.Targets.Win32FileAttributes">
<xs:restriction base="xs:string"> <xs:restriction base="xs:string">
<xs:enumeration value="ReadOnly" /> <xs:enumeration value="ReadOnly" />
@ -1703,6 +1734,7 @@
<xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" /> <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" /> <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
<xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" /> <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="lineEnding" minOccurs="0" maxOccurs="1" type="LineEndingMode" />
<xs:element name="maxMessageSize" minOccurs="0" maxOccurs="1" type="xs:integer" /> <xs:element name="maxMessageSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="newLine" minOccurs="0" maxOccurs="1" type="xs:boolean" /> <xs:element name="newLine" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="onConnectionOverflow" minOccurs="0" maxOccurs="1" type="NLog.Targets.NetworkTargetConnectionsOverflowAction" /> <xs:element name="onConnectionOverflow" minOccurs="0" maxOccurs="1" type="NLog.Targets.NetworkTargetConnectionsOverflowAction" />
@ -1728,6 +1760,11 @@
<xs:documentation>Encoding to be used.</xs:documentation> <xs:documentation>Encoding to be used.</xs:documentation>
</xs:annotation> </xs:annotation>
</xs:attribute> </xs:attribute>
<xs:attribute name="lineEnding" type="LineEndingMode">
<xs:annotation>
<xs:documentation>End of line value if a newline is appended at the end of log message .</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="maxMessageSize" type="xs:integer"> <xs:attribute name="maxMessageSize" type="xs:integer">
<xs:annotation> <xs:annotation>
<xs:documentation>Maximum message size in bytes.</xs:documentation> <xs:documentation>Maximum message size in bytes.</xs:documentation>
@ -1783,6 +1820,7 @@
<xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" /> <xs:element name="name" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" /> <xs:element name="encoding" minOccurs="0" maxOccurs="1" type="xs:string" />
<xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" /> <xs:element name="layout" minOccurs="0" maxOccurs="1" type="Layout" />
<xs:element name="lineEnding" minOccurs="0" maxOccurs="1" type="LineEndingMode" />
<xs:element name="maxMessageSize" minOccurs="0" maxOccurs="1" type="xs:integer" /> <xs:element name="maxMessageSize" minOccurs="0" maxOccurs="1" type="xs:integer" />
<xs:element name="newLine" minOccurs="0" maxOccurs="1" type="xs:boolean" /> <xs:element name="newLine" minOccurs="0" maxOccurs="1" type="xs:boolean" />
<xs:element name="onConnectionOverflow" minOccurs="0" maxOccurs="1" type="NLog.Targets.NetworkTargetConnectionsOverflowAction" /> <xs:element name="onConnectionOverflow" minOccurs="0" maxOccurs="1" type="NLog.Targets.NetworkTargetConnectionsOverflowAction" />
@ -1816,6 +1854,11 @@
<xs:documentation>Instance of that is used to format log messages.</xs:documentation> <xs:documentation>Instance of that is used to format log messages.</xs:documentation>
</xs:annotation> </xs:annotation>
</xs:attribute> </xs:attribute>
<xs:attribute name="lineEnding" type="LineEndingMode">
<xs:annotation>
<xs:documentation>End of line value if a newline is appended at the end of log message .</xs:documentation>
</xs:annotation>
</xs:attribute>
<xs:attribute name="maxMessageSize" type="xs:integer"> <xs:attribute name="maxMessageSize" type="xs:integer">
<xs:annotation> <xs:annotation>
<xs:documentation>Maximum message size in bytes.</xs:documentation> <xs:documentation>Maximum message size in bytes.</xs:documentation>

View File

@ -60,7 +60,7 @@
VerticalAlignment="Top" Height="18" Width="130" /> VerticalAlignment="Top" Height="18" Width="130" />
<Border Margin="10" BorderBrush="{StaticResource ControlBorderBrush}" <Border Margin="10" BorderBrush="{StaticResource ControlBorderBrush}"
BorderThickness="1" SnapsToDevicePixels="True" ToolTip="Click to edit"> BorderThickness="1" SnapsToDevicePixels="True" ToolTip="Click to edit">
<ncore:ColorBox Brush="{Binding Path=Brush, Mode=TwoWay}" Height="24" Width="134" ShowSolid="False"/> <ncore:ColorBox Brush="{Binding Path=Brush, Mode=TwoWay}" Height="24" Width="134"/>
</Border> </Border>
</StackPanel> </StackPanel>

View File

@ -4,16 +4,15 @@
<package id="Caliburn.Micro.Core" version="3.0.1" targetFramework="net452" /> <package id="Caliburn.Micro.Core" version="3.0.1" targetFramework="net452" />
<package id="Castle.Core" version="3.3.3" targetFramework="net452" /> <package id="Castle.Core" version="3.3.3" targetFramework="net452" />
<package id="Colore" version="5.0.0" targetFramework="net461" /> <package id="Colore" version="5.0.0" targetFramework="net461" />
<package id="CUE.NET" version="1.1.0.1" targetFramework="net461" /> <package id="CUE.NET" version="1.1.0.2" targetFramework="net461" />
<package id="DeltaCompressionDotNet" version="1.0.0" targetFramework="net461" /> <package id="DeltaCompressionDotNet" version="1.1.0" targetFramework="net461" />
<package id="DynamicExpresso.Core" version="1.3.3.4" targetFramework="net461" /> <package id="DynamicExpresso.Core" version="1.3.3.4" targetFramework="net461" />
<package id="Extended.Wpf.Toolkit" version="2.9" targetFramework="net461" />
<package id="gong-wpf-dragdrop" version="1.0.0" targetFramework="net461" /> <package id="gong-wpf-dragdrop" version="1.0.0" targetFramework="net461" />
<package id="Hardcodet.NotifyIcon.Wpf" version="1.0.8" targetFramework="net452" /> <package id="Hardcodet.NotifyIcon.Wpf" version="1.0.8" targetFramework="net452" />
<package id="log4net" version="2.0.5" targetFramework="net452" /> <package id="log4net" version="2.0.5" targetFramework="net452" />
<package id="MahApps.Metro" version="1.3.0" targetFramework="net461" /> <package id="MahApps.Metro" version="1.3.0" targetFramework="net461" />
<package id="MahApps.Metro.Resources" version="0.6.1.0" targetFramework="net452" /> <package id="MahApps.Metro.Resources" version="0.6.1.0" targetFramework="net452" />
<package id="Mono.Cecil" version="0.9.6.1" targetFramework="net461" /> <package id="Mono.Cecil" version="0.9.6.4" targetFramework="net461" />
<package id="NAudio" version="1.7.3" targetFramework="net452" /> <package id="NAudio" version="1.7.3" targetFramework="net452" />
<package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" /> <package id="Newtonsoft.Json" version="9.0.1" targetFramework="net461" />
<package id="Ninject" version="3.2.2.0" targetFramework="net452" /> <package id="Ninject" version="3.2.2.0" targetFramework="net452" />
@ -21,9 +20,9 @@
<package id="Ninject.Extensions.Factory" version="3.2.1.0" targetFramework="net452" /> <package id="Ninject.Extensions.Factory" version="3.2.1.0" targetFramework="net452" />
<package id="Ninject.Extensions.Logging" version="3.2.3.0" targetFramework="net452" /> <package id="Ninject.Extensions.Logging" version="3.2.3.0" targetFramework="net452" />
<package id="Ninject.Extensions.Logging.nlog4" version="3.2.3.0" targetFramework="net452" /> <package id="Ninject.Extensions.Logging.nlog4" version="3.2.3.0" targetFramework="net452" />
<package id="NLog" version="4.3.7" targetFramework="net461" /> <package id="NLog" version="4.3.9" targetFramework="net461" />
<package id="NLog.Schema" version="4.3.7" targetFramework="net461" /> <package id="NLog.Schema" version="4.3.9" targetFramework="net461" />
<package id="Process.NET" version="1.0.1" targetFramework="net461" /> <package id="Process.NET" version="1.0.5" targetFramework="net461" />
<package id="Splat" version="1.6.2" targetFramework="net461" /> <package id="Splat" version="1.6.2" targetFramework="net461" />
<package id="SpotifyAPI-NET" version="2.12.0" targetFramework="net461" /> <package id="SpotifyAPI-NET" version="2.12.0" targetFramework="net461" />
<package id="squirrel.windows" version="1.4.4" targetFramework="net461" /> <package id="squirrel.windows" version="1.4.4" targetFramework="net461" />