mirror of
https://github.com/Artemis-RGB/Artemis
synced 2026-11-12 11:56:30 +00:00
Plugins - Reworked most of the activation logic
This commit is contained in:
1 parent
1e0dc1894d
commit
b56966c585
34 files changed
+509
-362
No files matched your search
@@ -13,7 +13,7 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs
|
||||
public class DataModelDebugViewModel : Screen
|
||||
{
|
||||
private readonly IDataModelUIService _dataModelUIService;
|
||||
private readonly IPluginService _pluginService;
|
||||
private readonly IPluginManagementService _pluginManagementService;
|
||||
private readonly Timer _updateTimer;
|
||||
private bool _isModuleFilterEnabled;
|
||||
private DataModelPropertiesViewModel _mainDataModel;
|
||||
@@ -21,10 +21,10 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs
|
||||
private string _propertySearch;
|
||||
private Module _selectedModule;
|
||||
|
||||
public DataModelDebugViewModel(IDataModelUIService dataModelUIService, IPluginService pluginService)
|
||||
public DataModelDebugViewModel(IDataModelUIService dataModelUIService, IPluginManagementService pluginManagementService)
|
||||
{
|
||||
_dataModelUIService = dataModelUIService;
|
||||
_pluginService = pluginService;
|
||||
_pluginManagementService = pluginManagementService;
|
||||
_updateTimer = new Timer(500);
|
||||
|
||||
DisplayName = "Data model";
|
||||
@@ -77,8 +77,8 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs
|
||||
GetDataModel();
|
||||
_updateTimer.Start();
|
||||
_updateTimer.Elapsed += OnUpdateTimerOnElapsed;
|
||||
_pluginService.PluginEnabled += PluginServiceOnPluginToggled;
|
||||
_pluginService.PluginDisabled += PluginServiceOnPluginToggled;
|
||||
_pluginManagementService.PluginEnabled += PluginManagementServiceOnPluginManagementToggled;
|
||||
_pluginManagementService.PluginDisabled += PluginManagementServiceOnPluginManagementToggled;
|
||||
|
||||
PopulateModules();
|
||||
|
||||
@@ -89,8 +89,8 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs
|
||||
{
|
||||
_updateTimer.Stop();
|
||||
_updateTimer.Elapsed -= OnUpdateTimerOnElapsed;
|
||||
_pluginService.PluginEnabled -= PluginServiceOnPluginToggled;
|
||||
_pluginService.PluginDisabled -= PluginServiceOnPluginToggled;
|
||||
_pluginManagementService.PluginEnabled -= PluginManagementServiceOnPluginManagementToggled;
|
||||
_pluginManagementService.PluginDisabled -= PluginManagementServiceOnPluginManagementToggled;
|
||||
|
||||
base.OnDeactivate();
|
||||
}
|
||||
@@ -110,14 +110,14 @@ namespace Artemis.UI.Screens.Settings.Debug.Tabs
|
||||
: _dataModelUIService.GetMainDataModelVisualization();
|
||||
}
|
||||
|
||||
private void PluginServiceOnPluginToggled(object? sender, PluginEventArgs e)
|
||||
private void PluginManagementServiceOnPluginManagementToggled(object? sender, PluginEventArgs e)
|
||||
{
|
||||
PopulateModules();
|
||||
}
|
||||
|
||||
private void PopulateModules()
|
||||
{
|
||||
Modules = _pluginService.GetPluginsOfType<Module>().Where(p => p.IsEnabled).ToList();
|
||||
Modules = _pluginManagementService.GetPluginsOfType<Module>().Where(p => p.IsEnabled).ToList();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -25,7 +25,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.General
|
||||
private List<Tuple<string, int>> _targetFrameRates;
|
||||
private readonly PluginSetting<LayerBrushReference> _defaultLayerBrushDescriptor;
|
||||
|
||||
public GeneralSettingsTabViewModel(IDialogService dialogService, IDebugService debugService, ISettingsService settingsService, IPluginService pluginService)
|
||||
public GeneralSettingsTabViewModel(IDialogService dialogService, IDebugService debugService, ISettingsService settingsService, IPluginManagementService pluginManagementService)
|
||||
{
|
||||
DisplayName = "GENERAL";
|
||||
|
||||
@@ -46,7 +46,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.General
|
||||
// Anything else is kinda broken right now
|
||||
SampleSizes = new List<int> {1, 9};
|
||||
|
||||
List<LayerBrushProvider> layerBrushProviders = pluginService.GetPluginsOfType<LayerBrushProvider>();
|
||||
List<LayerBrushProvider> layerBrushProviders = pluginManagementService.GetPluginsOfType<LayerBrushProvider>();
|
||||
|
||||
LayerBrushDescriptors = new BindableCollection<LayerBrushDescriptor>(layerBrushProviders.SelectMany(l => l.LayerBrushDescriptors));
|
||||
_defaultLayerBrushDescriptor = _settingsService.GetSetting("ProfileEditor.DefaultLayerBrushDescriptor", new LayerBrushReference
|
||||
|
||||
@@ -10,17 +10,17 @@ namespace Artemis.UI.Screens.Settings.Tabs.Modules
|
||||
public class ModuleOrderTabViewModel : Screen, IDropTarget
|
||||
{
|
||||
private readonly IModuleService _moduleService;
|
||||
private readonly IPluginService _pluginService;
|
||||
private readonly IPluginManagementService _pluginManagementService;
|
||||
private readonly DefaultDropHandler _defaultDropHandler;
|
||||
private readonly List<ModuleOrderModuleViewModel> _modules;
|
||||
|
||||
public ModuleOrderTabViewModel(IPluginService pluginService, IModuleService moduleService)
|
||||
public ModuleOrderTabViewModel(IPluginManagementService pluginManagementService, IModuleService moduleService)
|
||||
{
|
||||
DisplayName = "MODULE PRIORITY";
|
||||
|
||||
_pluginService = pluginService;
|
||||
_pluginManagementService = pluginManagementService;
|
||||
_moduleService = moduleService;
|
||||
_modules = new List<ModuleOrderModuleViewModel>(pluginService.GetPluginsOfType<Module>().Select(m => new ModuleOrderModuleViewModel(m)));
|
||||
_modules = new List<ModuleOrderModuleViewModel>(pluginManagementService.GetPluginsOfType<Module>().Select(m => new ModuleOrderModuleViewModel(m)));
|
||||
_defaultDropHandler = new DefaultDropHandler();
|
||||
|
||||
NormalModules = new BindableCollection<ModuleOrderModuleViewModel>();
|
||||
|
||||
@@ -9,15 +9,15 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
||||
{
|
||||
public class PluginSettingsTabViewModel : Conductor<PluginSettingsViewModel>.Collection.AllActive
|
||||
{
|
||||
private readonly IPluginService _pluginService;
|
||||
private readonly IPluginManagementService _pluginManagementService;
|
||||
private readonly ISettingsVmFactory _settingsVmFactory;
|
||||
private BindableCollection<PluginSettingsViewModel> _plugins;
|
||||
|
||||
public PluginSettingsTabViewModel(IPluginService pluginService, ISettingsVmFactory settingsVmFactory)
|
||||
public PluginSettingsTabViewModel(IPluginManagementService pluginManagementService, ISettingsVmFactory settingsVmFactory)
|
||||
{
|
||||
DisplayName = "PLUGINS";
|
||||
|
||||
_pluginService = pluginService;
|
||||
_pluginManagementService = pluginManagementService;
|
||||
_settingsVmFactory = settingsVmFactory;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
||||
Items.Clear();
|
||||
await Task.Delay(200);
|
||||
|
||||
List<PluginSettingsViewModel> instances = _pluginService.GetAllPluginInfo().Select(p => _settingsVmFactory.CreatePluginSettingsViewModel(p.Instance)).ToList();
|
||||
List<PluginSettingsViewModel> instances = _pluginManagementService.GetAllPluginInfo().Select(p => _settingsVmFactory.CreatePluginSettingsViewModel(p.Plugin)).ToList();
|
||||
foreach (PluginSettingsViewModel pluginSettingsViewModel in instances)
|
||||
Items.Add(pluginSettingsViewModel);
|
||||
});
|
||||
|
||||
@@ -26,7 +26,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
||||
{
|
||||
private readonly IDialogService _dialogService;
|
||||
private readonly ILogger _logger;
|
||||
private readonly IPluginService _pluginService;
|
||||
private readonly IPluginManagementService _pluginManagementService;
|
||||
private readonly ISnackbarMessageQueue _snackbarMessageQueue;
|
||||
private readonly IWindowManager _windowManager;
|
||||
private bool _enabling;
|
||||
@@ -37,7 +37,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
||||
ILogger logger,
|
||||
IWindowManager windowManager,
|
||||
IDialogService dialogService,
|
||||
IPluginService pluginService,
|
||||
IPluginManagementService pluginManagementService,
|
||||
ISnackbarMessageQueue snackbarMessageQueue)
|
||||
{
|
||||
PluginImplementation = pluginImplementation;
|
||||
@@ -46,7 +46,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
||||
_logger = logger;
|
||||
_windowManager = windowManager;
|
||||
_dialogService = dialogService;
|
||||
_pluginService = pluginService;
|
||||
_pluginManagementService = pluginManagementService;
|
||||
_snackbarMessageQueue = snackbarMessageQueue;
|
||||
}
|
||||
|
||||
@@ -183,7 +183,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
||||
|
||||
try
|
||||
{
|
||||
_pluginService.EnablePlugin(PluginImplementation);
|
||||
_pluginManagementService.EnablePluginImplementation(PluginImplementation);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
@@ -195,7 +195,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
||||
}
|
||||
}
|
||||
else
|
||||
_pluginService.DisablePlugin(PluginImplementation);
|
||||
_pluginManagementService.DisablePluginImplementation(PluginImplementation);
|
||||
|
||||
NotifyOfPropertyChange(nameof(IsEnabled));
|
||||
NotifyOfPropertyChange(nameof(CanOpenSettings));
|
||||
@@ -208,7 +208,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
||||
bool restart = false;
|
||||
|
||||
// If any plugin already requires a restart, don't ask the user again
|
||||
bool restartQueued = _pluginService.GetAllPluginInfo().Any(p => p.Instance != null && !p.IsEnabled && p.Instance.IsEnabled);
|
||||
bool restartQueued = _pluginManagementService.GetAllPluginInfo().Any(p => p.Plugin != null && !p.IsEnabled && p.Plugin.IsEnabled);
|
||||
// If the plugin isn't enabled (load failed), it can be disabled without a restart
|
||||
if (!restartQueued && PluginImplementation.IsEnabled)
|
||||
{
|
||||
@@ -220,7 +220,7 @@ namespace Artemis.UI.Screens.Settings.Tabs.Plugins
|
||||
);
|
||||
}
|
||||
|
||||
_pluginService.DisablePlugin(PluginImplementation);
|
||||
_pluginManagementService.DisablePluginImplementation(PluginImplementation);
|
||||
if (restart)
|
||||
{
|
||||
_logger.Debug("Restarting for device provider disable {pluginInfo}", PluginImplementation.PluginInfo);
|
||||
|
||||
Reference in new issue
Block a user