Plugins - Added optional configuration window

Plugins - Moved plugins to their own directory
Device providers - Added all RGB.NET device providers
This commit is contained in:
Robert committed 2020-02-27 19:05:35 +01:00
1 parent 13943f86a7
commit 9b62ba5f3d
752 files changed
+2198 -73

No files matched your search

@@ -1,23 +1,46 @@
using System;
using System.Threading.Tasks;
using Artemis.Core.Plugins.Abstract;
using Artemis.UI.Shared.Services.Interfaces;
using Stylet;
namespace Artemis.UI.Screens.Settings.Tabs.Plugins
{
public class PluginSettingsViewModel : PropertyChangedBase
{
private readonly IDialogService _dialogService;
private readonly Plugin _plugin;
private readonly IWindowManager _windowManager;
public PluginSettingsViewModel(Plugin plugin)
public PluginSettingsViewModel(Plugin plugin, IWindowManager windowManager, IDialogService dialogService)
{
_plugin = plugin;
_windowManager = windowManager;
_dialogService = dialogService;
IsEnabled = true;
}
public string Type => _plugin.GetType().BaseType?.Name ?? _plugin.GetType().Name;
public string Name => _plugin.PluginInfo.Name;
public string Description => "N.Y.I.";
public string Description => _plugin.PluginInfo.Description;
public Version Version => _plugin.PluginInfo.Version;
public bool IsEnabled { get; set; }
public bool CanOpenSettings => IsEnabled && _plugin.HasConfigurationViewModel;
public async Task OpenSettings()
{
try
{
var configurationViewModel = _plugin.GetConfigurationViewModel();
if (configurationViewModel != null)
_windowManager.ShowDialog(new PluginSettingsWindowViewModel(configurationViewModel));
}
catch (Exception e)
{
await _dialogService.ShowExceptionDialog("An exception occured while trying to show the plugin's settings window", e);
throw;
}
}
}
}
@@ -0,0 +1,23 @@
<controls:MaterialWindow x:Class="Artemis.UI.Screens.Settings.Tabs.Plugins.PluginSettingsWindowView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
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:local="clr-namespace:Artemis.UI.Screens.Settings.Tabs.Plugins"
xmlns:controls="clr-namespace:MaterialDesignExtensions.Controls;assembly=MaterialDesignExtensions"
xmlns:s="https://github.com/canton7/Stylet"
mc:Ignorable="d"
Title="{Binding Title}"
Background="{DynamicResource MaterialDesignPaper}"
FontFamily="pack://application:,,,/MaterialDesignThemes.Wpf;component/Resources/Roboto/#Roboto"
UseLayoutRounding="True"
Width="800"
Height="800"
d:DesignHeight="800"
d:DesignWidth="800"
d:DataContext="{d:DesignInstance local:PluginSettingsWindowViewModel}"
Icon="/Resources/Images/Logo/logo-512.png">
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<ContentControl s:View.Model="{Binding ActiveItem}"/>
</ScrollViewer>
</controls:MaterialWindow>
@@ -0,0 +1,15 @@
using Artemis.Core.Plugins.Abstract.ViewModels;
using Stylet;
namespace Artemis.UI.Screens.Settings.Tabs.Plugins
{
public class PluginSettingsWindowViewModel : Conductor<PluginConfigurationViewModel>
{
public PluginSettingsWindowViewModel(PluginConfigurationViewModel configurationViewModel)
{
ActiveItem = configurationViewModel;
}
public string Title => "Plugin configuration - " + ActiveItem?.Plugin?.PluginInfo?.Name;
}
}