#include "EditorShellAssetBuilderSupport.h" #include namespace XCEngine::UI::Editor::App::CompositionSupport { namespace { UIEditorShellToolbarButton BuildToolbarButton( std::string buttonId, UIEditorShellToolbarGlyph glyph) { UIEditorShellToolbarButton button = {}; button.buttonId = std::move(buttonId); button.glyph = glyph; button.enabled = true; return button; } UIEditorWorkspacePanelPresentationModel BuildHostedContentPresentation( std::string panelId) { UIEditorWorkspacePanelPresentationModel presentation = {}; presentation.panelId = std::move(panelId); presentation.kind = UIEditorPanelPresentationKind::HostedContent; return presentation; } UIEditorWorkspacePanelPresentationModel BuildViewportPresentation( std::string panelId, std::string title) { UIEditorWorkspacePanelPresentationModel presentation = {}; presentation.panelId = std::move(panelId); presentation.kind = UIEditorPanelPresentationKind::ViewportShell; presentation.viewportShellModel.spec.chrome.title = std::move(title); presentation.viewportShellModel.spec.chrome.subtitle = {}; presentation.viewportShellModel.spec.chrome.showTopBar = false; presentation.viewportShellModel.spec.chrome.showBottomBar = false; presentation.viewportShellModel.frame.statusText.clear(); return presentation; } } // namespace UIEditorShellInteractionDefinition BuildBaseEditorShellDefinition() { UIEditorShellInteractionDefinition definition = {}; definition.menuModel = BuildEditorMenuModel(); definition.toolbarButtons = { BuildToolbarButton("run.play", UIEditorShellToolbarGlyph::Play), BuildToolbarButton("run.pause", UIEditorShellToolbarGlyph::Pause), BuildToolbarButton("run.step", UIEditorShellToolbarGlyph::Step) }; definition.statusSegments = {}; definition.workspacePresentations = { BuildHostedContentPresentation("hierarchy"), BuildViewportPresentation("scene", "Scene"), BuildViewportPresentation("game", "Game"), BuildHostedContentPresentation("inspector"), BuildHostedContentPresentation("console"), BuildHostedContentPresentation("project") }; return definition; } std::string ResolveEditorPanelTitle( const UIEditorPanelRegistry& registry, std::string_view panelId) { if (const UIEditorPanelDescriptor* descriptor = FindUIEditorPanelDescriptor(registry, panelId); descriptor != nullptr) { return descriptor->defaultTitle; } return panelId.empty() ? std::string("(none)") : std::string(panelId); } } // namespace XCEngine::UI::Editor::App::CompositionSupport