Files
XCEngine/editor/src/panels/MenuBar.cpp

74 lines
1.4 KiB
C++
Raw Normal View History

2026-03-26 22:10:43 +08:00
#include "Actions/ActionRouting.h"
2026-03-26 22:31:22 +08:00
#include "Actions/EditActionRouter.h"
2026-03-27 00:15:38 +08:00
#include "Actions/MainMenuActionRouter.h"
#include "MenuBar.h"
#include "Core/IEditorContext.h"
2026-03-26 21:18:33 +08:00
#include "UI/UI.h"
#include <imgui.h>
namespace XCEngine {
namespace Editor {
MenuBar::MenuBar() : Panel("MenuBar") {}
void MenuBar::Render() {
HandleShortcuts();
if (ImGui::BeginMainMenuBar()) {
ShowFileMenu();
ShowEditMenu();
ShowViewMenu();
ShowHelpMenu();
RenderSceneStatus();
ImGui::EndMainMenuBar();
}
2026-03-26 21:18:33 +08:00
RenderAboutPopup();
}
2026-03-26 21:18:33 +08:00
void MenuBar::HandleShortcuts() {
if (!m_context) {
return;
}
2026-03-27 00:15:38 +08:00
Actions::HandleMainMenuShortcuts(*m_context, Actions::GlobalShortcutContext());
}
2026-03-26 21:18:33 +08:00
void MenuBar::ShowFileMenu() {
UI::DrawMenuScope("File", [&]() {
2026-03-27 00:15:38 +08:00
Actions::DrawFileMenuActions(*m_context);
2026-03-26 21:18:33 +08:00
});
}
2026-03-26 21:18:33 +08:00
void MenuBar::ShowEditMenu() {
UI::DrawMenuScope("Edit", [&]() {
2026-03-26 22:31:22 +08:00
Actions::DrawEditActions(*m_context);
2026-03-26 21:18:33 +08:00
});
}
2026-03-26 21:18:33 +08:00
void MenuBar::ShowViewMenu() {
UI::DrawMenuScope("View", [&]() {
2026-03-27 00:15:38 +08:00
Actions::DrawViewMenuActions(*m_context);
2026-03-26 21:18:33 +08:00
});
}
2026-03-26 21:18:33 +08:00
void MenuBar::ShowHelpMenu() {
UI::DrawMenuScope("Help", [&]() {
2026-03-27 00:15:38 +08:00
Actions::DrawHelpMenuActions(m_aboutPopup);
2026-03-26 21:18:33 +08:00
});
}
2026-03-26 21:18:33 +08:00
void MenuBar::RenderAboutPopup() {
2026-03-27 00:15:38 +08:00
UI::DrawEditorAboutDialog(m_context, m_aboutPopup);
}
void MenuBar::RenderSceneStatus() {
if (!m_context) {
return;
}
2026-03-27 00:15:38 +08:00
UI::DrawSceneStatusWidget(*m_context);
}
}
}