From 7b04f6592c2d6698e24b4aafca6c9922f578cf20 Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Fri, 8 Dec 2023 09:04:39 +0100 Subject: [PATCH] plugin feature events --- Pilz.Plugins.Advanced/Extensions.cs | 26 ++++--------------- .../PluginFeatureController.cs | 16 ++++++++++++ 2 files changed, 21 insertions(+), 21 deletions(-) diff --git a/Pilz.Plugins.Advanced/Extensions.cs b/Pilz.Plugins.Advanced/Extensions.cs index eda2514..a125741 100644 --- a/Pilz.Plugins.Advanced/Extensions.cs +++ b/Pilz.Plugins.Advanced/Extensions.cs @@ -24,22 +24,6 @@ namespace Pilz.Plugins.Advanced return GetAsItem(module, addDefaultHandler ? RadMenuItem_RMMethod_Click : null); } - public static RadMenuItem GetAsItem(this PluginModule module, EventHandler? clickHandler) - { - var item = new RadMenuItem - { - Text = module.Name, - SvgImage = module.Icon, - Tag = module, - Visibility = module.Visible ? ElementVisibility.Visible : ElementVisibility.Collapsed - }; - - if (clickHandler is not null) - item.Click += clickHandler; - - return item; - } - public static RadMenuItem GetAsItem(this PluginFunction function) { return GetAsItem(function, true); @@ -50,14 +34,14 @@ namespace Pilz.Plugins.Advanced return GetAsItem(function, addDefaultHandler ? RadMenuItem_RMFunction_Click : null); } - public static RadMenuItem GetAsItem(this PluginFunction function, EventHandler? clickHandler) + public static RadMenuItem GetAsItem(this PluginFeature module, EventHandler? clickHandler) { var item = new RadMenuItem { - Text = function.Name, - SvgImage = function.Icon, - Tag = function, - Visibility = function.Enabled ? ElementVisibility.Visible : ElementVisibility.Collapsed + Text = module.Name, + SvgImage = module.Icon, + Tag = module, + Visibility = module.Enabled ? ElementVisibility.Visible : ElementVisibility.Collapsed }; if (clickHandler is not null) diff --git a/Pilz.Plugins.Advanced/PluginFeatureController.cs b/Pilz.Plugins.Advanced/PluginFeatureController.cs index 2ff7567..3408aa9 100644 --- a/Pilz.Plugins.Advanced/PluginFeatureController.cs +++ b/Pilz.Plugins.Advanced/PluginFeatureController.cs @@ -9,6 +9,18 @@ namespace Pilz.Plugins.Advanced { public sealed class PluginFeatureController { + public delegate void PluginFeatureEventHandler(PluginFeatureController controller, PluginFeature feature); + + /// + /// Fires when a new has been registred. + /// + public static event PluginFeatureEventHandler? OnPluginFeatureReistred; + + /// + /// Fires when a has been unregistred. + /// + public static event PluginFeatureEventHandler? OnPluginFeatureUnregistred; + /// /// The default public instance that can be used by plugins and the interface providing software. /// @@ -41,12 +53,16 @@ namespace Pilz.Plugins.Advanced public void Register(PluginFeature module) { if (!features.Contains(module)) + { features.Add(module); + OnPluginFeatureReistred?.Invoke(this, module); + } } public void Unregister(PluginFeature module) { features.Remove(module); + OnPluginFeatureUnregistred?.Invoke(this, module); } public class FeatureController