2.8 KiB
2.8 KiB
UIEditorCommandRegistry
命名空间: XCEngine::UI::Editor
类型: enums + structs + functions
头文件: XCEditor/Foundation/UIEditorCommandRegistry.h
描述: editor 命令描述协议与注册表校验入口,负责定义 workspace/host 命令的静态声明格式。
概览
UIEditorCommandRegistry.h 是 XCEditor 命令系统的静态描述层。它不执行命令,而是先回答这些问题:
- 一个 editor 命令的
commandId、displayName和命令种类是什么。 - 这个命令对应的是 workspace command 还是 host command。
- 如果是 workspace command,它的 panel 路由来自固定 panel、当前 active panel,还是根本不需要 panel。
- 当前整张命令表是否合法,是否存在重复 id、空 displayName 或错误的 panel source 组合。
主要声明
| 声明 | 角色 |
|---|---|
UIEditorCommandKind |
区分 Workspace 与 Host 命令。 |
UIEditorCommandPanelSource |
描述 panel 路由来自 None / FixedPanelId / ActivePanel。 |
UIEditorWorkspaceCommandDescriptor |
把高层命令映射到 UIEditorWorkspaceCommandKind + panel routing。 |
UIEditorCommandDescriptor |
单个 editor 命令的完整静态描述。 |
UIEditorCommandRegistry |
命令描述表。 |
UIEditorCommandRegistryValidationCode |
注册表校验失败原因。 |
FindUIEditorCommandDescriptor(...) |
通过 commandId 查找描述。 |
ValidateUIEditorCommandRegistry(...) |
校验命令表的完整性与路由合法性。 |
当前实现行为
ValidateUIEditorCommandRegistry(...)会拒绝:- 空
commandId - 空
displayName - 重复
commandId - host 命令错误携带 workspace panel routing
- 需要 panel 的 workspace 命令却没有 panel source
- 不需要 panel 的命令却错误携带
FixedPanelId/ActivePanel
- 空
FindUIEditorCommandDescriptor(...)当前按线性遍历registry.commands查找。CommandKindRequiresPanelId(...)当前把OpenPanel / ClosePanel / ShowPanel / HidePanel / ActivatePanel视为需要 panel 路由;ResetWorkspace不需要。
测试与调用链
tests/UI/Editor/unit/test_ui_editor_command_registry.cpp- 当前覆盖 descriptor 查找、重复 id、空 displayName 和 panel source 校验。
new_editor/src/Foundation/UIEditorCommandDispatcher.cpp- 直接依赖这份注册表做命令解析和配置校验。
new_editor/src/Shell/UIEditorMenuModel.cpp- 当前用它决定 menu item 的 command 元数据与启用态来源。