using System;
using System.Collections.Generic;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Media;
using System.Windows.Ink;
namespace InkCanvasForClass.PluginSdk
{
///
/// 插件上下文接口,提供对主应用程序功能的访问
///
public interface IPluginContext
{
///
/// 主窗口实例
///
Window MainWindow { get; }
///
/// 当前画布
///
System.Windows.Controls.InkCanvas CurrentCanvas { get; }
///
/// 所有画布页面
///
IList AllCanvasPages { get; }
///
/// 当前页面索引
///
int CurrentPageIndex { get; }
///
/// 总页面数
///
int TotalPageCount { get; }
///
/// 浮动工具栏
///
FrameworkElement FloatingToolBar { get; }
///
/// 左侧面板
///
FrameworkElement LeftPanel { get; }
///
/// 右侧面板
///
FrameworkElement RightPanel { get; }
///
/// 顶部面板
///
FrameworkElement TopPanel { get; }
///
/// 底部面板
///
FrameworkElement BottomPanel { get; }
///
/// 当前绘制模式
///
int CurrentDrawingMode { get; }
///
/// 当前墨迹宽度
///
double CurrentInkWidth { get; }
///
/// 当前墨迹颜色
///
Color CurrentInkColor { get; }
///
/// 当前高亮笔宽度
///
double CurrentHighlighterWidth { get; }
///
/// 当前橡皮擦大小
///
int CurrentEraserSize { get; }
///
/// 当前橡皮擦类型
///
int CurrentEraserType { get; }
///
/// 当前橡皮擦形状
///
int CurrentEraserShape { get; }
///
/// 当前墨迹透明度
///
double CurrentInkAlpha { get; }
///
/// 当前墨迹样式
///
int CurrentInkStyle { get; }
///
/// 当前背景颜色
///
string CurrentBackgroundColor { get; }
///
/// 是否为深色主题
///
bool IsDarkTheme { get; }
///
/// 是否为白板模式
///
bool IsWhiteboardMode { get; }
///
/// 是否为PPT模式
///
bool IsPPTMode { get; }
///
/// 是否为全屏模式
///
bool IsFullScreenMode { get; }
///
/// 是否为画布模式
///
bool IsCanvasMode { get; }
///
/// 是否为选择模式
///
bool IsSelectionMode { get; }
///
/// 是否为橡皮擦模式
///
bool IsEraserMode { get; }
///
/// 是否为形状绘制模式
///
bool IsShapeDrawingMode { get; }
///
/// 是否为高亮笔模式
///
bool IsHighlighterMode { get; }
///
/// 是否可以撤销
///
bool CanUndo { get; }
///
/// 是否可以重做
///
bool CanRedo { get; }
///
/// 获取设置值
///
/// 设置类型
/// 设置键
/// 默认值
/// 设置值
T GetSetting(string key, T defaultValue = default(T));
///
/// 设置设置值
///
/// 设置类型
/// 设置键
/// 设置值
void SetSetting(string key, T value);
///
/// 保存设置
///
void SaveSettings();
///
/// 加载设置
///
void LoadSettings();
///
/// 重置设置
///
void ResetSettings();
///
/// 获取所有插件
///
/// 插件列表
IList GetAllPlugins();
///
/// 根据名称获取插件
///
/// 插件名称
/// 插件实例
IInkCanvasPlugin GetPlugin(string pluginName);
///
/// 启用插件
///
/// 插件名称
void EnablePlugin(string pluginName);
///
/// 禁用插件
///
/// 插件名称
void DisablePlugin(string pluginName);
///
/// 卸载插件
///
/// 插件名称
void UnloadPlugin(string pluginName);
///
/// 显示设置窗口
///
void ShowSettingsWindow();
///
/// 隐藏设置窗口
///
void HideSettingsWindow();
///
/// 显示插件设置窗口
///
void ShowPluginSettingsWindow();
///
/// 隐藏插件设置窗口
///
void HidePluginSettingsWindow();
///
/// 显示帮助窗口
///
void ShowHelpWindow();
///
/// 隐藏帮助窗口
///
void HideHelpWindow();
///
/// 显示关于窗口
///
void ShowAboutWindow();
///
/// 隐藏关于窗口
///
void HideAboutWindow();
///
/// 显示通知
///
/// 消息内容
/// 通知类型
void ShowNotification(string message, NotificationType type = NotificationType.Info);
///
/// 显示确认对话框
///
/// 消息内容
/// 标题
/// 用户选择结果
bool ShowConfirmDialog(string message, string title = "确认");
///
/// 显示输入对话框
///
/// 提示消息
/// 标题
/// 默认值
/// 用户输入内容
string ShowInputDialog(string message, string title = "输入", string defaultValue = "");
///
/// 设置全屏模式
///
/// 是否全屏
void SetFullScreen(bool isFullScreen);
///
/// 设置置顶模式
///
/// 是否置顶
void SetTopMost(bool isTopMost);
///
/// 设置窗口可见性
///
/// 是否可见
void SetWindowVisibility(bool isVisible);
///
/// 最小化窗口
///
void MinimizeWindow();
///
/// 最大化窗口
///
void MaximizeWindow();
///
/// 还原窗口
///
void RestoreWindow();
///
/// 关闭窗口
///
void CloseWindow();
///
/// 设置窗口位置
///
/// X坐标
/// Y坐标
void SetWindowPosition(double x, double y);
///
/// 设置窗口大小
///
/// 宽度
/// 高度
void SetWindowSize(double width, double height);
///
/// 获取窗口位置
///
/// 窗口位置
(double x, double y) GetWindowPosition();
///
/// 获取窗口大小
///
/// 窗口大小
(double width, double height) GetWindowSize();
///
/// 清除当前画布
///
void ClearCanvas();
///
/// 清除所有画布
///
void ClearAllCanvases();
///
/// 添加新页面
///
void AddNewPage();
///
/// 删除当前页面
///
void DeleteCurrentPage();
///
/// 切换到指定页面
///
/// 页面索引
void SwitchToPage(int pageIndex);
///
/// 下一页
///
void NextPage();
///
/// 上一页
///
void PreviousPage();
///
/// 设置绘制模式
///
/// 绘制模式
void SetDrawingMode(int mode);
///
/// 设置墨迹宽度
///
/// 宽度
void SetInkWidth(double width);
///
/// 设置墨迹颜色
///
/// 颜色
void SetInkColor(Color color);
///
/// 设置高亮笔宽度
///
/// 宽度
void SetHighlighterWidth(double width);
///
/// 设置橡皮擦大小
///
/// 大小
void SetEraserSize(int size);
///
/// 设置橡皮擦类型
///
/// 类型
void SetEraserType(int type);
///
/// 设置橡皮擦形状
///
/// 形状
void SetEraserShape(int shape);
///
/// 设置墨迹透明度
///
/// 透明度
void SetInkAlpha(double alpha);
///
/// 设置墨迹样式
///
/// 样式
void SetInkStyle(int style);
///
/// 设置背景颜色
///
/// 颜色
void SetBackgroundColor(string color);
///
/// 保存画布
///
/// 文件路径
void SaveCanvas(string filePath);
///
/// 加载画布
///
/// 文件路径
void LoadCanvas(string filePath);
///
/// 导出为图片
///
/// 文件路径
/// 格式
void ExportAsImage(string filePath, string format);
///
/// 导出为PDF
///
/// 文件路径
void ExportAsPDF(string filePath);
///
/// 撤销操作
///
void Undo();
///
/// 重做操作
///
void Redo();
///
/// 全选
///
void SelectAll();
///
/// 取消选择
///
void DeselectAll();
///
/// 删除选中项
///
void DeleteSelected();
///
/// 复制选中项
///
void CopySelected();
///
/// 剪切选中项
///
void CutSelected();
///
/// 粘贴
///
void Paste();
///
/// 注册事件处理器
///
/// 事件名称
/// 事件处理器
void RegisterEventHandler(string eventName, EventHandler handler);
///
/// 注销事件处理器
///
/// 事件名称
/// 事件处理器
void UnregisterEventHandler(string eventName, EventHandler handler);
///
/// 触发事件
///
/// 事件名称
/// 事件发送者
/// 事件参数
void TriggerEvent(string eventName, object sender, EventArgs args);
///
/// 重启应用程序
///
void RestartApplication();
///
/// 退出应用程序
///
void ExitApplication();
///
/// 检查更新
///
void CheckForUpdates();
///
/// 打开帮助文档
///
void OpenHelpDocument();
///
/// 打开关于页面
///
void OpenAboutPage();
}
}