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