Files
XCEngine/docs/api/XCEngine/Editor/Actions/MainMenuActionRouter/MainMenuActionRouter.md

2.0 KiB
Raw Blame History

MainMenuActionRouter

命名空间: XCEngine::Editor::Actions

类型: header-helper

源文件: editor/src/Actions/MainMenuActionRouter.h

描述: 实现主菜单栏的文件、编辑、视图、帮助菜单,以及相应的全局快捷键和弹窗入口。

概述

MainMenuActionRouterMenuBar 面板背后的实际逻辑层。当前它负责:

  • 新建、打开、保存场景
  • 撤销与重做
  • 请求退出编辑器
  • 请求重置 Dock 布局
  • 打开 About 弹窗
  • 在菜单栏右侧绘制当前场景状态

当前实现

  • ExecuteNewScene / ExecuteOpenScene / ExecuteSaveScene 最终调用 SceneCommands
  • RequestEditorExit 发布 EditorExitRequestedEvent
  • RequestDockLayoutReset 发布 DockLayoutResetRequestedEvent
  • RequestAboutPopup 通过 DeferredPopupState 延迟打开 About 对话框
  • HandleMenuBarShortcuts 目前使用 GlobalShortcutContext()

MenuBar.cppRender() 顺序也比较清晰:先处理快捷键,再绘制菜单栏,最后绘制弹窗覆盖层。

设计说明

把主菜单作为单独 router而不是直接在 MenuBar::Render 里写一大串 ImGui::MenuItem,有两个明显收益:

  • 菜单项逻辑可以和命令层、事件总线清晰对接
  • 快捷键和菜单点击能共享同一套执行入口

这正是商业编辑器常见的菜单层设计方式。菜单不是业务逻辑本体,它只是统一入口。

当前限制

  • 文件菜单当前只覆盖场景级工作流,没有项目级导入、构建或设置入口
  • About 弹窗内容仍然是开发中状态说明,不是正式产品级信息页
  • 全局快捷键冲突处理比较简单,尚未提供用户可配置热键系统

相关文档