2.0 KiB
2.0 KiB
ConsoleActionRouter
命名空间: XCEngine::Editor::Actions
类型: header-helper
源文件: editor/src/Actions/ConsoleActionRouter.h
描述: 为 Console 面板提供工具栏动作和日志列表绘制逻辑。
概述
ConsoleActionRouter 目前主要负责两件事:
DrawConsoleToolbarActions绘制清空按钮和 Info / Warn / Error 过滤切换DrawConsoleLogRows读取EditorConsoleSink中的日志,并按过滤条件输出到面板
ConsolePanel.cpp 只负责搭窗口和滚动区域,真正的交互逻辑由这层统一承接。这样 Console 面板本身会保持很薄,不会把过滤策略、日志格式化和按钮语义都堆在一个类里。
当前实现
- 数据源固定为
EditorConsoleSink - 过滤状态由
ConsoleFilterState持有 - 每条日志通过
BuildConsoleLogText生成展示字符串 - 点击日志行时会把完整字符串复制到剪贴板
设计说明
这层拆分的价值在于把“日志存储”和“日志呈现”分开:
EditorConsoleSink关注线程安全和日志缓存ConsoleActionRouter关注工具栏与列表交互UI辅助函数负责外观和文本格式
这种分层比直接在 ConsolePanel::Render 中处理全部逻辑更容易维护,也更接近商业级编辑器里常见的 presenter / controller 风格。
当前限制
- 当前过滤粒度只有三档:信息、警告、错误
- 没有搜索、分类树、时间戳列或堆栈追踪展开
GetLogs()会复制整个日志数组,日志量继续增大后可能需要增量视图或虚拟列表