/* * Program.cs * Better-Seewo EN5 增强插件入口点 * 所属项目:Better-Seewo * 作者:雾启工作室 * * 说明: * 本文件是希沃白板 EN5 增强插件的主入口,继承 EasiPlugin 基类。 * 在 OnRunningAsync 中完成以下初始化工作: * 1. 检测并排除云课模式运行环境 * 2. 延迟 3 秒等待白板完全就绪 * 3. 通过 IUIItemManager 向 BoardEditMenu 注入三个菜单项 */ using System; using System.Collections.Generic; using System.Threading.Tasks; using dotnetCampus.EasiPlugin; using Better_Seewo.Better_EN5.UI; namespace Better_Seewo.Better_EN5 { /// /// Better-Seewo EN5 增强插件主类 /// 继承 EasiPlugin 基类,作为希沃白板 EN5 的功能增强插件入口 /// public class Program : EasiPlugin { /// /// 中英文双语资源字典 /// 用于菜单项标题等多语言支持 /// private DictionaryLanguageSource _languageSource; /// /// 三个菜单项实例 /// private ExportInkMenuItem _exportInkMenuItem; private ImportInkMenuItem _importInkMenuItem; private ManagerMenuItem _managerMenuItem; /// /// 插件运行入口 /// 当希沃白板 EN5 加载本插件时调用此方法 /// protected override async Task OnRunningAsync() { // 检测是否为云课模式,如果是则不加载插件 // 云课模式下部分插件 API 不可用,直接退出避免异常 if (EN.CommandOptions.IsCloud) { return; } // 延迟 3 秒启动,确保白板界面和各项服务已完全就绪 await Task.Delay(3000); // 初始化中英文双语资源 InitializeLanguageSource(); // 创建三个菜单项实例 _exportInkMenuItem = new ExportInkMenuItem(_languageSource); _importInkMenuItem = new ImportInkMenuItem(_languageSource); _managerMenuItem = new ManagerMenuItem(_languageSource); // 注册所有菜单项到白板编辑菜单 RegisterMenuItems(); } /// /// 初始化中英文双语资源字典 /// 提供菜单项标题的中文和英文翻译 /// private void InitializeLanguageSource() { var dictionary = new Dictionary { // 导出墨迹菜单项标题 { "ExportInk.Title", "导出墨迹" }, { "ExportInk.Title.en", "Export Ink" }, // 导入墨迹菜单项标题 { "ImportInk.Title", "导入墨迹" }, { "ImportInk.Title.en", "Import Ink" }, // 管理器菜单项标题 { "Manager.Title", "Better-Seewo 管理" }, { "Manager.Title.en", "Better-Seewo Manager" }, }; _languageSource = new DictionaryLanguageSource(dictionary); } /// /// 注册所有菜单项到白板的 BoardEditMenu /// 通过 IUIItemManager 接口向编辑菜单栏注入自定义功能按钮 /// private void RegisterMenuItems() { // 获取白板 UI 项管理器 var uiItemManager = EN.GetService(); // 依次注册三个菜单项 uiItemManager.AddMenuItem(_exportInkMenuItem); uiItemManager.AddMenuItem(_importInkMenuItem); uiItemManager.AddMenuItem(_managerMenuItem); } /// /// 取消注册所有菜单项 /// 在插件卸载或白板关闭时调用,从菜单栏移除已注入的菜单项 /// private void UnregisterMenuItems() { // 获取白板 UI 项管理器 var uiItemManager = EN.GetService(); // 依次移除三个菜单项 uiItemManager.RemoveMenuItem(_exportInkMenuItem); uiItemManager.RemoveMenuItem(_importInkMenuItem); uiItemManager.RemoveMenuItem(_managerMenuItem); } } }