Skip to content

feat(plugin): 支持插件工具栏手动添加配置与设置页导航图标显示优化 - #716

Open
PANDAJSR wants to merge 1 commit into
InkCanvasForClass:net10from
PANDAJSR:feat/custom-video-booth
Open

PANDAJSR wants to merge 1 commit into
InkCanvasForClass:net10from
PANDAJSR:feat/custom-video-booth

Conversation

@PANDAJSR

Copy link
Copy Markdown
Contributor

动机 / 解决的问题 (Motivation)

  1. 工具栏项强行插入问题:此前插件向宿主注册浮动或白板工具栏项时,首次加载会被宿主默认强行追加到用户的当前活跃工具栏中。对于部分非核心、需要让用户“按需手动启用”的插件组件,强行占用工具栏槽位并不合理。
  2. 设置页插件图标单调:设置中心左侧导航栏中的插件配置入口,以往统一硬编码为默认齿轮图标(\uE713),未能呈现插件自身的品牌/功能图标。

主要改动 (Key Changes)

1. 插件工具栏支持 AutoAddToActiveConfig 控制

  • 在 InkCanvas.PluginSdk/IPluginHost.cs 的 PluginToolbarItemInfo 中新增属性:
/// <summary>
/// 是否在插件首次注册时自动添加到当前活跃工具栏配置中。
/// 默认为 true。若设为 false,则仅添加到工具栏组件库,需用户在设置中手动添加。
/// </summary>
public bool AutoAddToActiveConfig { get; set; } = true;
  • 在 PluginManager.cs 中:
    • 注册工具栏项时结合 isFirstRegistration && itemInfo.AutoAddToActiveConfig 判定是否自动入栏。
    • 合并并统一了批量插件加载时的工具栏排队刷新逻辑(FlushPendingToolbarRebuild),同时支持白板工具栏与浮动工具栏,避免插件热加载/批量加载时频繁重建引发界面闪烁。

2. 设置中心导航栏插件图标自适应渲染

  • 在 SettingsWindow.xaml.cs 中实现 CreatePluginNavItemIcon:
    • 优先检测插件清单 manifest.json 中的 Icon 配置。
    • 若未配置,按优先级探测插件根目录的 icon_mono.png 或 icon.png。
    • 命中后以 16x16 的 BitmapIcon(ShowAsMonochrome = true)展示,保持 Fluent 整体视觉协调;若均未提供,安全回退到默认齿轮图标。

验证情况 (Verification)

  • 配置 AutoAddToActiveConfig = false 的插件组件首次加载时,不会强行插入用户的浮动/白板工具栏,同时在“自定义工具栏”管理列表中正常展示供拖拽添加。
  • 设置中心左侧插件入口能正确显示插件提供的自定义图标,没有图标的插件正常显示默认齿轮。
  • 项目可正常编译通过,无引入破坏性改动。

@AstrZero

AstrZero commented Oct 17, 2026 via email

Copy link
Copy Markdown
Collaborator

@CJKmkp

CJKmkp commented Oct 19, 2026

Copy link
Copy Markdown
Member

无问题则可合并

@CJKmkp

CJKmkp commented Oct 23, 2026

Copy link
Copy Markdown
Member

暂未发现可用图标的插件,所以我不知道有没有问题

@PANDAJSR

Copy link
Copy Markdown
Contributor Author

暂未发现可用图标的插件,所以我不知道有没有问题

https://github.com/PANDAJSR/ICC-CE-ENBX

@PANDAJSR

Copy link
Copy Markdown
Contributor Author

补充本机回归验证(2026-10-25),针对本 PR 原始 head eaed28840dc7910e55a625e73a8fb7e5e08d9e02,独立 worktree,未混入其他待审 PR。

  • Release 构建通过,0 errors;运行时检查 33 项通过,0 失败。
  • 图标检查覆盖清单 Icon 优先、缺失时 icon_mono.png → icon.png → 齿轮、16×16/单色,以及实际 ICC-CE-ENBX 的 icon_mono.png。图标由真实宿主工厂生成并在 WPF 窗口中显示。
  • 两种工具栏均检查 AutoAddToActiveConfig true/false、组件库登记、重复注册、首次注册标记持久化、已有标记防止自动加回,以及批量刷新 pending 标记清理。

验证源码、复跑脚本、构建及逐项日志:完整证据(pr716-runtime.log / pr716-build.log)。环境为 Windows 10 build 19044、.NET SDK 10.0.301、1920×1200 / 100%。验证工具加载本 PR 的真实构建产物,调用生产方法与注册表;跳过完整 App / Window_Loaded 启动流程,配置使用隔离目录,生产代码未改。

仍待人工验证:完整启动后的设置导航图标、组件库手动添加、用户删除组件后重启不自动加回,以及完整插件热重载。本次不将这些场景标记为已通过。

@CJKmkp

CJKmkp commented Oct 25, 2026

Copy link
Copy Markdown
Member

请及时测试

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

新特性 New feature or request 等待验证 Wait to verify if it is fixed

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants