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