52 lines
1.4 KiB
C#
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);
|
|
} |