#include "Actions/ActionRouting.h" #include "Actions/EditActionRouter.h" #include "Actions/MainMenuActionRouter.h" #include "MenuBar.h" #include "Core/IEditorContext.h" #include "UI/UI.h" #include namespace XCEngine { namespace Editor { MenuBar::MenuBar() : Panel("MenuBar") {} void MenuBar::Render() { HandleShortcuts(); if (ImGui::BeginMainMenuBar()) { ShowFileMenu(); ShowEditMenu(); ShowViewMenu(); ShowHelpMenu(); RenderSceneStatus(); ImGui::EndMainMenuBar(); } RenderAboutPopup(); } void MenuBar::HandleShortcuts() { if (!m_context) { return; } Actions::HandleMainMenuShortcuts(*m_context, Actions::GlobalShortcutContext()); } void MenuBar::ShowFileMenu() { UI::DrawMenuScope("File", [&]() { Actions::DrawFileMenuActions(*m_context); }); } void MenuBar::ShowEditMenu() { UI::DrawMenuScope("Edit", [&]() { Actions::DrawEditActions(*m_context); }); } void MenuBar::ShowViewMenu() { UI::DrawMenuScope("View", [&]() { Actions::DrawViewMenuActions(*m_context); }); } void MenuBar::ShowHelpMenu() { UI::DrawMenuScope("Help", [&]() { Actions::DrawHelpMenuActions(m_aboutPopup); }); } void MenuBar::RenderAboutPopup() { UI::DrawEditorAboutDialog(m_context, m_aboutPopup); } void MenuBar::RenderSceneStatus() { if (!m_context) { return; } UI::DrawSceneStatusWidget(*m_context); } } }