diff --git a/src/Artemis.UI/Screens/Plugins/Dialogs/PluginPrerequisitesInstallDialogView.axaml b/src/Artemis.UI/Screens/Plugins/Dialogs/PluginPrerequisitesInstallDialogView.axaml
index efa8af53e..6961ac1be 100644
--- a/src/Artemis.UI/Screens/Plugins/Dialogs/PluginPrerequisitesInstallDialogView.axaml
+++ b/src/Artemis.UI/Screens/Plugins/Dialogs/PluginPrerequisitesInstallDialogView.axaml
@@ -7,7 +7,8 @@
xmlns:prerequisites="clr-namespace:Artemis.UI.Screens.Plugins.Prerequisites"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.Screens.Plugins.PluginPrerequisitesInstallDialogView"
- x:DataType="plugins:PluginPrerequisitesInstallDialogViewModel">
+ x:DataType="plugins:PluginPrerequisitesInstallDialogViewModel"
+ Width="800">
-
+
diff --git a/src/Artemis.UI/Screens/Plugins/Dialogs/PluginPrerequisitesUninstallDialogView.axaml b/src/Artemis.UI/Screens/Plugins/Dialogs/PluginPrerequisitesUninstallDialogView.axaml
index 3ba9bec0c..6d3cfcd84 100644
--- a/src/Artemis.UI/Screens/Plugins/Dialogs/PluginPrerequisitesUninstallDialogView.axaml
+++ b/src/Artemis.UI/Screens/Plugins/Dialogs/PluginPrerequisitesUninstallDialogView.axaml
@@ -7,7 +7,8 @@
xmlns:prerequisites="clr-namespace:Artemis.UI.Screens.Plugins.Prerequisites"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.Screens.Plugins.PluginPrerequisitesUninstallDialogView"
- x:DataType="plugins:PluginPrerequisitesUninstallDialogViewModel">
+ x:DataType="plugins:PluginPrerequisitesUninstallDialogViewModel"
+ Width="800">
-
+
diff --git a/src/Artemis.UI/Screens/StartupWizard/StartupWizardView.axaml b/src/Artemis.UI/Screens/StartupWizard/StartupWizardView.axaml
index 67286303f..c83c28447 100644
--- a/src/Artemis.UI/Screens/StartupWizard/StartupWizardView.axaml
+++ b/src/Artemis.UI/Screens/StartupWizard/StartupWizardView.axaml
@@ -11,7 +11,7 @@
x:DataType="startupWizard:StartupWizardViewModel"
Icon="/Assets/Images/Logo/application.ico"
Title="Artemis | Startup wizard"
- Width="1000"
+ Width="1050"
Height="735"
WindowStartupLocation="CenterOwner">
diff --git a/src/Artemis.UI/Screens/StartupWizard/Steps/DefaultEntriesStepView.axaml b/src/Artemis.UI/Screens/StartupWizard/Steps/DefaultEntriesStepView.axaml
index 7133784ca..55ef5da1b 100644
--- a/src/Artemis.UI/Screens/StartupWizard/Steps/DefaultEntriesStepView.axaml
+++ b/src/Artemis.UI/Screens/StartupWizard/Steps/DefaultEntriesStepView.axaml
@@ -6,53 +6,61 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.Screens.StartupWizard.Steps.DefaultEntriesStepView"
x:DataType="steps:DefaultEntriesStepViewModel">
-
-
-
-
-
- Below is a list of default features that can be installed to get you started with Artemis. You can always install or uninstall features later via the Workshop.
-
+
+
+
+
+ Below is a list of default features that can be installed to get you started with Artemis. You can always install or uninstall features later via the Workshop.
+
-
- Device providers
-
-
-
-
-
-
-
-
+
-
- Essentials
-
-
-
-
-
-
-
-
+
+
+
+ Device providers
+
+
+
+
+
+
+
+
-
- Other features
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+ Essentials
+
+
+
+
+
+
+
+
+
+
+ Other features
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Currently installing
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Artemis.UI/Screens/StartupWizard/Steps/DefaultEntriesStepViewModel.cs b/src/Artemis.UI/Screens/StartupWizard/Steps/DefaultEntriesStepViewModel.cs
index 1d0224a5f..073a797ad 100644
--- a/src/Artemis.UI/Screens/StartupWizard/Steps/DefaultEntriesStepViewModel.cs
+++ b/src/Artemis.UI/Screens/StartupWizard/Steps/DefaultEntriesStepViewModel.cs
@@ -20,10 +20,11 @@ public partial class DefaultEntriesStepViewModel : WizardStepViewModel
{
[Notify] private bool _workshopReachable;
[Notify] private bool _fetchingDefaultEntries;
- [Notify] private bool _installed;
- [Notify] private int _currentEntries;
+ [Notify] private int _installedEntries;
[Notify] private int _totalEntries = 1;
+ [Notify] private DefaultEntryItemViewModel? _currentEntry;
+ private readonly IDeviceService _deviceService;
private readonly IWorkshopClient _client;
private readonly Func _getDefaultEntryItemViewModel;
@@ -34,24 +35,17 @@ public partial class DefaultEntriesStepViewModel : WizardStepViewModel
public DefaultEntriesStepViewModel(IWorkshopService workshopService, IDeviceService deviceService, IWorkshopClient client,
Func getDefaultEntryItemViewModel)
{
+ _deviceService = deviceService;
_client = client;
_getDefaultEntryItemViewModel = getDefaultEntryItemViewModel;
ContinueText = "Install selected entries";
Continue = ReactiveCommand.CreateFromTask(async ct =>
- {
- if (Installed)
- Wizard.ChangeScreen();
- else
- await Install(ct);
- });
- GoBack = ReactiveCommand.Create(() =>
- {
- if (deviceService.EnabledDevices.Count == 0)
- Wizard.ChangeScreen();
- else
- Wizard.ChangeScreen();
+ {
+ await Install(ct);
+ ExecuteContinue();
});
+ GoBack = ReactiveCommand.Create(() => Wizard.ChangeScreen());
this.WhenActivatedAsync(async d =>
{
@@ -63,41 +57,40 @@ public partial class DefaultEntriesStepViewModel : WizardStepViewModel
});
}
- private async Task Install(CancellationToken cancellationToken)
+ private void ExecuteContinue()
{
- // Remove entries that aren't to be installed
- RemoveUnselectedEntries(DeviceProviderEntryViewModels);
- RemoveUnselectedEntries(EssentialEntryViewModels);
- RemoveUnselectedEntries(OtherEntryViewModels);
-
- TotalEntries = DeviceProviderEntryViewModels.Count + EssentialEntryViewModels.Count + OtherEntryViewModels.Count;
- CurrentEntries = 0;
-
- // Install entries one by one, removing them from the list as we go
- List entries = [..DeviceProviderEntryViewModels, ..EssentialEntryViewModels, ..OtherEntryViewModels];
- foreach (DefaultEntryItemViewModel defaultEntryItemViewModel in entries)
- {
- cancellationToken.ThrowIfCancellationRequested();
- bool removeFromList = await defaultEntryItemViewModel.InstallEntry(cancellationToken);
- if (!removeFromList)
- break;
-
- DeviceProviderEntryViewModels.Remove(defaultEntryItemViewModel);
- EssentialEntryViewModels.Remove(defaultEntryItemViewModel);
- OtherEntryViewModels.Remove(defaultEntryItemViewModel);
- CurrentEntries++;
- }
-
- Installed = true;
- ContinueText = "Continue";
+ // Without devices skip to the last step
+ if (_deviceService.EnabledDevices.Count == 0)
+ Wizard.ChangeScreen();
+ else
+ Wizard.ChangeScreen();
}
- private void RemoveUnselectedEntries(ObservableCollection entryViewModels)
+ private async Task Install(CancellationToken cancellationToken)
{
- List toRemove = entryViewModels.Where(e => !e.ShouldInstall).ToList();
- foreach (DefaultEntryItemViewModel defaultEntryItemViewModel in toRemove)
- entryViewModels.Remove(defaultEntryItemViewModel);
+ List entries =
+ [
+ ..DeviceProviderEntryViewModels.Where(e => e.ShouldInstall && !e.IsInstalled),
+ ..EssentialEntryViewModels.Where(e => e.ShouldInstall && !e.IsInstalled),
+ ..OtherEntryViewModels.Where(e => e.ShouldInstall && !e.IsInstalled)
+ ];
+ InstalledEntries = 0;
+ TotalEntries = entries.Count;
+ // Continue to the next screen if there are no entries to install
+ if (TotalEntries == 0)
+ return;
+
+ foreach (DefaultEntryItemViewModel defaultEntryItemViewModel in entries)
+ {
+ cancellationToken.ThrowIfCancellationRequested();
+ CurrentEntry = defaultEntryItemViewModel;
+ await defaultEntryItemViewModel.InstallEntry(cancellationToken);
+ InstalledEntries++;
+ }
+
+ await Task.Delay(1000, cancellationToken);
+ CurrentEntry = null;
}
private async Task GetDefaultEntries(CancellationToken cancellationToken)
@@ -126,7 +119,7 @@ public partial class DefaultEntriesStepViewModel : WizardStepViewModel
DefaultEntryItemViewModel viewModel = _getDefaultEntryItemViewModel(entry);
viewModel.ShouldInstall = entry.DefaultEntryInfo.IsEssential;
-
+
if (entry.DefaultEntryInfo.IsDeviceProvider)
DeviceProviderEntryViewModels.Add(viewModel);
else if (entry.DefaultEntryInfo.IsEssential)
diff --git a/src/Artemis.UI/Screens/StartupWizard/Steps/DefaultEntryItemViewModel.cs b/src/Artemis.UI/Screens/StartupWizard/Steps/DefaultEntryItemViewModel.cs
index 3568f3d08..56bba5d22 100644
--- a/src/Artemis.UI/Screens/StartupWizard/Steps/DefaultEntryItemViewModel.cs
+++ b/src/Artemis.UI/Screens/StartupWizard/Steps/DefaultEntryItemViewModel.cs
@@ -49,8 +49,8 @@ public partial class DefaultEntryItemViewModel : ActivatableViewModelBase
if (IsInstalled || !ShouldInstall || Entry.LatestRelease == null)
return true;
- // Most entries install so quick it looks broken without a small delay
- Task minimumDelay = Task.Delay(100, cancellationToken);
+ // Most entries install so fast it looks broken without a small delay
+ Task minimumDelay = Task.Delay(200, cancellationToken);
EntryInstallResult result = await _workshopService.InstallEntry(Entry, Entry.LatestRelease, _progress, cancellationToken);
await minimumDelay;
diff --git a/src/Artemis.UI/Screens/StartupWizard/Steps/DevicesStepView.axaml b/src/Artemis.UI/Screens/StartupWizard/Steps/DevicesStepView.axaml
deleted file mode 100644
index aaed17364..000000000
--- a/src/Artemis.UI/Screens/StartupWizard/Steps/DevicesStepView.axaml
+++ /dev/null
@@ -1,43 +0,0 @@
-
-
-
-
-
- Devices are supported through the use of device providers.
-
-
- In the list below you can enable device providers for each brand you own by checking "Enable feature".
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Note: To avoid possible instability it's recommended to disable the device providers of brands you don't own.
-
-
-
-
\ No newline at end of file
diff --git a/src/Artemis.UI/Screens/StartupWizard/Steps/DevicesStepView.axaml.cs b/src/Artemis.UI/Screens/StartupWizard/Steps/DevicesStepView.axaml.cs
deleted file mode 100644
index a2435a438..000000000
--- a/src/Artemis.UI/Screens/StartupWizard/Steps/DevicesStepView.axaml.cs
+++ /dev/null
@@ -1,14 +0,0 @@
-using Avalonia.Controls;
-using Avalonia.Markup.Xaml;
-using Avalonia.ReactiveUI;
-
-namespace Artemis.UI.Screens.StartupWizard.Steps;
-
-public partial class DevicesStepView : ReactiveUserControl
-{
- public DevicesStepView()
- {
- InitializeComponent();
- }
-
-}
\ No newline at end of file
diff --git a/src/Artemis.UI/Screens/StartupWizard/Steps/DevicesStepViewModel.cs b/src/Artemis.UI/Screens/StartupWizard/Steps/DevicesStepViewModel.cs
deleted file mode 100644
index 1a3e15768..000000000
--- a/src/Artemis.UI/Screens/StartupWizard/Steps/DevicesStepViewModel.cs
+++ /dev/null
@@ -1,33 +0,0 @@
-using ReactiveUI;
-using System;
-using System.Collections.ObjectModel;
-using System.Linq;
-using Artemis.Core;
-using Artemis.Core.DeviceProviders;
-using Artemis.Core.Services;
-
-namespace Artemis.UI.Screens.StartupWizard.Steps;
-
-public class DevicesStepViewModel : WizardStepViewModel
-{
- public DevicesStepViewModel(IPluginManagementService pluginManagementService, Func getPluginFeatureViewModel, IDeviceService deviceService)
- {
- // Take all compatible device providers and create a view model for them
- DeviceProviders = new ObservableCollection(pluginManagementService.GetAllPlugins()
- .Where(p => p.Info.IsCompatible)
- .SelectMany(p => p.Features.Where(f => f.FeatureType.IsAssignableTo(typeof(DeviceProvider))))
- .OrderBy(f => f.Name)
- .Select(getPluginFeatureViewModel));
-
- Continue = ReactiveCommand.Create(() =>
- {
- if (deviceService.EnabledDevices.Count == 0)
- Wizard.ChangeScreen();
- else
- Wizard.ChangeScreen();
- });
- GoBack = ReactiveCommand.Create(() => Wizard.ChangeScreen());
- }
-
- public ObservableCollection DeviceProviders { get; }
-}
\ No newline at end of file
diff --git a/src/Artemis.UI/Screens/StartupWizard/Steps/FinishStepView.axaml b/src/Artemis.UI/Screens/StartupWizard/Steps/FinishStepView.axaml
index 700d526ae..8adb1b5d6 100644
--- a/src/Artemis.UI/Screens/StartupWizard/Steps/FinishStepView.axaml
+++ b/src/Artemis.UI/Screens/StartupWizard/Steps/FinishStepView.axaml
@@ -2,52 +2,51 @@
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
- xmlns:startupWizard="clr-namespace:Artemis.UI.Screens.StartupWizard"
- xmlns:controls="clr-namespace:FluentAvalonia.UI.Controls;assembly=FluentAvalonia"
xmlns:steps="clr-namespace:Artemis.UI.Screens.StartupWizard.Steps"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.Screens.StartupWizard.Steps.FinishStepView"
x:DataType="steps:FinishStepViewModel">
-
-
- All finished!
+
+ All finished!
+
+
+
+ You are now ready to start using Artemis, enjoy! 😁
+
+
+ To learn more about Artemis and how to use it you may find these resources useful:
+
-
- You are now ready to start using Artemis, enjoy! 😁
-
-
- To learn more about Artemis and how to use it you may find these resources useful:
-
+
+
+
+
-
-
-
-
-
-
- Artemis wiki
- Getting started guide
- GitHub
- Discord
-
-
-
- https://wiki.artemis-rgb.com/
-
-
- https://wiki.artemis-rgb.com/en/guides/user/introduction
-
-
- https://github.com/Artemis-RGB/Artemis
-
-
- https://discord.gg/S3MVaC9
-
-
-
-
-
+
+ Artemis wiki
+ Getting started guide
+ GitHub
+ Discord
+
+
+
+ https://wiki.artemis-rgb.com/
+
+
+ https://wiki.artemis-rgb.com/en/guides/user/introduction
+
+
+ https://github.com/Artemis-RGB/Artemis
+
+
+ https://discord.gg/S3MVaC9
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Artemis.UI/Screens/StartupWizard/Steps/LayoutsStepView.axaml b/src/Artemis.UI/Screens/StartupWizard/Steps/LayoutsStepView.axaml
index 38a459eb6..58aec59d8 100644
--- a/src/Artemis.UI/Screens/StartupWizard/Steps/LayoutsStepView.axaml
+++ b/src/Artemis.UI/Screens/StartupWizard/Steps/LayoutsStepView.axaml
@@ -7,26 +7,25 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.Screens.StartupWizard.Steps.LayoutsStepView"
x:DataType="steps:LayoutsStepViewModel">
-
-
-
-
- Device layouts provide Artemis with an image of your devices and exact LED positions.
- While not strictly necessary, this helps to create effects that are perfectly aligned with your hardware.
-
-
- Below you can automatically search the Artemis Workshop for device layouts of your devices.
-
+
+
+ Device layouts provide Artemis with an image of your devices and exact LED positions.
+ While not strictly necessary, this helps to create effects that are perfectly aligned with your hardware.
+
+
+ Below you can automatically search the Artemis Workshop for device layouts of your devices.
+
+
+
+
+
+
+
-
-
-
-
-
-
-
+
+
\ No newline at end of file
diff --git a/src/Artemis.UI/Screens/StartupWizard/Steps/LayoutsStepViewModel.cs b/src/Artemis.UI/Screens/StartupWizard/Steps/LayoutsStepViewModel.cs
index bcf39fe38..5f0d0425d 100644
--- a/src/Artemis.UI/Screens/StartupWizard/Steps/LayoutsStepViewModel.cs
+++ b/src/Artemis.UI/Screens/StartupWizard/Steps/LayoutsStepViewModel.cs
@@ -10,7 +10,7 @@ public class LayoutsStepViewModel : WizardStepViewModel
LayoutFinderViewModel = layoutFinderViewModel;
Continue = ReactiveCommand.Create(() => Wizard.ChangeScreen());
- GoBack = ReactiveCommand.Create(() => Wizard.ChangeScreen());
+ GoBack = ReactiveCommand.Create(() => Wizard.ChangeScreen());
}
public LayoutFinderViewModel LayoutFinderViewModel { get; }
diff --git a/src/Artemis.UI/Screens/StartupWizard/Steps/SettingsStepView.axaml b/src/Artemis.UI/Screens/StartupWizard/Steps/SettingsStepView.axaml
index 091650d32..84cd3ebde 100644
--- a/src/Artemis.UI/Screens/StartupWizard/Steps/SettingsStepView.axaml
+++ b/src/Artemis.UI/Screens/StartupWizard/Steps/SettingsStepView.axaml
@@ -9,118 +9,116 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.Screens.StartupWizard.Steps.SettingsStepView"
x:DataType="steps:SettingsStepViewModel">
-
-
-
-
- Artemis comes with a variety of settings you can change to tweak everything to your liking.
+
+
+
+ Artemis comes with a variety of settings you can change to tweak everything to your liking.
+
+
+ Below you can find a few relevant settings, many more can be changed later on the settings page.
+
+
+
+
+
+ Auto-run
-
- Below you can find a few relevant settings, many more can be changed later on the settings page.
-
-
-
-
-
- Auto-run
-
-
-
-
-
-
- Auto-run on startup
-
-
-
-
-
-
-
- Hide window on auto-run
-
-
-
-
-
-
-
-
-
- Associate with Artemis links
-
- Open Artemis when navigating to artemis:// links, allows opening workshop entries from your browser.
-
-
-
-
-
-
-
-
-
-
- Startup delay
-
- Set the amount of seconds to wait before auto-running Artemis.
-
-
- If some devices don't work because Artemis starts before the manufacturer's software, try increasing this value.
-
-
-
-
-
-
-
-
- sec
-
-
-
-
-
-
-
-
-
-
- Updating
-
-
-
+
+
+
-
- Check for updates
-
-
- If enabled, we'll check for updates on startup and periodically while running.
-
+ Auto-run on startup
+
+
+
+
+
+
+
+ Hide window on auto-run
-
+
-
- Auto-install updates
-
+ Associate with Artemis links
- If enabled, new updates will automatically be installed.
+ Open Artemis when navigating to artemis:// links, allows opening workshop entries from your browser.
-
+
+
+
+
+
+
+
+ Startup delay
+
+ Set the amount of seconds to wait before auto-running Artemis.
+
+
+ If some devices don't work because Artemis starts before the manufacturer's software, try increasing this value.
+
+
+
+
+
+
+
+
+ sec
-
-
+
+
-
-
+
+
+
+
+ Updating
+
+
+
+
+
+
+ Check for updates
+
+
+ If enabled, we'll check for updates on startup and periodically while running.
+
+
+
+
+
+
+
+
+
+
+
+ Auto-install updates
+
+
+ If enabled, new updates will automatically be installed.
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Artemis.UI/Screens/StartupWizard/Steps/SettingsStepViewModel.cs b/src/Artemis.UI/Screens/StartupWizard/Steps/SettingsStepViewModel.cs
index db38edc29..598bcf9d6 100644
--- a/src/Artemis.UI/Screens/StartupWizard/Steps/SettingsStepViewModel.cs
+++ b/src/Artemis.UI/Screens/StartupWizard/Steps/SettingsStepViewModel.cs
@@ -37,8 +37,9 @@ public class SettingsStepViewModel : WizardStepViewModel
Continue = ReactiveCommand.Create(() => Wizard.ChangeScreen());
GoBack = ReactiveCommand.Create(() =>
{
+ // Without devices, skip to the default entries screen
if (deviceService.EnabledDevices.Count == 0)
- Wizard.ChangeScreen();
+ Wizard.ChangeScreen();
else
Wizard.ChangeScreen();
});
diff --git a/src/Artemis.UI/Screens/StartupWizard/Steps/SurfaceStepView.axaml b/src/Artemis.UI/Screens/StartupWizard/Steps/SurfaceStepView.axaml
index 8819c7437..da85cc135 100644
--- a/src/Artemis.UI/Screens/StartupWizard/Steps/SurfaceStepView.axaml
+++ b/src/Artemis.UI/Screens/StartupWizard/Steps/SurfaceStepView.axaml
@@ -8,18 +8,15 @@
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
x:Class="Artemis.UI.Screens.StartupWizard.Steps.SurfaceStepView"
x:DataType="steps:SurfaceStepViewModel">
-
-
-
-
- Artemis uses "spatial awareness" to create realistic effects across multiple devices.
-
-
- In order to do this correctly, we need to know where your devices are located on your desk. Select one of the two presets below, after the setup wizard finishes you can tweak this in detail in the surface editor.
-
-
-
+
+
+ Artemis uses "spatial awareness" to create realistic effects across multiple devices.
+
+
+ In order to do this correctly, we need to know where your devices are located on your desk. Select one of the two presets below, after the setup wizard finishes you can tweak this in detail in the surface editor.
+
+