From 1e3121a4dfe2be70fc494f1f7a9ae8681125269e Mon Sep 17 00:00:00 2001 From: Robert Date: Mon, 28 Jun 2021 22:04:42 +0200 Subject: [PATCH 1/6] UI - Fix error message on Windows shutdown on some systems --- src/Artemis.UI/Bootstrapper.cs | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/src/Artemis.UI/Bootstrapper.cs b/src/Artemis.UI/Bootstrapper.cs index d444e16e2..8f941ef60 100644 --- a/src/Artemis.UI/Bootstrapper.cs +++ b/src/Artemis.UI/Bootstrapper.cs @@ -27,6 +27,7 @@ namespace Artemis.UI { private ApplicationStateManager _applicationStateManager; private ICoreService _core; + private ILogger _exceptionLogger; public Bootstrapper() { @@ -48,11 +49,11 @@ namespace Artemis.UI { _applicationStateManager = new ApplicationStateManager(Kernel, Args); Core.Utilities.PrepareFirstLaunch(); - - ILogger logger = Kernel.Get(); + + _exceptionLogger = Kernel.Get(); if (_applicationStateManager.FocusExistingInstance()) { - logger.Information("Shutting down because a different instance is already running."); + _exceptionLogger.Information("Shutting down because a different instance is already running."); Application.Current.Shutdown(1); return; } @@ -63,7 +64,7 @@ namespace Artemis.UI } catch (Exception ex) { - logger.Error($"Failed to set DPI-Awareness: {ex.Message}"); + _exceptionLogger.Error($"Failed to set DPI-Awareness: {ex.Message}"); } IViewManager viewManager = Kernel.Get(); @@ -76,7 +77,7 @@ namespace Artemis.UI } catch (Exception e) { - HandleFatalException(e, logger); + HandleFatalException(e); throw; } @@ -101,7 +102,7 @@ namespace Artemis.UI } catch (Exception e) { - HandleFatalException(e, logger); + HandleFatalException(e); throw; } }); @@ -132,12 +133,11 @@ namespace Artemis.UI protected override void OnUnhandledException(DispatcherUnhandledExceptionEventArgs e) { - ILogger logger = Kernel.Get(); - logger.Fatal(e.Exception, "Unhandled exception"); - - IDialogService dialogService = Kernel.Get(); try { + _exceptionLogger.Fatal(e.Exception, "Unhandled exception"); + + IDialogService dialogService = Kernel.Get(); dialogService.ShowExceptionDialog("Artemis encountered an error", e.Exception); } catch (Exception) @@ -149,9 +149,9 @@ namespace Artemis.UI e.Handled = true; } - private void HandleFatalException(Exception e, ILogger logger) + private void HandleFatalException(Exception e) { - logger.Fatal(e, "Fatal exception during initialization, shutting down."); + _exceptionLogger.Fatal(e, "Fatal exception during initialization, shutting down."); Execute.OnUIThread(() => { _applicationStateManager.DisplayException(e); From ab754942d571ed28a5cf787c1760e432a2c5094f Mon Sep 17 00:00:00 2001 From: Robert Date: Wed, 30 Jun 2021 17:07:44 +0200 Subject: [PATCH 2/6] Profile editor - Added adapt menu option Profile editor - Implement menu title casing Device properties - Display LED ID even if missing from enum --- .../Converters/LedIdToStringConverter.cs | 29 +++++++++++++++++ .../Converters/UriToFileNameConverter.cs | 1 + .../ProfileEditor/ProfileEditorView.xaml | 31 ++++++++++--------- .../ProfileEditor/ProfileEditorViewModel.cs | 28 ++++++++--------- .../Device/Tabs/DeviceLedsTabView.xaml | 3 +- 5 files changed, 63 insertions(+), 29 deletions(-) create mode 100644 src/Artemis.UI/Converters/LedIdToStringConverter.cs diff --git a/src/Artemis.UI/Converters/LedIdToStringConverter.cs b/src/Artemis.UI/Converters/LedIdToStringConverter.cs new file mode 100644 index 000000000..154ca4bb9 --- /dev/null +++ b/src/Artemis.UI/Converters/LedIdToStringConverter.cs @@ -0,0 +1,29 @@ +using System; +using System.Globalization; +using System.Windows.Data; +using RGB.NET.Core; + +namespace Artemis.UI.Converters +{ + [ValueConversion(typeof(LedId), typeof(string))] + public class LedIdToStringConverter : IValueConverter + { + #region Implementation of IValueConverter + + /// + public object Convert(object value, Type targetType, object parameter, CultureInfo culture) + { + return value?.ToString(); + } + + /// + public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture) + { + if (Enum.TryParse(typeof(LedId), value?.ToString(), true, out object parsedLedId)) + return parsedLedId; + return LedId.Unknown1; + } + + #endregion + } +} \ No newline at end of file diff --git a/src/Artemis.UI/Converters/UriToFileNameConverter.cs b/src/Artemis.UI/Converters/UriToFileNameConverter.cs index 435c1fec5..1118d3eec 100644 --- a/src/Artemis.UI/Converters/UriToFileNameConverter.cs +++ b/src/Artemis.UI/Converters/UriToFileNameConverter.cs @@ -5,6 +5,7 @@ using System.Windows.Data; namespace Artemis.UI.Converters { + [ValueConversion(typeof(Uri), typeof(string))] public class UriToFileNameConverter : IValueConverter { public object Convert(object value, Type targetType, object parameter, CultureInfo culture) diff --git a/src/Artemis.UI/Screens/ProfileEditor/ProfileEditorView.xaml b/src/Artemis.UI/Screens/ProfileEditor/ProfileEditorView.xaml index b91b42a7f..735390a5d 100644 --- a/src/Artemis.UI/Screens/ProfileEditor/ProfileEditorView.xaml +++ b/src/Artemis.UI/Screens/ProfileEditor/ProfileEditorView.xaml @@ -60,21 +60,24 @@ s:View.ActionTarget="{Binding ProfileTreeViewModel}" /> - - + - - - @@ -95,20 +98,20 @@ InputGestureText="Ctrl+V" /> - - - - @@ -121,7 +124,7 @@ Icon="{materialDesign:PackIcon Kind=Layers}" Command="{s:Action OpenUrl}" CommandParameter="https://wiki.artemis-rgb.com/guides/user/profiles/layers" /> - @@ -129,7 +132,7 @@ Icon="{materialDesign:PackIcon Kind=Stopwatch}" Command="{s:Action OpenUrl}" CommandParameter="https://wiki.artemis-rgb.com/guides/user/profiles/timeline" /> - @@ -138,11 +141,11 @@ Command="{s:Action OpenUrl}" CommandParameter="https://wiki.artemis-rgb.com/guides/user/profiles/scripting" /> - - @@ -152,7 +155,7 @@