76 lines
2.6 KiB
C++
76 lines
2.6 KiB
C++
#include "EditorShellAssetBuilderSupport.h"
|
|
|
|
#include <utility>
|
|
|
|
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
|