Files
Pilz/Pilz.Plugins.Advanced.UI/PluginModule{T}.cs
2024-07-02 12:06:17 +02:00

52 lines
1.4 KiB
C#

namespace Pilz.Plugins.Advanced.UI;
public abstract class PluginModule<TPluginModuleUI> : PluginModuleBase where TPluginModuleUI : Control
{
public bool Visible { get; set; } = true;
public bool AllowEmbedding { get; set; } = true;
/// <summary>
/// Wrapper for the <see cref="PluginFeature.Icon"/> property to directly use it as <see cref="System.Drawing.Image"/>.
/// </summary>
public Image? Image
{
get => base.Icon as Image;
set => base.Icon = value;
}
protected PluginModule(string moduleType, string moduleIdentifier) : base(moduleType, moduleIdentifier)
{
}
protected PluginModule(string moduleType, string moduleIdentifier, string moduleName) : base(moduleType, moduleIdentifier, moduleName)
{
}
public virtual void ShowUI()
{
ShowUI(null);
}
public virtual void ShowUI(PluginFunctionParameter? @params)
{
}
public virtual TPluginModuleUI? CreateUI()
{
return CreateUI(null);
}
public virtual TPluginModuleUI? CreateUI(PluginFunctionParameter? @params)
{
object? ui = default;
if (OnPreExecute(@params, ref ui))
ui = CreateNewUI(@params);
OnPostExecute(@params, ref ui);
return ui as TPluginModuleUI;
}
protected abstract TPluginModuleUI? CreateNewUI(PluginFunctionParameter? @params);
}