diff --git a/src/Artemis.Core/Artemis.Core.csproj.DotSettings b/src/Artemis.Core/Artemis.Core.csproj.DotSettings
index 13a2166e3..a18836e5e 100644
--- a/src/Artemis.Core/Artemis.Core.csproj.DotSettings
+++ b/src/Artemis.Core/Artemis.Core.csproj.DotSettings
@@ -67,6 +67,7 @@
True
True
True
+ True
True
True
True
diff --git a/src/Artemis.Core/Providers/Interfaces/IGraphicsContextProvider.cs b/src/Artemis.Core/Providers/Interfaces/IGraphicsContextProvider.cs
new file mode 100644
index 000000000..6173cd599
--- /dev/null
+++ b/src/Artemis.Core/Providers/Interfaces/IGraphicsContextProvider.cs
@@ -0,0 +1,23 @@
+using Artemis.Core.SkiaSharp;
+
+namespace Artemis.Core.Providers;
+
+///
+/// Represents a class that can provide one or more graphics instances by name.
+///
+public interface IGraphicsContextProvider
+{
+ ///
+ /// Gets the name of the graphics context.
+ ///
+ string GraphicsContextName { get; }
+
+ ///
+ /// Creates an instance of the managed graphics context this provider provides.
+ ///
+ ///
+ /// An instance of the resulting managed graphics context if successfully created; otherwise
+ /// .
+ ///
+ IManagedGraphicsContext? GetGraphicsContext();
+}
\ No newline at end of file
diff --git a/src/Artemis.Core/Services/Interfaces/IGraphicsContextProvider.cs b/src/Artemis.Core/Services/Interfaces/IGraphicsContextProvider.cs
deleted file mode 100644
index 88a7dd917..000000000
--- a/src/Artemis.Core/Services/Interfaces/IGraphicsContextProvider.cs
+++ /dev/null
@@ -1,22 +0,0 @@
-using System.Collections.Generic;
-using Artemis.Core.SkiaSharp;
-
-namespace Artemis.Core.Services;
-
-///
-/// Represents a class that can provide one or more graphics instances by name.
-///
-public interface IGraphicsContextProvider
-{
- ///
- /// Gets a read only collection containing the names of all the graphics contexts supported by this provider.
- ///
- IReadOnlyCollection GraphicsContextNames { get; }
-
- ///
- /// Gets a managed graphics context by name.
- ///
- /// The name of the graphics context.
- /// If found, an instance of the managed graphics context with the given ; otherwise .
- IManagedGraphicsContext? GetGraphicsContext(string name);
-}
\ No newline at end of file
diff --git a/src/Artemis.Core/Services/RgbService.cs b/src/Artemis.Core/Services/RgbService.cs
index d8af2526b..d671a0537 100644
--- a/src/Artemis.Core/Services/RgbService.cs
+++ b/src/Artemis.Core/Services/RgbService.cs
@@ -4,6 +4,7 @@ using System.Collections.ObjectModel;
using System.Linq;
using System.Threading;
using Artemis.Core.DeviceProviders;
+using Artemis.Core.Providers;
using Artemis.Core.Services.Models;
using Artemis.Core.SkiaSharp;
using Artemis.Storage.Entities.Surface;
@@ -363,15 +364,15 @@ namespace Artemis.Core.Services
return;
}
- IGraphicsContextProvider? provider = _kernel.TryGet();
- if (provider == null)
+ List providers = _kernel.Get>();
+ if (!providers.Any())
{
_logger.Warning("No graphics context provider found, defaulting to software rendering");
UpdateGraphicsContext(null);
return;
}
- IManagedGraphicsContext? context = provider.GetGraphicsContext(_preferredGraphicsContext.Value);
+ IManagedGraphicsContext? context = providers.FirstOrDefault(p => p.GraphicsContextName == _preferredGraphicsContext.Value)?.GetGraphicsContext();
if (context == null)
{
_logger.Warning("No graphics context named '{Context}' found, defaulting to software rendering", _preferredGraphicsContext.Value);
diff --git a/src/Artemis.UI.Linux/Artemis.UI.Linux.csproj b/src/Artemis.UI.Linux/Artemis.UI.Linux.csproj
index 285bbd78d..ecf05251d 100644
--- a/src/Artemis.UI.Linux/Artemis.UI.Linux.csproj
+++ b/src/Artemis.UI.Linux/Artemis.UI.Linux.csproj
@@ -5,21 +5,24 @@
enable
x64
x64
+ bin
+ False
+ Artemis 2
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
\ No newline at end of file
diff --git a/src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj b/src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj
index 285bbd78d..ecf05251d 100644
--- a/src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj
+++ b/src/Artemis.UI.MacOS/Artemis.UI.MacOS.csproj
@@ -5,21 +5,24 @@
enable
x64
x64
+ bin
+ False
+ Artemis 2
-
-
+
+
-
-
+
+
-
-
-
+
+
+
-
-
+
+
\ No newline at end of file
diff --git a/src/Artemis.UI.Shared/Providers/IAutoRunProvider.cs b/src/Artemis.UI.Shared/Providers/IAutoRunProvider.cs
new file mode 100644
index 000000000..a648b4a2b
--- /dev/null
+++ b/src/Artemis.UI.Shared/Providers/IAutoRunProvider.cs
@@ -0,0 +1,21 @@
+using System.Threading.Tasks;
+
+namespace Artemis.UI.Shared.Providers;
+
+///
+/// Represents a provider for custom cursors.
+///
+public interface IAutoRunProvider
+{
+ ///
+ /// Asynchronously enables auto-run.
+ ///
+ /// A boolean indicating whether the auto-run configuration should be recreated (the auto run delay changed)
+ /// The delay in seconds before the application should start (if supported)
+ Task EnableAutoRun(bool recreate, int autoRunDelay);
+
+ ///
+ /// Asynchronously disables auto-run.
+ ///
+ Task DisableAutoRun();
+}
\ No newline at end of file
diff --git a/src/Artemis.UI.Shared/Providers/IUpdateProvider.cs b/src/Artemis.UI.Shared/Providers/IUpdateProvider.cs
new file mode 100644
index 000000000..1ec987c28
--- /dev/null
+++ b/src/Artemis.UI.Shared/Providers/IUpdateProvider.cs
@@ -0,0 +1,31 @@
+using System.Threading.Tasks;
+
+namespace Artemis.UI.Shared.Providers;
+
+///
+/// Represents a provider for custom cursors.
+///
+public interface IUpdateProvider
+{
+ ///
+ /// Asynchronously checks whether an update is available.
+ ///
+ /// The channel to use when checking updates (i.e. master or development)
+ /// A task returning if an update is available; otherwise .
+ Task CheckForUpdate(string channel);
+
+ ///
+ /// Applies any available updates.
+ ///
+ /// The channel to use when checking updates (i.e. master or development)
+ /// Whether or not to update silently.
+ Task ApplyUpdate(string channel, bool silent);
+
+ ///
+ /// Offer to install the update to the user.
+ ///
+ /// The channel to use when checking updates (i.e. master or development)
+ /// A boolean indicating whether the main window is open.
+ /// A task returning if the user chose to update; otherwise .
+ Task OfferUpdate(string channel, bool windowOpen);
+}
\ No newline at end of file
diff --git a/src/Artemis.UI.Shared/Services/Window/ExceptionDialogView.axaml b/src/Artemis.UI.Shared/Services/Window/ExceptionDialogView.axaml
index a1979dfdb..c4c3c9350 100644
--- a/src/Artemis.UI.Shared/Services/Window/ExceptionDialogView.axaml
+++ b/src/Artemis.UI.Shared/Services/Window/ExceptionDialogView.axaml
@@ -4,7 +4,6 @@
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="800"
x:Class="Artemis.UI.Shared.Services.ExceptionDialogView"
- Icon="/Assets/Images/Logo/application.ico"
Title="{Binding Title}"
ExtendClientAreaToDecorationsHint="True"
Width="800"
diff --git a/src/Artemis.UI.Windows/App.axaml.cs b/src/Artemis.UI.Windows/App.axaml.cs
index 1f2e213d2..46e09a283 100644
--- a/src/Artemis.UI.Windows/App.axaml.cs
+++ b/src/Artemis.UI.Windows/App.axaml.cs
@@ -1,5 +1,6 @@
using Artemis.Core.Services;
using Artemis.UI.Windows.Ninject;
+using Artemis.UI.Windows.Providers;
using Artemis.UI.Windows.Providers.Input;
using Avalonia;
using Avalonia.Controls;
diff --git a/src/Artemis.UI.Windows/Artemis.UI.Windows.csproj b/src/Artemis.UI.Windows/Artemis.UI.Windows.csproj
index abf8d3029..050ed0025 100644
--- a/src/Artemis.UI.Windows/Artemis.UI.Windows.csproj
+++ b/src/Artemis.UI.Windows/Artemis.UI.Windows.csproj
@@ -1,42 +1,52 @@
WinExe
- net6.0-windows
+ net6.0-windows10.0.17763.0
enable
x64
x64
+ bin
+ False
+ Artemis RGB
+ Artemis 2.0
+ ..\Artemis.UI\Assets\Images\Logo\application.ico
+ Artemis 2
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ application.ico
+
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
-
-
+
+
diff --git a/src/Artemis.UI.Windows/Assets/autorun.xml b/src/Artemis.UI.Windows/Assets/autorun.xml
new file mode 100644
index 000000000..e31980c8b
Binary files /dev/null and b/src/Artemis.UI.Windows/Assets/autorun.xml differ
diff --git a/src/Artemis.UI.Windows/Assets/avalonia-logo.ico b/src/Artemis.UI.Windows/Assets/avalonia-logo.ico
deleted file mode 100644
index da8d49ff9..000000000
Binary files a/src/Artemis.UI.Windows/Assets/avalonia-logo.ico and /dev/null differ
diff --git a/src/Artemis.UI.Windows/Models/DevOpsBuilds.cs b/src/Artemis.UI.Windows/Models/DevOpsBuilds.cs
new file mode 100644
index 000000000..8c48f7574
--- /dev/null
+++ b/src/Artemis.UI.Windows/Models/DevOpsBuilds.cs
@@ -0,0 +1,279 @@
+#nullable disable
+
+using System;
+using System.Collections.Generic;
+using Newtonsoft.Json;
+
+namespace Artemis.UI.Windows.Models
+{
+ public class DevOpsBuilds
+ {
+ [JsonProperty("count")]
+ public long Count { get; set; }
+
+ [JsonProperty("value")]
+ public List Builds { get; set; }
+ }
+
+ public class DevOpsBuild
+ {
+ [JsonProperty("_links")]
+ public BuildLinks Links { get; set; }
+
+ [JsonProperty("properties")]
+ public Properties Properties { get; set; }
+
+ [JsonProperty("tags")]
+ public List