From d18ef4f5f4f2f330b6d1e0e509281f5a3ab9fa81 Mon Sep 17 00:00:00 2001 From: Robert Date: Tue, 4 Jul 2023 20:24:38 +0200 Subject: [PATCH 1/3] Update Avalonia to 11 rc2.2 --- src/Artemis.UI.Linux/Artemis.UI.Linux.csproj | 8 ++++---- src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj | 8 ++++---- src/Artemis.UI.Shared/Artemis.UI.Shared.csproj | 6 +++--- .../Controls/DataModelPicker/DataModelPickerButton.cs | 2 +- src/Artemis.UI.Shared/Controls/NoInputTextBox.cs | 6 ++++-- src/Artemis.UI.Windows/Artemis.UI.Windows.csproj | 10 +++++----- src/Artemis.UI.Windows/Program.cs | 5 ----- src/Artemis.UI/Artemis.UI.csproj | 8 ++++---- src/Artemis.UI/Screens/Root/RootView.axaml.cs | 2 +- .../Artemis.VisualScripting.csproj | 4 ++-- 10 files changed, 28 insertions(+), 31 deletions(-) diff --git a/src/Artemis.UI.Linux/Artemis.UI.Linux.csproj b/src/Artemis.UI.Linux/Artemis.UI.Linux.csproj index 21c5abd88..a38c1b34c 100644 --- a/src/Artemis.UI.Linux/Artemis.UI.Linux.csproj +++ b/src/Artemis.UI.Linux/Artemis.UI.Linux.csproj @@ -16,11 +16,11 @@ - - + + - - + + diff --git a/src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj b/src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj index 9e2fc0938..72a221df4 100644 --- a/src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj +++ b/src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj @@ -15,11 +15,11 @@ - - + + - - + + diff --git a/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj b/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj index 3b69f3087..824cd9624 100644 --- a/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj +++ b/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj @@ -10,10 +10,10 @@ - + - - + + diff --git a/src/Artemis.UI.Shared/Controls/DataModelPicker/DataModelPickerButton.cs b/src/Artemis.UI.Shared/Controls/DataModelPicker/DataModelPickerButton.cs index eb8ab30a4..742e64458 100644 --- a/src/Artemis.UI.Shared/Controls/DataModelPicker/DataModelPickerButton.cs +++ b/src/Artemis.UI.Shared/Controls/DataModelPicker/DataModelPickerButton.cs @@ -225,7 +225,7 @@ public class DataModelPickerButton : TemplatedControl private void PathValidationChanged(object? sender, EventArgs e) { - Dispatcher.UIThread.InvokeAsync(UpdateValueDisplay, DispatcherPriority.DataBind); + Dispatcher.UIThread.InvokeAsync(UpdateValueDisplay, DispatcherPriority.Background); } private void UpdateValueDisplay() diff --git a/src/Artemis.UI.Shared/Controls/NoInputTextBox.cs b/src/Artemis.UI.Shared/Controls/NoInputTextBox.cs index de2964464..67ed37900 100644 --- a/src/Artemis.UI.Shared/Controls/NoInputTextBox.cs +++ b/src/Artemis.UI.Shared/Controls/NoInputTextBox.cs @@ -1,11 +1,12 @@ using System; +using Avalonia; using Avalonia.Controls; using Avalonia.Input; using Avalonia.Styling; namespace Artemis.UI.Shared; -internal class NoInputTextBox : TextBox, IStyleable +internal class NoInputTextBox : TextBox { /// protected override void OnKeyDown(KeyEventArgs e) @@ -19,5 +20,6 @@ internal class NoInputTextBox : TextBox, IStyleable // Don't call the base method on purpose } - Type IStyleable.StyleKey => typeof(TextBox); + /// + protected override Type StyleKeyOverride => typeof(TextBox); } \ No newline at end of file diff --git a/src/Artemis.UI.Windows/Artemis.UI.Windows.csproj b/src/Artemis.UI.Windows/Artemis.UI.Windows.csproj index 0110ec37e..1b839e4bf 100644 --- a/src/Artemis.UI.Windows/Artemis.UI.Windows.csproj +++ b/src/Artemis.UI.Windows/Artemis.UI.Windows.csproj @@ -21,12 +21,12 @@ - - + + - - - + + + diff --git a/src/Artemis.UI.Windows/Program.cs b/src/Artemis.UI.Windows/Program.cs index 37a113fc2..f9fc5e1f6 100644 --- a/src/Artemis.UI.Windows/Program.cs +++ b/src/Artemis.UI.Windows/Program.cs @@ -36,11 +36,6 @@ internal class Program return AppBuilder.Configure() .UsePlatformDetect() .LogToTrace() - .With(new Win32PlatformOptions - { - UseWindowsUIComposition = true, - CompositionBackdropCornerRadius = 8f - }) .UseReactiveUI(); } diff --git a/src/Artemis.UI/Artemis.UI.csproj b/src/Artemis.UI/Artemis.UI.csproj index 205fae2f5..e6294906e 100644 --- a/src/Artemis.UI/Artemis.UI.csproj +++ b/src/Artemis.UI/Artemis.UI.csproj @@ -15,12 +15,12 @@ - + - + - - + + diff --git a/src/Artemis.UI/Screens/Root/RootView.axaml.cs b/src/Artemis.UI/Screens/Root/RootView.axaml.cs index 23d822d48..98b9fbc14 100644 --- a/src/Artemis.UI/Screens/Root/RootView.axaml.cs +++ b/src/Artemis.UI/Screens/Root/RootView.axaml.cs @@ -18,7 +18,7 @@ public partial class RootView : ReactiveUserControl { try { - Dispatcher.UIThread.Invoke(() => RootFrame.NavigateFromObject(viewModel)); + // Dispatcher.UIThread.Invoke(() => RootFrame.NavigateFromObject(viewModel)); } catch (Exception) { diff --git a/src/Artemis.VisualScripting/Artemis.VisualScripting.csproj b/src/Artemis.VisualScripting/Artemis.VisualScripting.csproj index c0e7a1bec..9a7e1bdbb 100644 --- a/src/Artemis.VisualScripting/Artemis.VisualScripting.csproj +++ b/src/Artemis.VisualScripting/Artemis.VisualScripting.csproj @@ -8,8 +8,8 @@ - - + + From af1920141c86380e7e66806b121b60dd8fa5a7e4 Mon Sep 17 00:00:00 2001 From: Robert Date: Sun, 9 Jul 2023 08:29:54 +0200 Subject: [PATCH 2/3] Device visualizer - Clear device cache on UI thread on property change Surface editor - Don't quietly fail device updates --- src/Artemis.UI.Shared/Controls/DeviceVisualizer.cs | 9 ++++++--- .../Screens/SurfaceEditor/SurfaceEditorViewModel.cs | 4 ++++ 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Artemis.UI.Shared/Controls/DeviceVisualizer.cs b/src/Artemis.UI.Shared/Controls/DeviceVisualizer.cs index 2b16bb769..6908fadd3 100644 --- a/src/Artemis.UI.Shared/Controls/DeviceVisualizer.cs +++ b/src/Artemis.UI.Shared/Controls/DeviceVisualizer.cs @@ -197,9 +197,12 @@ public class DeviceVisualizer : Control private void DevicePropertyChanged(object? sender, PropertyChangedEventArgs e) { - if (Device != null) - BitmapCache.Remove(Device); - Dispatcher.UIThread.Invoke(SetupForDevice, DispatcherPriority.Background); + Dispatcher.UIThread.Invoke(async () => + { + if (Device != null) + BitmapCache.Remove(Device); + await SetupForDevice(); + }, DispatcherPriority.Background); } private void DeviceUpdated(object? sender, EventArgs e) diff --git a/src/Artemis.UI/Screens/SurfaceEditor/SurfaceEditorViewModel.cs b/src/Artemis.UI/Screens/SurfaceEditor/SurfaceEditorViewModel.cs index e68d8e13a..a6e28ea39 100644 --- a/src/Artemis.UI/Screens/SurfaceEditor/SurfaceEditorViewModel.cs +++ b/src/Artemis.UI/Screens/SurfaceEditor/SurfaceEditorViewModel.cs @@ -136,6 +136,10 @@ public class SurfaceEditorViewModel : ActivatableViewModelBase, IMainScreenViewM _saving = true; _rgbService.SaveDevices(); } + catch (Exception e) + { + _windowService.ShowExceptionDialog("Failed to update device positions", e); + } finally { _saving = false; From b298900ed233177a43b90b14a8c046a61892fe8b Mon Sep 17 00:00:00 2001 From: Robert Date: Fri, 14 Jul 2023 10:31:40 +0200 Subject: [PATCH 3/3] Upgrade Avalonia and FluentAvalonia, use a props file to sync versions --- src/Artemis.Core/Artemis.Core.csproj | 10 ++++--- src/Artemis.Storage/Artemis.Storage.csproj | 2 ++ src/Artemis.UI.Linux/Artemis.UI.Linux.csproj | 10 ++++--- src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj | 10 ++++--- .../Artemis.UI.Shared.csproj | 16 +++++++----- .../Artemis.UI.Windows.csproj | 14 +++++----- src/Artemis.UI/Artemis.UI.csproj | 26 +++++++++---------- .../VisualEditor/VisualEditorView.axaml.cs | 5 ---- src/Artemis.UI/Screens/Root/RootView.axaml.cs | 2 +- .../SurfaceEditor/SurfaceEditorView.axaml.cs | 5 ---- .../Artemis.VisualScripting.csproj | 9 ++++--- .../Artemis.WebClient.Updating.csproj | 1 + src/Artemis.props | 8 ++++++ src/Artemis.sln | 7 +++++ 14 files changed, 72 insertions(+), 53 deletions(-) create mode 100644 src/Artemis.props diff --git a/src/Artemis.Core/Artemis.Core.csproj b/src/Artemis.Core/Artemis.Core.csproj index 33d2a5382..772adf7d2 100644 --- a/src/Artemis.Core/Artemis.Core.csproj +++ b/src/Artemis.Core/Artemis.Core.csproj @@ -1,4 +1,6 @@  + + net7.0 false @@ -43,14 +45,14 @@ - - - + + + - + diff --git a/src/Artemis.Storage/Artemis.Storage.csproj b/src/Artemis.Storage/Artemis.Storage.csproj index 6ccd74e0d..fcb97b0c5 100644 --- a/src/Artemis.Storage/Artemis.Storage.csproj +++ b/src/Artemis.Storage/Artemis.Storage.csproj @@ -1,4 +1,6 @@  + + net7.0 false diff --git a/src/Artemis.UI.Linux/Artemis.UI.Linux.csproj b/src/Artemis.UI.Linux/Artemis.UI.Linux.csproj index a38c1b34c..cb282136f 100644 --- a/src/Artemis.UI.Linux/Artemis.UI.Linux.csproj +++ b/src/Artemis.UI.Linux/Artemis.UI.Linux.csproj @@ -1,4 +1,6 @@ + + WinExe net7.0 @@ -16,11 +18,11 @@ - - + + - - + + diff --git a/src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj b/src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj index 72a221df4..57649624f 100644 --- a/src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj +++ b/src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj @@ -1,4 +1,6 @@  + + WinExe net7.0 @@ -15,11 +17,11 @@ - - + + - - + + diff --git a/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj b/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj index 824cd9624..15b723fd5 100644 --- a/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj +++ b/src/Artemis.UI.Shared/Artemis.UI.Shared.csproj @@ -1,4 +1,6 @@  + + Library net7.0 @@ -10,18 +12,18 @@ - + - - - + + + - + - - + + diff --git a/src/Artemis.UI.Windows/Artemis.UI.Windows.csproj b/src/Artemis.UI.Windows/Artemis.UI.Windows.csproj index 1b839e4bf..bd7210217 100644 --- a/src/Artemis.UI.Windows/Artemis.UI.Windows.csproj +++ b/src/Artemis.UI.Windows/Artemis.UI.Windows.csproj @@ -1,4 +1,6 @@ + + WinExe net7.0-windows10.0.17763.0 @@ -21,18 +23,18 @@ - - + + - - - + + + - + diff --git a/src/Artemis.UI/Artemis.UI.csproj b/src/Artemis.UI/Artemis.UI.csproj index e6294906e..02127d187 100644 --- a/src/Artemis.UI/Artemis.UI.csproj +++ b/src/Artemis.UI/Artemis.UI.csproj @@ -1,4 +1,6 @@ + + Library net7.0 @@ -15,28 +17,26 @@ - - - + + + - - - + + + - + - - + - - - + + + - diff --git a/src/Artemis.UI/Screens/ProfileEditor/Panels/VisualEditor/VisualEditorView.axaml.cs b/src/Artemis.UI/Screens/ProfileEditor/Panels/VisualEditor/VisualEditorView.axaml.cs index 87e7b3b2e..3fb88d5c5 100644 --- a/src/Artemis.UI/Screens/ProfileEditor/Panels/VisualEditor/VisualEditorView.axaml.cs +++ b/src/Artemis.UI/Screens/ProfileEditor/Panels/VisualEditor/VisualEditorView.axaml.cs @@ -63,12 +63,7 @@ public partial class VisualEditorView : ReactiveUserControl { try { - // Dispatcher.UIThread.Invoke(() => RootFrame.NavigateFromObject(viewModel)); + Dispatcher.UIThread.Invoke(() => RootFrame.NavigateFromObject(viewModel)); } catch (Exception) { diff --git a/src/Artemis.UI/Screens/SurfaceEditor/SurfaceEditorView.axaml.cs b/src/Artemis.UI/Screens/SurfaceEditor/SurfaceEditorView.axaml.cs index 73b747355..797cad4d5 100644 --- a/src/Artemis.UI/Screens/SurfaceEditor/SurfaceEditorView.axaml.cs +++ b/src/Artemis.UI/Screens/SurfaceEditor/SurfaceEditorView.axaml.cs @@ -48,11 +48,6 @@ public partial class SurfaceEditorView : ReactiveUserControl + net7.0 @@ -8,14 +9,14 @@ - - - + + + - + diff --git a/src/Artemis.WebClient.Updating/Artemis.WebClient.Updating.csproj b/src/Artemis.WebClient.Updating/Artemis.WebClient.Updating.csproj index c31da3c25..056aa9531 100644 --- a/src/Artemis.WebClient.Updating/Artemis.WebClient.Updating.csproj +++ b/src/Artemis.WebClient.Updating/Artemis.WebClient.Updating.csproj @@ -1,4 +1,5 @@ + net7.0 diff --git a/src/Artemis.props b/src/Artemis.props new file mode 100644 index 000000000..121967a89 --- /dev/null +++ b/src/Artemis.props @@ -0,0 +1,8 @@ + + + 11.0.0 + 2.0.0 + 2.0.0-prerelease.83 + 2.88.3 + + \ No newline at end of file diff --git a/src/Artemis.sln b/src/Artemis.sln index 2e53b5d9a..1e74be560 100644 --- a/src/Artemis.sln +++ b/src/Artemis.sln @@ -21,6 +21,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Artemis.VisualScripting", " EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Artemis.WebClient.Updating", "Artemis.WebClient.Updating\Artemis.WebClient.Updating.csproj", "{7C8C6F50-0CC8-45B3-B608-A7218C005E4B}" EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{44482312-142F-44A4-992C-0AF0F26BAE54}" + ProjectSection(SolutionItems) = preProject + Artemis.props = Artemis.props + Artemis.sln.DotSettings = Artemis.sln.DotSettings + Artemis.sln.DotSettings.user = Artemis.sln.DotSettings.user + EndProjectSection +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|x64 = Debug|x64