using System; using System.Collections.Generic; using System.Windows.Controls; using System.Windows.Media; namespace InkCanvasForClass.PluginSdk { /// /// Ink Canvas 插件基类 /// 提供插件的基本实现 /// public abstract class InkCanvasPluginBase : IInkCanvasPlugin { private bool _isEnabled; private IPluginContext _context; /// /// 插件唯一标识符 /// public abstract string Id { get; } /// /// 插件名称 /// public abstract string Name { get; } /// /// 插件描述 /// public abstract string Description { get; } /// /// 插件版本 /// public abstract Version Version { get; } /// /// 插件作者 /// public abstract string Author { get; } /// /// 插件主页URL /// public virtual string Homepage => string.Empty; /// /// 插件图标 /// public virtual ImageSource Icon => null; /// /// 插件是否已启用 /// public virtual bool IsEnabled { get => _isEnabled; set { if (_isEnabled != value) { _isEnabled = value; OnEnabledChanged(value); EnabledChanged?.Invoke(this, value); } } } /// /// 插件启用状态变更事件 /// public event EventHandler EnabledChanged; /// /// 插件上下文 /// protected IPluginContext Context => _context; /// /// 插件初始化 /// /// 插件上下文 public virtual void Initialize(IPluginContext context) { _context = context; } /// /// 方案 B:在 之后由宿主调用,用于向 登记菜单、工具栏、设置页等。 /// /// 宿主提供的注册表 public virtual void RegisterExtensions(IPluginRegistry registry) { } /// /// 插件启动 /// public virtual void Start() { // 默认实现为空 } /// /// 插件停止 /// public virtual void Stop() { // 默认实现为空 } /// /// 插件清理 /// public virtual void Cleanup() { // 默认实现为空 } /// /// 获取插件设置界面 /// /// 设置界面控件 public virtual UserControl GetSettingsView() { return new UserControl(); } /// /// 获取插件菜单项 /// /// 菜单项列表 public virtual IEnumerable GetMenuItems() { return new List(); } /// /// 获取插件工具栏按钮 /// /// 工具栏按钮列表 public virtual IEnumerable