From 3c827d1a0a9e767c4148377fca23bcd1f5960237 Mon Sep 17 00:00:00 2001 From: Robert Date: Fri, 7 Jan 2022 12:03:40 +0100 Subject: [PATCH] Core - Updated RGB.NET Plugins - Allow device providers to override the device layout name --- src/Artemis.ConsoleUI/packages.lock.json | 22 +++++++-------- src/Artemis.Core/Artemis.Core.csproj | 6 ++-- .../Models/Surface/ArtemisDevice.cs | 19 +------------ .../Plugins/DeviceProviders/DeviceProvider.cs | 20 +++++++++++-- src/Artemis.Core/packages.lock.json | 22 +++++++-------- .../Artemis.UI.Shared.csproj | 2 +- src/Artemis.UI.Shared/packages.lock.json | 24 ++++++++-------- src/Artemis.UI/Artemis.UI.csproj | 4 +-- .../Settings/Device/DeviceDialogViewModel.cs | 3 +- src/Artemis.UI/packages.lock.json | 28 +++++++++---------- 10 files changed, 75 insertions(+), 75 deletions(-) diff --git a/src/Artemis.ConsoleUI/packages.lock.json b/src/Artemis.ConsoleUI/packages.lock.json index 54fea5121..f88410446 100644 --- a/src/Artemis.ConsoleUI/packages.lock.json +++ b/src/Artemis.ConsoleUI/packages.lock.json @@ -206,23 +206,23 @@ }, "RGB.NET.Core": { "type": "Transitive", - "resolved": "1.0.0-prerelease1", - "contentHash": "aaCPk++kr1TaV/qWYeol5975IN3XifDuuQ9wrCD+nw1cy05BMdGVhuQ72ITb0YRBedssd/btkM51ZABsBd8CEQ==" + "resolved": "1.0.0-prerelease7", + "contentHash": "IIja5sC4QZ5pbSNckRCG7TlY4U6j/dRbrl4e2FZqsTGgsevaVB3IqonUQLFY1GGst4xNSl2oh0A23coXQxXGbQ==" }, "RGB.NET.Layout": { "type": "Transitive", - "resolved": "1.0.0-prerelease1", - "contentHash": "nbaHbcY59tzFSeTDbImhrcR1ZyJpoC0x6WawXdtGXO7x3F91ajM7kM5SJwi/5jHdD61vGV0ARuznmR8ErAWegQ==", + "resolved": "1.0.0-prerelease7", + "contentHash": "S0kfWVa8EfMOAl2WPHsq98dwaO+SNz9TWr1AtMkdo8aZuYIVhaJ1c+mSAMMnH1V+mSbxDWPHWkNzi9ITszJucA==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "RGB.NET.Presets": { "type": "Transitive", - "resolved": "1.0.0-prerelease1", - "contentHash": "XU8XeI0fQF26fd0pQHgoe9RaROuvENmZlX/1QyyaN9P3j0LtYmy6ycWZbsXp8byLT0UcGbS+odMiQQAnK+kxgg==", + "resolved": "1.0.0-prerelease7", + "contentHash": "NgShvOPQM0miOsdqMKjkNunngJUZMwr8KR8ME2/Ksir7wgIQfgJj1YwZy8aIj+ar7fDo6VZJZenAshs/Ul+04A==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { @@ -1244,9 +1244,9 @@ "Ninject": "3.3.4", "Ninject.Extensions.ChildKernel": "3.3.0", "Ninject.Extensions.Conventions": "3.3.0", - "RGB.NET.Core": "1.0.0-prerelease1", - "RGB.NET.Layout": "1.0.0-prerelease1", - "RGB.NET.Presets": "1.0.0-prerelease1", + "RGB.NET.Core": "1.0.0-prerelease7", + "RGB.NET.Layout": "1.0.0-prerelease7", + "RGB.NET.Presets": "1.0.0-prerelease7", "Serilog": "2.10.0", "Serilog.Sinks.Console": "4.0.0", "Serilog.Sinks.Debug": "2.0.0", diff --git a/src/Artemis.Core/Artemis.Core.csproj b/src/Artemis.Core/Artemis.Core.csproj index e80f308ce..4a860799e 100644 --- a/src/Artemis.Core/Artemis.Core.csproj +++ b/src/Artemis.Core/Artemis.Core.csproj @@ -47,9 +47,9 @@ - - - + + + diff --git a/src/Artemis.Core/Models/Surface/ArtemisDevice.cs b/src/Artemis.Core/Models/Surface/ArtemisDevice.cs index 1fa950b3c..8c6dc49db 100644 --- a/src/Artemis.Core/Models/Surface/ArtemisDevice.cs +++ b/src/Artemis.Core/Models/Surface/ArtemisDevice.cs @@ -349,24 +349,7 @@ namespace Artemis.Core return mappedLed; return artemisLed; } - - /// - /// Generates the default layout file name of the device - /// - /// If true, the .xml extension is added to the file name - /// The resulting file name e.g. CORSAIR GLAIVE.xml or K95 RGB-ISO.xml - public string GetLayoutFileName(bool includeExtension = true) - { - // Take out invalid file name chars, may not be perfect but neither are you - string fileName = System.IO.Path.GetInvalidFileNameChars().Aggregate(RgbDevice.DeviceInfo.Model, (current, c) => current.Replace(c, '-')); - if (RgbDevice.DeviceInfo.DeviceType == RGBDeviceType.Keyboard) - fileName = $"{fileName}-{PhysicalLayout.ToString().ToUpper()}"; - if (includeExtension) - fileName = $"{fileName}.xml"; - - return fileName; - } - + /// /// Occurs when the underlying RGB.NET device was updated /// diff --git a/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs b/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs index fc540ff96..abb2e1ea3 100644 --- a/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs +++ b/src/Artemis.Core/Plugins/DeviceProviders/DeviceProvider.cs @@ -1,5 +1,6 @@ using System; using System.IO; +using System.Linq; using Ninject; using RGB.NET.Core; using Serilog; @@ -75,7 +76,7 @@ namespace Artemis.Core.DeviceProviders layoutDir, device.RgbDevice.DeviceInfo.Manufacturer, device.DeviceType.ToString(), - device.GetLayoutFileName() + GetDeviceLayoutName(device) ); return new ArtemisLayout(filePath, LayoutSource.Plugin); } @@ -92,7 +93,7 @@ namespace Artemis.Core.DeviceProviders layoutDir, device.RgbDevice.DeviceInfo.Manufacturer, device.DeviceType.ToString(), - device.GetLayoutFileName() + GetDeviceLayoutName(device) ); return new ArtemisLayout(filePath, LayoutSource.User); } @@ -108,5 +109,20 @@ namespace Artemis.Core.DeviceProviders { throw new NotImplementedException("Device provider does not support detecting logical layouts (don't call base.GetLogicalLayout())"); } + + /// + /// Called when determining which file name to use when loading the layout of the specified . + /// + /// The device to determine the layout file name for. + /// A file name, including an extension + public virtual string GetDeviceLayoutName(ArtemisDevice device) + { + // Take out invalid file name chars, may not be perfect but neither are you + string fileName = Path.GetInvalidFileNameChars().Aggregate(device.RgbDevice.DeviceInfo.Model, (current, c) => current.Replace(c, '-')); + if (device.RgbDevice.DeviceInfo.DeviceType == RGBDeviceType.Keyboard) + fileName = $"{fileName}-{device.PhysicalLayout.ToString().ToUpper()}"; + + return fileName + ".xml"; + } } } \ No newline at end of file diff --git a/src/Artemis.Core/packages.lock.json b/src/Artemis.Core/packages.lock.json index d6d49560e..6461c9b8c 100644 --- a/src/Artemis.Core/packages.lock.json +++ b/src/Artemis.Core/packages.lock.json @@ -75,26 +75,26 @@ }, "RGB.NET.Core": { "type": "Direct", - "requested": "[1.0.0-prerelease1, )", - "resolved": "1.0.0-prerelease1", - "contentHash": "aaCPk++kr1TaV/qWYeol5975IN3XifDuuQ9wrCD+nw1cy05BMdGVhuQ72ITb0YRBedssd/btkM51ZABsBd8CEQ==" + "requested": "[1.0.0-prerelease7, )", + "resolved": "1.0.0-prerelease7", + "contentHash": "IIja5sC4QZ5pbSNckRCG7TlY4U6j/dRbrl4e2FZqsTGgsevaVB3IqonUQLFY1GGst4xNSl2oh0A23coXQxXGbQ==" }, "RGB.NET.Layout": { "type": "Direct", - "requested": "[1.0.0-prerelease1, )", - "resolved": "1.0.0-prerelease1", - "contentHash": "nbaHbcY59tzFSeTDbImhrcR1ZyJpoC0x6WawXdtGXO7x3F91ajM7kM5SJwi/5jHdD61vGV0ARuznmR8ErAWegQ==", + "requested": "[1.0.0-prerelease7, )", + "resolved": "1.0.0-prerelease7", + "contentHash": "S0kfWVa8EfMOAl2WPHsq98dwaO+SNz9TWr1AtMkdo8aZuYIVhaJ1c+mSAMMnH1V+mSbxDWPHWkNzi9ITszJucA==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "RGB.NET.Presets": { "type": "Direct", - "requested": "[1.0.0-prerelease1, )", - "resolved": "1.0.0-prerelease1", - "contentHash": "XU8XeI0fQF26fd0pQHgoe9RaROuvENmZlX/1QyyaN9P3j0LtYmy6ycWZbsXp8byLT0UcGbS+odMiQQAnK+kxgg==", + "requested": "[1.0.0-prerelease7, )", + "resolved": "1.0.0-prerelease7", + "contentHash": "NgShvOPQM0miOsdqMKjkNunngJUZMwr8KR8ME2/Ksir7wgIQfgJj1YwZy8aIj+ar7fDo6VZJZenAshs/Ul+04A==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "Serilog": { diff --git a/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj b/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj index 253095749..c6849d64f 100644 --- a/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj +++ b/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj @@ -39,7 +39,7 @@ - + diff --git a/src/Artemis.UI.Shared/packages.lock.json b/src/Artemis.UI.Shared/packages.lock.json index ae3665203..d31dcf1f7 100644 --- a/src/Artemis.UI.Shared/packages.lock.json +++ b/src/Artemis.UI.Shared/packages.lock.json @@ -54,9 +54,9 @@ }, "RGB.NET.Core": { "type": "Direct", - "requested": "[1.0.0-prerelease1, )", - "resolved": "1.0.0-prerelease1", - "contentHash": "aaCPk++kr1TaV/qWYeol5975IN3XifDuuQ9wrCD+nw1cy05BMdGVhuQ72ITb0YRBedssd/btkM51ZABsBd8CEQ==" + "requested": "[1.0.0-prerelease7, )", + "resolved": "1.0.0-prerelease7", + "contentHash": "IIja5sC4QZ5pbSNckRCG7TlY4U6j/dRbrl4e2FZqsTGgsevaVB3IqonUQLFY1GGst4xNSl2oh0A23coXQxXGbQ==" }, "SharpVectors.Reloaded": { "type": "Direct", @@ -272,18 +272,18 @@ }, "RGB.NET.Layout": { "type": "Transitive", - "resolved": "1.0.0-prerelease1", - "contentHash": "nbaHbcY59tzFSeTDbImhrcR1ZyJpoC0x6WawXdtGXO7x3F91ajM7kM5SJwi/5jHdD61vGV0ARuznmR8ErAWegQ==", + "resolved": "1.0.0-prerelease7", + "contentHash": "S0kfWVa8EfMOAl2WPHsq98dwaO+SNz9TWr1AtMkdo8aZuYIVhaJ1c+mSAMMnH1V+mSbxDWPHWkNzi9ITszJucA==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "RGB.NET.Presets": { "type": "Transitive", - "resolved": "1.0.0-prerelease1", - "contentHash": "XU8XeI0fQF26fd0pQHgoe9RaROuvENmZlX/1QyyaN9P3j0LtYmy6ycWZbsXp8byLT0UcGbS+odMiQQAnK+kxgg==", + "resolved": "1.0.0-prerelease7", + "contentHash": "NgShvOPQM0miOsdqMKjkNunngJUZMwr8KR8ME2/Ksir7wgIQfgJj1YwZy8aIj+ar7fDo6VZJZenAshs/Ul+04A==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { @@ -1325,9 +1325,9 @@ "Ninject": "3.3.4", "Ninject.Extensions.ChildKernel": "3.3.0", "Ninject.Extensions.Conventions": "3.3.0", - "RGB.NET.Core": "1.0.0-prerelease1", - "RGB.NET.Layout": "1.0.0-prerelease1", - "RGB.NET.Presets": "1.0.0-prerelease1", + "RGB.NET.Core": "1.0.0-prerelease7", + "RGB.NET.Layout": "1.0.0-prerelease7", + "RGB.NET.Presets": "1.0.0-prerelease7", "Serilog": "2.10.0", "Serilog.Sinks.Console": "4.0.0", "Serilog.Sinks.Debug": "2.0.0", diff --git a/src/Artemis.UI/Artemis.UI.csproj b/src/Artemis.UI/Artemis.UI.csproj index da33f5fcb..1bb9d0780 100644 --- a/src/Artemis.UI/Artemis.UI.csproj +++ b/src/Artemis.UI/Artemis.UI.csproj @@ -145,8 +145,8 @@ - - + + diff --git a/src/Artemis.UI/Screens/Settings/Device/DeviceDialogViewModel.cs b/src/Artemis.UI/Screens/Settings/Device/DeviceDialogViewModel.cs index 97f47d8c7..19ee3a135 100644 --- a/src/Artemis.UI/Screens/Settings/Device/DeviceDialogViewModel.cs +++ b/src/Artemis.UI/Screens/Settings/Device/DeviceDialogViewModel.cs @@ -213,7 +213,8 @@ namespace Artemis.UI.Screens.Settings.Device Device.RgbDevice.DeviceInfo.Manufacturer, Device.DeviceType.ToString() ); - string filePath = Path.Combine(directory, Device.GetLayoutFileName()); + + string filePath = Path.Combine(directory, Device.DeviceProvider.GetDeviceLayoutName(Device)); Core.Utilities.CreateAccessibleDirectory(directory); // XML diff --git a/src/Artemis.UI/packages.lock.json b/src/Artemis.UI/packages.lock.json index c28d978da..34aad11eb 100644 --- a/src/Artemis.UI/packages.lock.json +++ b/src/Artemis.UI/packages.lock.json @@ -124,17 +124,17 @@ }, "RGB.NET.Core": { "type": "Direct", - "requested": "[1.0.0-prerelease1, )", - "resolved": "1.0.0-prerelease1", - "contentHash": "aaCPk++kr1TaV/qWYeol5975IN3XifDuuQ9wrCD+nw1cy05BMdGVhuQ72ITb0YRBedssd/btkM51ZABsBd8CEQ==" + "requested": "[1.0.0-prerelease7, )", + "resolved": "1.0.0-prerelease7", + "contentHash": "IIja5sC4QZ5pbSNckRCG7TlY4U6j/dRbrl4e2FZqsTGgsevaVB3IqonUQLFY1GGst4xNSl2oh0A23coXQxXGbQ==" }, "RGB.NET.Layout": { "type": "Direct", - "requested": "[1.0.0-prerelease1, )", - "resolved": "1.0.0-prerelease1", - "contentHash": "nbaHbcY59tzFSeTDbImhrcR1ZyJpoC0x6WawXdtGXO7x3F91ajM7kM5SJwi/5jHdD61vGV0ARuznmR8ErAWegQ==", + "requested": "[1.0.0-prerelease7, )", + "resolved": "1.0.0-prerelease7", + "contentHash": "S0kfWVa8EfMOAl2WPHsq98dwaO+SNz9TWr1AtMkdo8aZuYIVhaJ1c+mSAMMnH1V+mSbxDWPHWkNzi9ITszJucA==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "Serilog": { @@ -394,10 +394,10 @@ }, "RGB.NET.Presets": { "type": "Transitive", - "resolved": "1.0.0-prerelease1", - "contentHash": "XU8XeI0fQF26fd0pQHgoe9RaROuvENmZlX/1QyyaN9P3j0LtYmy6ycWZbsXp8byLT0UcGbS+odMiQQAnK+kxgg==", + "resolved": "1.0.0-prerelease7", + "contentHash": "NgShvOPQM0miOsdqMKjkNunngJUZMwr8KR8ME2/Ksir7wgIQfgJj1YwZy8aIj+ar7fDo6VZJZenAshs/Ul+04A==", "dependencies": { - "RGB.NET.Core": "1.0.0-prerelease1" + "RGB.NET.Core": "1.0.0-prerelease7" } }, "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl": { @@ -1454,9 +1454,9 @@ "Ninject": "3.3.4", "Ninject.Extensions.ChildKernel": "3.3.0", "Ninject.Extensions.Conventions": "3.3.0", - "RGB.NET.Core": "1.0.0-prerelease1", - "RGB.NET.Layout": "1.0.0-prerelease1", - "RGB.NET.Presets": "1.0.0-prerelease1", + "RGB.NET.Core": "1.0.0-prerelease7", + "RGB.NET.Layout": "1.0.0-prerelease7", + "RGB.NET.Presets": "1.0.0-prerelease7", "Serilog": "2.10.0", "Serilog.Sinks.Console": "4.0.0", "Serilog.Sinks.Debug": "2.0.0", @@ -1486,7 +1486,7 @@ "Microsoft.Xaml.Behaviors.Wpf": "1.1.31", "Ninject": "3.3.4", "Ninject.Extensions.Conventions": "3.3.0", - "RGB.NET.Core": "1.0.0-prerelease1", + "RGB.NET.Core": "1.0.0-prerelease7", "SharpVectors.Reloaded": "1.7.5", "SkiaSharp": "2.80.3", "SkiaSharp.Views.WPF": "2.80.3",