52 lines
1.3 KiB
C#
52 lines
1.3 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 type, string identifier) : base(type, identifier)
|
|
{
|
|
}
|
|
|
|
protected PluginModule(string type, string identifier, string? name) : base(type, identifier, name)
|
|
{
|
|
}
|
|
|
|
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);
|
|
} |