Extract new editor host command session bridge

This commit is contained in:
2026-04-12 01:49:08 +08:00
parent 838f676fa6
commit 7ad4bfbb1c
10 changed files with 344 additions and 84 deletions

View File

@@ -0,0 +1,36 @@
#pragma once
#include "Core/ProductEditorSession.h"
#include <XCEditor/Foundation/UIEditorCommandDispatcher.h>
#include <functional>
#include <string_view>
namespace XCEngine::UI::Editor::App {
class ProductEditorHostCommandBridge : public UIEditorHostCommandHandler {
public:
void BindSession(ProductEditorSession& session);
void SetExitRequestHandler(std::function<void()> handler);
UIEditorHostCommandEvaluationResult EvaluateHostCommand(
std::string_view commandId) const override;
UIEditorHostCommandDispatchResult DispatchHostCommand(
std::string_view commandId) override;
private:
UIEditorHostCommandEvaluationResult BuildDisabledResult(
std::string_view message) const;
UIEditorHostCommandEvaluationResult EvaluateEditCommand(
std::string_view commandId) const;
UIEditorHostCommandDispatchResult DispatchEditCommand(
std::string_view commandId);
bool SupportsHierarchyEditCommands(std::string_view commandId) const;
bool SupportsProjectEditCommands(std::string_view commandId) const;
ProductEditorSession* m_session = nullptr;
std::function<void()> m_requestExit = {};
};
} // namespace XCEngine::UI::Editor::App