Files
Better-Seewo/Better-EN5/Program.cs

127 lines
4.2 KiB
C#
Raw Permalink Normal View History

/*
* 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
{
/// <summary>
/// Better-Seewo EN5 增强插件主类
/// 继承 EasiPlugin 基类,作为希沃白板 EN5 的功能增强插件入口
/// </summary>
public class Program : EasiPlugin
{
/// <summary>
/// 中英文双语资源字典
/// 用于菜单项标题等多语言支持
/// </summary>
private DictionaryLanguageSource _languageSource;
/// <summary>
/// 三个菜单项实例
/// </summary>
private ExportInkMenuItem _exportInkMenuItem;
private ImportInkMenuItem _importInkMenuItem;
private ManagerMenuItem _managerMenuItem;
/// <summary>
/// 插件运行入口
/// 当希沃白板 EN5 加载本插件时调用此方法
/// </summary>
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();
}
/// <summary>
/// 初始化中英文双语资源字典
/// 提供菜单项标题的中文和英文翻译
/// </summary>
private void InitializeLanguageSource()
{
var dictionary = new Dictionary<string, string>
{
// 导出墨迹菜单项标题
{ "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);
}
/// <summary>
/// 注册所有菜单项到白板的 BoardEditMenu
/// 通过 IUIItemManager 接口向编辑菜单栏注入自定义功能按钮
/// </summary>
private void RegisterMenuItems()
{
// 获取白板 UI 项管理器
var uiItemManager = EN.GetService<IUIItemManager>();
// 依次注册三个菜单项
uiItemManager.AddMenuItem(_exportInkMenuItem);
uiItemManager.AddMenuItem(_importInkMenuItem);
uiItemManager.AddMenuItem(_managerMenuItem);
}
/// <summary>
/// 取消注册所有菜单项
/// 在插件卸载或白板关闭时调用,从菜单栏移除已注入的菜单项
/// </summary>
private void UnregisterMenuItems()
{
// 获取白板 UI 项管理器
var uiItemManager = EN.GetService<IUIItemManager>();
// 依次移除三个菜单项
uiItemManager.RemoveMenuItem(_exportInkMenuItem);
uiItemManager.RemoveMenuItem(_importInkMenuItem);
uiItemManager.RemoveMenuItem(_managerMenuItem);
}
}
}