diff --git a/Artemis/Artemis/App.xaml b/Artemis/Artemis/App.xaml index 1b093a2b3..15a67464a 100644 --- a/Artemis/Artemis/App.xaml +++ b/Artemis/Artemis/App.xaml @@ -17,8 +17,7 @@ - + diff --git a/Artemis/Artemis/App.xaml.cs b/Artemis/Artemis/App.xaml.cs index 3d53eec5c..3745a9ffa 100644 --- a/Artemis/Artemis/App.xaml.cs +++ b/Artemis/Artemis/App.xaml.cs @@ -1,6 +1,7 @@ using System; using System.Windows; using System.Windows.Threading; +using Artemis.Utilities.Keyboard; using NLog; using WpfExceptionViewer; @@ -26,6 +27,9 @@ namespace Artemis private void Application_DispatcherUnhandledException(object sender, DispatcherUnhandledExceptionEventArgs e) { + // Get rid of the keyboard hook in case of a crash, otherwise input freezes up system wide until Artemis is gone + KeyboardHook.Dispose(); + if (DoHandle) { GetArtemisExceptionViewer(e.Exception).ShowDialog(); diff --git a/Artemis/Artemis/Artemis.csproj b/Artemis/Artemis/Artemis.csproj index 614e91570..187addca8 100644 --- a/Artemis/Artemis/Artemis.csproj +++ b/Artemis/Artemis/Artemis.csproj @@ -151,16 +151,16 @@ ..\packages\Caliburn.Micro.3.0.3\lib\net45\Caliburn.Micro.Platform.Core.dll True - - ..\packages\Castle.Core.3.3.3\lib\net45\Castle.Core.dll + + ..\packages\Castle.Core.4.0.0\lib\net45\Castle.Core.dll True ..\packages\Colore.5.1.0\lib\net35\Corale.Colore.dll True - - ..\packages\CSCore.1.1.0\lib\net35-client\CSCore.dll + + ..\packages\CSCore.1.2.0\lib\net35-client\CSCore.dll True @@ -203,8 +203,8 @@ ..\packages\log4net.2.0.7\lib\net45-full\log4net.dll True - - ..\packages\MahApps.Metro.1.4.1\lib\net45\MahApps.Metro.dll + + ..\packages\MahApps.Metro.1.4.3\lib\net45\MahApps.Metro.dll True @@ -248,7 +248,7 @@ True - ..\packages\NLog.4.4.1\lib\net45\NLog.dll + ..\packages\NLog.4.4.3\lib\net45\NLog.dll True @@ -290,7 +290,7 @@ - ..\packages\MahApps.Metro.1.4.1\lib\net45\System.Windows.Interactivity.dll + ..\packages\MahApps.Metro.1.4.3\lib\net45\System.Windows.Interactivity.dll True @@ -502,7 +502,7 @@ - + diff --git a/Artemis/Artemis/ArtemisBootstrapper.cs b/Artemis/Artemis/ArtemisBootstrapper.cs index 9167e96c6..bcf6715ad 100644 --- a/Artemis/Artemis/ArtemisBootstrapper.cs +++ b/Artemis/Artemis/ArtemisBootstrapper.cs @@ -36,6 +36,14 @@ namespace Artemis Initialize(); BindSpecialValues(); KeyboardHook.SetupKeyboardHook(); + + AppDomain.CurrentDomain.UnhandledException += CurrentDomainOnUnhandledException; + } + + private void CurrentDomainOnUnhandledException(object sender, UnhandledExceptionEventArgs unhandledExceptionEventArgs) + { + // Get rid of the keyboard hook in case of a crash, otherwise input freezes up system wide until Artemis is gone + KeyboardHook.Dispose(); } private void BindSpecialValues() diff --git a/Artemis/Artemis/DeviceProviders/Artemis/NoneKeyboard.cs b/Artemis/Artemis/DeviceProviders/Artemis/NoneKeyboard.cs index 9aa51c19b..eceed8187 100644 --- a/Artemis/Artemis/DeviceProviders/Artemis/NoneKeyboard.cs +++ b/Artemis/Artemis/DeviceProviders/Artemis/NoneKeyboard.cs @@ -14,7 +14,7 @@ namespace Artemis.DeviceProviders.Artemis CantEnableText = "Waaaaah, this should not be happening!"; Height = 1; Width = 1; - PreviewSettings = new PreviewSettings(984, 375, new Thickness(0, 0, 0, 0), Resources.none); + PreviewSettings = new PreviewSettings(new Thickness(0, 0, 0, 0), Resources.none); } public override void Disable() diff --git a/Artemis/Artemis/DeviceProviders/CoolerMaster/MasterkeysProL.cs b/Artemis/Artemis/DeviceProviders/CoolerMaster/MasterkeysProL.cs index e6d815676..bb5a9f4d0 100644 --- a/Artemis/Artemis/DeviceProviders/CoolerMaster/MasterkeysProL.cs +++ b/Artemis/Artemis/DeviceProviders/CoolerMaster/MasterkeysProL.cs @@ -28,7 +28,7 @@ namespace Artemis.DeviceProviders.CoolerMaster Height = 6; Width = 22; - PreviewSettings = new PreviewSettings(670, 189, new Thickness(-2, -5, 0, 0), Resources.masterkeys_pro_l); + PreviewSettings = new PreviewSettings(new Thickness(-2, -5, 0, 0), Resources.masterkeys_pro_l); _generalSettings = SettingsProvider.Load(); } diff --git a/Artemis/Artemis/DeviceProviders/CoolerMaster/MasterkeysProS.cs b/Artemis/Artemis/DeviceProviders/CoolerMaster/MasterkeysProS.cs index f2eb70383..8745e56b7 100644 --- a/Artemis/Artemis/DeviceProviders/CoolerMaster/MasterkeysProS.cs +++ b/Artemis/Artemis/DeviceProviders/CoolerMaster/MasterkeysProS.cs @@ -28,7 +28,7 @@ namespace Artemis.DeviceProviders.CoolerMaster Height = 6; Width = 18; - PreviewSettings = new PreviewSettings(683, 242, new Thickness(0, 0, 0, 0), Resources.masterkeys_pro_s); + PreviewSettings = new PreviewSettings(new Thickness(0, 0, 0, 0), Resources.masterkeys_pro_s); _generalSettings = SettingsProvider.Load(); } diff --git a/Artemis/Artemis/DeviceProviders/Corsair/CorsairKeyboard.cs b/Artemis/Artemis/DeviceProviders/Corsair/CorsairKeyboard.cs index b20c85c55..46ad9388a 100644 --- a/Artemis/Artemis/DeviceProviders/Corsair/CorsairKeyboard.cs +++ b/Artemis/Artemis/DeviceProviders/Corsair/CorsairKeyboard.cs @@ -55,7 +55,7 @@ namespace Artemis.DeviceProviders.Corsair Height = 7; Width = 25; Slug = "corsair-k95-rgb"; - PreviewSettings = new PreviewSettings(676, 190, new Thickness(0, -15, 0, 0), Resources.k95); + PreviewSettings = new PreviewSettings(new Thickness(0, -15, 0, 0), Resources.k95); break; case "K70 RGB": case "K70 RGB RAPIDFIRE": @@ -63,7 +63,7 @@ namespace Artemis.DeviceProviders.Corsair Height = 7; Width = 21; Slug = "corsair-k70-rgb"; - PreviewSettings = new PreviewSettings(676, 210, new Thickness(0, -25, 0, 0), Resources.k70); + PreviewSettings = new PreviewSettings(new Thickness(0, -25, 0, 0), Resources.k70); break; case "K65 RGB": case "CGK65 RGB": @@ -72,13 +72,13 @@ namespace Artemis.DeviceProviders.Corsair Height = 7; Width = 18; Slug = "corsair-k65-rgb"; - PreviewSettings = new PreviewSettings(610, 240, new Thickness(0, -30, 0, 0), Resources.k65); + PreviewSettings = new PreviewSettings(new Thickness(0, -30, 0, 0), Resources.k65); break; case "STRAFE RGB": Height = 7; Width = 22; Slug = "corsair-strafe-rgb"; - PreviewSettings = new PreviewSettings(665, 215, new Thickness(0, -5, 0, 0), Resources.strafe); + PreviewSettings = new PreviewSettings(new Thickness(0, -5, 0, 0), Resources.strafe); break; } diff --git a/Artemis/Artemis/DeviceProviders/KeyboardProvider.cs b/Artemis/Artemis/DeviceProviders/KeyboardProvider.cs index 60b146fdb..98fc47144 100644 --- a/Artemis/Artemis/DeviceProviders/KeyboardProvider.cs +++ b/Artemis/Artemis/DeviceProviders/KeyboardProvider.cs @@ -115,15 +115,11 @@ namespace Artemis.DeviceProviders public struct PreviewSettings { - public int Width { get; set; } - public int Height { get; set; } public Thickness Margin { get; set; } public Bitmap Image { get; set; } - public PreviewSettings(int width, int height, Thickness margin, Bitmap image) + public PreviewSettings(Thickness margin, Bitmap image) { - Width = width; - Height = height; Margin = margin; Image = image; } diff --git a/Artemis/Artemis/DeviceProviders/Logitech/G810.cs b/Artemis/Artemis/DeviceProviders/Logitech/G810.cs index aedb226b2..b1496acb7 100644 --- a/Artemis/Artemis/DeviceProviders/Logitech/G810.cs +++ b/Artemis/Artemis/DeviceProviders/Logitech/G810.cs @@ -22,7 +22,7 @@ namespace Artemis.DeviceProviders.Logitech "If needed, you can select a different keyboard in Artemis under settings."; Height = 6; Width = 21; - PreviewSettings = new PreviewSettings(675, 185, new Thickness(0, 35, 0, 0), Resources.g810); + PreviewSettings = new PreviewSettings(new Thickness(0, 35, 0, 0), Resources.g810); _generalSettings = SettingsProvider.Load(); } diff --git a/Artemis/Artemis/DeviceProviders/Logitech/G910.cs b/Artemis/Artemis/DeviceProviders/Logitech/G910.cs index e6f9ae8ce..fd7a69620 100644 --- a/Artemis/Artemis/DeviceProviders/Logitech/G910.cs +++ b/Artemis/Artemis/DeviceProviders/Logitech/G910.cs @@ -24,7 +24,7 @@ namespace Artemis.DeviceProviders.Logitech "If needed, you can select a different keyboard in Artemis under settings."; Height = 7; Width = 22; - PreviewSettings = new PreviewSettings(570, 175, new Thickness(-10, -105, 0, 0), Resources.g910); + PreviewSettings = new PreviewSettings(new Thickness(10, -70, 10, 50), Resources.g910); _generalSettings = SettingsProvider.Load(); } diff --git a/Artemis/Artemis/DeviceProviders/Razer/BlackWidow.cs b/Artemis/Artemis/DeviceProviders/Razer/BlackWidow.cs index 4814c32bb..036545fbf 100644 --- a/Artemis/Artemis/DeviceProviders/Razer/BlackWidow.cs +++ b/Artemis/Artemis/DeviceProviders/Razer/BlackWidow.cs @@ -27,7 +27,7 @@ namespace Artemis.DeviceProviders.Razer Height = Constants.MaxRows; Width = Constants.MaxColumns; - PreviewSettings = new PreviewSettings(665, 175, new Thickness(0, -15, 0, 0), Resources.blackwidow); + PreviewSettings = new PreviewSettings(new Thickness(0, -15, 0, 0), Resources.blackwidow); _generalSettings = SettingsProvider.Load(); } diff --git a/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueModel.cs b/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueModel.cs index 34ae2f8b9..50d3dc7bc 100644 --- a/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueModel.cs +++ b/Artemis/Artemis/Modules/Games/RocketLeague/RocketLeagueModel.cs @@ -1,10 +1,13 @@ -using System.Linq; +using System; +using System.Collections.Generic; +using System.Linq; using Artemis.DAL; using Artemis.Managers; using Artemis.Modules.Abstract; using Artemis.Settings; using Artemis.Utilities; using Artemis.Utilities.Memory; +using Newtonsoft.Json; namespace Artemis.Modules.Games.RocketLeague { @@ -20,21 +23,21 @@ namespace Artemis.Modules.Games.RocketLeague ProcessNames.Add("RocketLeague"); // Generate a new offset when the game is updated - //var offset = new GamePointersCollection - //{ - // Game = "RocketLeague", - // GameVersion = "1.27", - // GameAddresses = new List - // { - // new GamePointer - // { - // Description = "Boost", - // BasePointer = new IntPtr(0x016D5084), - // Offsets = new[] {0xC4, 0x214, 0x320, 0x73C, 0x224} - // } - // } - //}; - //var res = JsonConvert.SerializeObject(offset, Formatting.Indented); + var offset = new GamePointersCollection + { + Game = "RocketLeague", + GameVersion = "1.30", + GameAddresses = new List + { + new GamePointer + { + Description = "Boost", + BasePointer = new IntPtr(0x016E00B4), + Offsets = new[] {0xC4, 0x18, 0x388, 0x73C, 0x224} + } + } + }; + var res = JsonConvert.SerializeObject(offset, Formatting.Indented); } public override string Name => "RocketLeague"; diff --git a/Artemis/Artemis/NLog.xsd b/Artemis/Artemis/NLog.xsd index 2c7d1ff23..f1ff205fa 100644 --- a/Artemis/Artemis/NLog.xsd +++ b/Artemis/Artemis/NLog.xsd @@ -250,9 +250,11 @@ + + @@ -264,6 +266,11 @@ Number of log events that should be processed in a batch by the lazy writer thread. + + + Limit of full s to write before yielding into Performance is better when writing many small batches, than writing a single large batch + + Action to be taken when the lazy writer thread request queue count exceeds the set limit. @@ -279,6 +286,11 @@ Time in milliseconds to sleep between batches. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -295,6 +307,7 @@ + @@ -306,6 +319,11 @@ Condition expression. Log events who meet this condition will cause a flush on the wrapped target. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -317,6 +335,7 @@ + @@ -338,6 +357,11 @@ Indicates whether to use sliding timeout. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -353,19 +377,20 @@ + - - - + + + - - + + @@ -407,6 +432,11 @@ Action that should be taken if the message is larger than maxMessageSize. + + + Maximum current connections. 0 = no maximum. + + Indicates whether to keep connection open whenever possible. @@ -417,11 +447,6 @@ Size of the connection cache (number of connections which are kept alive). - - - Maximum current connections. 0 = no maximum. - - Network address. @@ -432,14 +457,19 @@ Maximum queue size. + + + Indicates whether to include dictionary contents. + + Indicates whether to include source info (file name and line number) in the information sent over the network. - + - NDC item separator. + Indicates whether to include NLog-specific extensions to log4j schema. @@ -457,14 +487,14 @@ AppInfo field. By default it's the friendly name of the current AppDomain. - + - Indicates whether to include NLog-specific extensions to log4j schema. + NDC item separator. - + - Indicates whether to include dictionary contents. + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit @@ -514,6 +544,7 @@ + @@ -555,6 +586,11 @@ Indicates whether the error stream (stderr) should be used instead of the output stream (stdout). + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -658,6 +694,7 @@ + @@ -694,6 +731,11 @@ The encoding for writing messages to the . + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -702,77 +744,83 @@ - - - - - - - - + + + + + + + + + + - Name of the target. - - - Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase. - - - - - Name of the connection string (as specified in <connectionStrings> configuration section. - - - - - Database name. If the ConnectionString is not provided this value will be used to construct the "Database=" part of the connection string. - - - - - Database host name. If the ConnectionString is not provided this value will be used to construct the "Server=" part of the connection string. - - - - - Database password. If the ConnectionString is not provided this value will be used to construct the "Password=" part of the connection string. - - - - - Name of the database provider. - - - - - Database user name. If the ConnectionString is not provided this value will be used to construct the "User ID=" part of the connection string. - - - - - Indicates whether to keep the database connection open between the log events. - - Obsolete - value will be ignored! The logging code always runs outside of transaction. Gets or sets a value indicating whether to use database transactions. Some data providers require this. + + + Database user name. If the ConnectionString is not provided this value will be used to construct the "User ID=" part of the connection string. + + + + + Name of the database provider. + + + + + Database password. If the ConnectionString is not provided this value will be used to construct the "Password=" part of the connection string. + + + + + Indicates whether to keep the database connection open between the log events. + + + + + Database name. If the ConnectionString is not provided this value will be used to construct the "Database=" part of the connection string. + + + + + Name of the connection string (as specified in <connectionStrings> configuration section. + + + + + Connection string. When provided, it overrides the values specified in DBHost, DBUserName, DBPassword, DBDatabase. + + + + + Database host name. If the ConnectionString is not provided this value will be used to construct the "Server=" part of the connection string. + + Connection string using for installation and uninstallation. If not provided, regular ConnectionString is being used. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + Text of the SQL command to be run on each log level. @@ -864,6 +912,7 @@ + @@ -885,6 +934,11 @@ Footer. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -894,6 +948,7 @@ + @@ -905,6 +960,11 @@ Layout used to format log messages. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -922,6 +982,7 @@ + @@ -973,6 +1034,11 @@ Message length limit to write to the Event Log. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -989,6 +1055,7 @@ + @@ -1000,6 +1067,11 @@ Indicates whether to return to the first target after any successful write. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -1022,6 +1094,7 @@ + @@ -1039,6 +1112,7 @@ + @@ -1119,6 +1193,11 @@ 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. + + + Whether or not this target should just discard all data that its asked to write. Mostly used for when testing NLog Stack except final write + + Is the an absolute or relative path? @@ -1204,6 +1283,11 @@ Maximum number of seconds that files are kept open. If this number is negative the files are not automatically closed after a period of inactivity. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + Log file buffer size in bytes. @@ -1278,6 +1362,7 @@ + @@ -1289,6 +1374,11 @@ Condition expression. Log events who meet this condition will be forwarded to the wrapped target. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -1304,6 +1394,7 @@ + @@ -1345,6 +1436,11 @@ Username to change context to. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -1378,6 +1474,7 @@ + @@ -1394,6 +1491,11 @@ Maximum allowed number of messages written per . + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -1409,6 +1511,7 @@ + @@ -1445,6 +1548,11 @@ Indicates whether to use binary message encoding. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -1487,9 +1595,10 @@ - - + + + @@ -1565,9 +1674,9 @@ Sender's email address (e.g. joe@domain.com). - + - Indicates whether NewLine characters in the body should be replaced with tags. + Indicates the SMTP client timeout. @@ -1575,9 +1684,14 @@ Priority used for sending mails. - + - Indicates the SMTP client timeout. + Indicates whether NewLine characters in the body should be replaced with tags. + + + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit @@ -1648,6 +1762,7 @@ + @@ -1659,6 +1774,11 @@ Layout used to format log messages. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -1671,6 +1791,7 @@ + @@ -1701,6 +1822,11 @@ Indicates whether to check if a queue exists before writing to it. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + Indicates whether to create the queue if it doesn't exists. @@ -1732,6 +1858,7 @@ + @@ -1748,6 +1875,11 @@ Method name. The method must be public and static. Use the AssemblyQualifiedName , https://msdn.microsoft.com/en-us/library/system.type.assemblyqualifiedname(v=vs.110).aspx e.g. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -1768,6 +1900,7 @@ + @@ -1834,6 +1967,11 @@ Maximum queue size. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -1849,19 +1987,20 @@ + - - - + + + - - + + @@ -1903,6 +2042,11 @@ Action that should be taken if the message is larger than maxMessageSize. + + + Maximum current connections. 0 = no maximum. + + Indicates whether to keep connection open whenever possible. @@ -1913,11 +2057,6 @@ Size of the connection cache (number of connections which are kept alive). - - - Maximum current connections. 0 = no maximum. - - Network address. @@ -1928,14 +2067,19 @@ Maximum queue size. + + + Indicates whether to include dictionary contents. + + Indicates whether to include source info (file name and line number) in the information sent over the network. - + - NDC item separator. + Indicates whether to include NLog-specific extensions to log4j schema. @@ -1953,14 +2097,14 @@ AppInfo field. By default it's the friendly name of the current AppDomain. - + - Indicates whether to include NLog-specific extensions to log4j schema. + NDC item separator. - + - Indicates whether to include dictionary contents. + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit @@ -1973,6 +2117,7 @@ + @@ -1989,6 +2134,11 @@ Indicates whether to perform layout calculation. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -1998,6 +2148,7 @@ + @@ -2009,6 +2160,11 @@ Layout used to format log messages. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -2024,6 +2180,7 @@ + @@ -2065,6 +2222,11 @@ Performance counter instance name. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -2107,6 +2269,7 @@ + @@ -2118,6 +2281,11 @@ Default filter to be applied when no specific rule matches. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -2142,12 +2310,18 @@ + Name of the target. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -2156,6 +2330,7 @@ + @@ -2163,6 +2338,11 @@ Name of the target. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + Number of times to repeat each log message. @@ -2176,6 +2356,7 @@ + @@ -2184,6 +2365,11 @@ Name of the target. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + Number of retries that should be attempted on the wrapped target in case of a failure. @@ -2202,12 +2388,18 @@ + Name of the target. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -2216,12 +2408,18 @@ + Name of the target. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -2231,6 +2429,7 @@ + @@ -2242,6 +2441,11 @@ Layout used to format log messages. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + @@ -2252,6 +2456,7 @@ + @@ -2272,6 +2477,11 @@ Should we include the BOM (Byte-order-mark) for UTF? Influences the property. This will only work for UTF-8. + + + Target supports reuse of internal buffers, and doesn't have to constantly allocate new buffers Required for legacy NLog-targets, that expects buffers to remain stable after Write-method exit + + Encoding. diff --git a/Artemis/Artemis/Profiles/Layers/Types/AmbientLight/AmbientLightPropertiesView.xaml b/Artemis/Artemis/Profiles/Layers/Types/AmbientLight/AmbientLightPropertiesView.xaml index 8201fe8d9..f56ea2b83 100644 --- a/Artemis/Artemis/Profiles/Layers/Types/AmbientLight/AmbientLightPropertiesView.xaml +++ b/Artemis/Artemis/Profiles/Layers/Types/AmbientLight/AmbientLightPropertiesView.xaml @@ -1,15 +1,15 @@  + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:converters="clr-namespace:Artemis.Utilities.Converters" + xmlns:system="clr-namespace:System;assembly=mscorlib" + xmlns:model="clr-namespace:Artemis.Profiles.Layers.Types.AmbientLight.Model" + xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls" + xmlns:helper="clr-namespace:Artemis.Profiles.Layers.Types.AmbientLight.Helper" + mc:Ignorable="d" + d:DesignHeight="600" d:DesignWidth="500"> @@ -29,135 +29,101 @@ - - - - + + + + - - - - - - - - - - + + + + + + + + + + - - + \ No newline at end of file diff --git a/Artemis/Artemis/Profiles/Layers/Types/AmbientLight/Helper/CheckboxEnumFlagHelper.cs b/Artemis/Artemis/Profiles/Layers/Types/AmbientLight/Helper/ToggleSwitchButtonEnumFlagHelper.cs similarity index 52% rename from Artemis/Artemis/Profiles/Layers/Types/AmbientLight/Helper/CheckboxEnumFlagHelper.cs rename to Artemis/Artemis/Profiles/Layers/Types/AmbientLight/Helper/ToggleSwitchButtonEnumFlagHelper.cs index b6157ad68..f1c499721 100644 --- a/Artemis/Artemis/Profiles/Layers/Types/AmbientLight/Helper/CheckboxEnumFlagHelper.cs +++ b/Artemis/Artemis/Profiles/Layers/Types/AmbientLight/Helper/ToggleSwitchButtonEnumFlagHelper.cs @@ -1,18 +1,18 @@ using System; using System.Windows; -using System.Windows.Controls; using Artemis.Profiles.Layers.Types.AmbientLight.Model.Extensions; +using MahApps.Metro.Controls; namespace Artemis.Profiles.Layers.Types.AmbientLight.Helper { - public class CheckboxEnumFlagHelper + public class ToggleSwitchButtonEnumFlagHelper { #region DependencyProperties // ReSharper disable InconsistentNaming public static readonly DependencyProperty FlagsProperty = DependencyProperty.RegisterAttached( - "Flags", typeof(Enum), typeof(CheckboxEnumFlagHelper), + "Flags", typeof(Enum), typeof(ToggleSwitchButtonEnumFlagHelper), new FrameworkPropertyMetadata(default(Enum), FrameworkPropertyMetadataOptions.BindsTwoWayByDefault, FlagsChanged)); @@ -27,7 +27,7 @@ namespace Artemis.Profiles.Layers.Types.AmbientLight.Helper } public static readonly DependencyProperty ValueProperty = DependencyProperty.RegisterAttached( - "Value", typeof(Enum), typeof(CheckboxEnumFlagHelper), new PropertyMetadata(default(Enum), ValueChanged)); + "Value", typeof(Enum), typeof(ToggleSwitchButtonEnumFlagHelper), new PropertyMetadata(default(Enum), ValueChanged)); public static void SetValue(DependencyObject element, Enum value) { @@ -48,50 +48,54 @@ namespace Artemis.Profiles.Layers.Types.AmbientLight.Helper private static void FlagsChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs) { - UpdateTarget(dependencyObject as CheckBox, dependencyPropertyChangedEventArgs.NewValue as Enum); + UpdateTarget(dependencyObject as ToggleSwitchButton, dependencyPropertyChangedEventArgs.NewValue as Enum); } private static void ValueChanged(DependencyObject dependencyObject, DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs) { - var checkbox = dependencyObject as CheckBox; - if (checkbox == null) return; + var toggleSwitchButton = dependencyObject as ToggleSwitchButton; + if (toggleSwitchButton == null) + return; - checkbox.Checked -= UpdateSource; - checkbox.Unchecked -= UpdateSource; + toggleSwitchButton.Checked -= UpdateSource; + toggleSwitchButton.Unchecked -= UpdateSource; if (dependencyPropertyChangedEventArgs.NewValue != null) { - checkbox.Checked += UpdateSource; - checkbox.Unchecked += UpdateSource; + toggleSwitchButton.Checked += UpdateSource; + toggleSwitchButton.Unchecked += UpdateSource; } - UpdateTarget(checkbox, GetFlags(checkbox)); + UpdateTarget(toggleSwitchButton, GetFlags(toggleSwitchButton)); } - private static void UpdateTarget(CheckBox checkbox, Enum flags) + private static void UpdateTarget(ToggleSwitchButton toggleSwitchButton, Enum flags) { - if (checkbox == null) return; + if (toggleSwitchButton == null) + return; - var value = GetValue(checkbox); - checkbox.IsChecked = value != null && (flags?.HasFlag(value) ?? false); + var value = GetValue(toggleSwitchButton); + toggleSwitchButton.IsChecked = value != null && (flags?.HasFlag(value) ?? false); } private static void UpdateSource(object sender, RoutedEventArgs routedEventArgs) { - var checkbox = sender as CheckBox; - if (checkbox == null) return; + var toggleSwitchButton = sender as ToggleSwitchButton; + if (toggleSwitchButton == null) + return; - var flags = GetFlags(checkbox); - var value = GetValue(checkbox); - if (value == null) return; + var flags = GetFlags(toggleSwitchButton); + var value = GetValue(toggleSwitchButton); + if (value == null) + return; - if (checkbox.IsChecked ?? false) - SetFlags(checkbox, flags == null ? value : flags.SetFlag(value, true, flags.GetType())); + if (toggleSwitchButton.IsChecked ?? false) + SetFlags(toggleSwitchButton, flags == null ? value : flags.SetFlag(value, true, flags.GetType())); else - SetFlags(checkbox, flags?.SetFlag(value, false, flags.GetType())); + SetFlags(toggleSwitchButton, flags?.SetFlag(value, false, flags.GetType())); } #endregion } -} \ No newline at end of file +} diff --git a/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioPropertiesView.xaml b/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioPropertiesView.xaml index 00ec05a65..52dd1d2b4 100644 --- a/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioPropertiesView.xaml +++ b/Artemis/Artemis/Profiles/Layers/Types/Audio/AudioPropertiesView.xaml @@ -1,26 +1,26 @@  + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:ncore="http://schemas.ncore.com/wpf/xaml/colorbox" + xmlns:properties="clr-namespace:Artemis.Profiles.Layers.Types.Audio" + xmlns:system="clr-namespace:System;assembly=mscorlib" + xmlns:converters="clr-namespace:Artemis.Utilities.Converters" + mc:Ignorable="d" + d:DesignHeight="600" d:DesignWidth="500"> + ObjectType="{x:Type system:Enum}" + x:Key="MmDeviceTypeEnumValues"> + ObjectType="{x:Type system:Enum}" + x:Key="DirectionEnumValues"> @@ -28,25 +28,22 @@ - - - - + + + + - - - - - - + + + + + + - - + \ No newline at end of file diff --git a/Artemis/Artemis/Profiles/Layers/Types/Keyboard/KeyboardPropertiesView.xaml b/Artemis/Artemis/Profiles/Layers/Types/Keyboard/KeyboardPropertiesView.xaml index 64b806c84..a276defe4 100644 --- a/Artemis/Artemis/Profiles/Layers/Types/Keyboard/KeyboardPropertiesView.xaml +++ b/Artemis/Artemis/Profiles/Layers/Types/Keyboard/KeyboardPropertiesView.xaml @@ -1,36 +1,33 @@  + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls" + xmlns:ncore="http://schemas.ncore.com/wpf/xaml/colorbox" + mc:Ignorable="d" + d:DesignHeight="500" d:DesignWidth="500"> - - - - + + + + - - - - - - - - + + + + + + + + - - + \ No newline at end of file diff --git a/Artemis/Artemis/Views/Profiles/LayerDynamicPropertiesView.xaml b/Artemis/Artemis/Views/Profiles/LayerDynamicPropertiesView.xaml index 70ea80c43..a81344761 100644 --- a/Artemis/Artemis/Views/Profiles/LayerDynamicPropertiesView.xaml +++ b/Artemis/Artemis/Views/Profiles/LayerDynamicPropertiesView.xaml @@ -1,16 +1,14 @@  - + xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" + xmlns:d="http://schemas.microsoft.com/expression/blend/2008" + xmlns:sys="clr-namespace:System;assembly=mscorlib" + xmlns:controls="http://metro.mahapps.com/winfx/xaml/controls" + xmlns:models="clr-namespace:Artemis.Profiles.Layers.Models" + xmlns:converters="clr-namespace:Artemis.Utilities.Converters" + mc:Ignorable="d" + d:DesignWidth="500"> @@ -19,20 +17,19 @@ - + - + - +