plugin feature events

This commit is contained in:
2023-12-08 09:04:39 +01:00
parent d2c8986d51
commit 7b04f6592c
2 changed files with 21 additions and 21 deletions

View File

@@ -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)

View File

@@ -9,6 +9,18 @@ namespace Pilz.Plugins.Advanced
{
public sealed class PluginFeatureController
{
public delegate void PluginFeatureEventHandler(PluginFeatureController controller, PluginFeature feature);
/// <summary>
/// Fires when a new <see cref="PluginFeature"/> has been registred.
/// </summary>
public static event PluginFeatureEventHandler? OnPluginFeatureReistred;
/// <summary>
/// Fires when a <see cref="PluginFeature"/> has been unregistred.
/// </summary>
public static event PluginFeatureEventHandler? OnPluginFeatureUnregistred;
/// <summary>
/// The default public instance that can be used by plugins and the interface providing software.
/// </summary>
@@ -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