Files
Pilz/Pilz.Plugins.Advanced/PluginModule.cs
2023-12-08 09:10:37 +01:00

43 lines
1.2 KiB
C#

using Pilz.UI.Telerik;
using Pilz.UI.Telerik.Dialogs;
using System.Drawing;
using System.Windows.Forms;
using Telerik.WinControls;
namespace Pilz.Plugins.Advanced
{
public abstract class PluginModule : PluginFeature
{
public delegate void PluginModuleUIEventHandler(PluginModule module, PluginModuleUI ui);
/// <summary>
/// Fires when a <see cref="PluginModuleUI"/> instance has been created.
/// </summary>
public static event PluginModuleUIEventHandler? OnUICreated;
public bool Visible { get; set; } = true;
public bool AllowEmbedding { get; set; } = true;
protected PluginModule(string moduleType, string moduleName) : base(moduleType, moduleName)
{
}
public virtual void ShowUI()
{
if (CreateNewUI() is PluginModuleUI ui)
{
ui.BackColor = Color.Transparent;
DialogBaseForm.Show(ui, Name!, Icon!.ToImage().ToIcon()!);
}
}
public virtual PluginModuleUI CreateUI()
{
var ui = CreateNewUI();
OnUICreated?.Invoke(this, ui);
return ui;
}
protected abstract PluginModuleUI CreateNewUI();
}
}