Files
XCEngine/new_editor/app/Commands/ProductEditorHostCommandBridge.h

37 lines
1.2 KiB
C++

#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