feat(xcui): advance core and editor validation flow

This commit is contained in:
2026-04-06 16:20:46 +08:00
parent 33bb84f650
commit 2d030a97da
128 changed files with 9961 additions and 773 deletions

View File

@@ -0,0 +1,35 @@
set(EDITOR_UI_WORKSPACE_SHELL_COMPOSE_RESOURCES
View.xcui
${CMAKE_SOURCE_DIR}/tests/UI/Editor/integration/shared/themes/editor_validation.xctheme
)
add_executable(editor_ui_workspace_shell_compose_validation WIN32
main.cpp
${EDITOR_UI_WORKSPACE_SHELL_COMPOSE_RESOURCES}
)
target_include_directories(editor_ui_workspace_shell_compose_validation PRIVATE
${CMAKE_SOURCE_DIR}/tests/UI/Editor/integration/shared/src
${CMAKE_SOURCE_DIR}/engine/include
)
target_compile_definitions(editor_ui_workspace_shell_compose_validation PRIVATE
UNICODE
_UNICODE
)
if(MSVC)
target_compile_options(editor_ui_workspace_shell_compose_validation PRIVATE /utf-8 /FS)
set_property(TARGET editor_ui_workspace_shell_compose_validation PROPERTY
MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>DLL")
endif()
target_link_libraries(editor_ui_workspace_shell_compose_validation PRIVATE
editor_ui_integration_host
)
set_target_properties(editor_ui_workspace_shell_compose_validation PROPERTIES
OUTPUT_NAME "XCUIEditorWorkspaceShellComposeValidation"
)
source_group(TREE "${CMAKE_CURRENT_SOURCE_DIR}" FILES View.xcui)

View File

@@ -0,0 +1,94 @@
<View
name="EditorWorkspaceShellComposeValidation"
theme="../shared/themes/editor_validation.xctheme">
<Column width="fill" height="fill" padding="20" gap="12">
<Card
title="测试内容Editor Shell 基础壳层组合"
subtitle="只验证 Splitter / TabStrip / Panel Frame / 占位内容;不验证业务面板,不验证 new_editor 应用逻辑"
tone="accent"
height="156">
<Column gap="6">
<Text text="1. 检查左、中、右、下四个壳层区域边界是否干净,没有重叠、穿透或错位。" />
<Text text="2. 拖动 shell-left-right、shell-center-right、shell-top-bottom确认实时 resize 正常,并且会被最小尺寸正确 clamp。" />
<Text text="3. 点击 Document A / B / C确认中心区域只显示当前选中的 tab 占位内容。" />
<Text text="4. 这个测试不负责验证业务面板、数据绑定、命令系统,也不负责验证 new_editor 整体行为。" />
</Column>
</Card>
<Splitter
id="shell-top-bottom"
axis="vertical"
splitRatio="0.76"
splitterSize="10"
splitterHitSize="18"
primaryMin="340"
secondaryMin="120"
height="fill">
<Splitter
id="shell-left-right"
axis="horizontal"
splitRatio="0.22"
splitterSize="10"
splitterHitSize="18"
primaryMin="180"
secondaryMin="480"
height="fill">
<Card id="left-dock-placeholder" title="左侧 Dock 占位" subtitle="仅用于验证壳层 panel frame" height="fill">
<Column gap="8">
<Text text="这里用于检查 panel chrome 的边界、padding 和 split 稳定性。" />
</Column>
</Card>
<Splitter
id="shell-center-right"
axis="horizontal"
splitRatio="0.72"
splitterSize="10"
splitterHitSize="18"
primaryMin="280"
secondaryMin="200"
height="fill">
<TabStrip
id="document-tab-host"
tabHeaderHeight="34"
tabMinWidth="120"
height="fill">
<Tab id="document-tab-a" label="Document A" selected="true">
<Card title="文档占位 A" subtitle="当前选中 = Document A" height="fill">
<Column gap="8">
<Text text="中心主区域此时应该只渲染当前选中的 tab 占位内容。" />
</Column>
</Card>
</Tab>
<Tab id="document-tab-b" label="Document B">
<Card title="文档占位 B" subtitle="当前选中 = Document B" height="fill">
<Column gap="8">
<Text text="切到 Document B 后Document A 的内容应该被隐藏。" />
</Column>
</Card>
</Tab>
<Tab id="document-tab-c" label="Document C">
<Card title="文档占位 C" subtitle="当前选中 = Document C" height="fill">
<Column gap="8">
<Text text="这只是壳层 tab 占位,不是真实的 Editor 业务面板。" />
</Column>
</Card>
</Tab>
</TabStrip>
<Card id="right-dock-placeholder" title="右侧 Dock 占位" subtitle="仅用于验证壳层 panel frame" height="fill">
<Column gap="8">
<Text text="这里用于检查嵌套 split 和右侧占位 panel shell 是否稳定。" />
</Column>
</Card>
</Splitter>
</Splitter>
<Card id="bottom-dock-placeholder" title="底部 Dock 占位" subtitle="仅用于验证壳层 panel frame" height="fill">
<Column gap="8">
<Text text="这里用于检查底部 dock shell 和上下分割组合是否正常。" />
</Column>
</Card>
</Splitter>
</Column>
</View>

View File

@@ -0,0 +1,8 @@
#include "Application.h"
int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE, LPWSTR, int nCmdShow) {
return XCEngine::Tests::EditorUI::RunEditorUIValidationApp(
hInstance,
nCmdShow,
"editor.shell.workspace_compose");
}