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"
|
2026-03-20 17:08:06 +08:00
|
|
|
#include "MenuBar.h"
|
2026-03-26 01:26:26 +08:00
|
|
|
#include "Core/IEditorContext.h"
|
2026-03-26 21:18:33 +08:00
|
|
|
#include "UI/UI.h"
|
2026-03-20 17:08:06 +08:00
|
|
|
#include <imgui.h>
|
|
|
|
|
|
2026-03-24 20:02:38 +08:00
|
|
|
namespace XCEngine {
|
|
|
|
|
namespace Editor {
|
2026-03-20 17:08:06 +08:00
|
|
|
|
|
|
|
|
MenuBar::MenuBar() : Panel("MenuBar") {}
|
|
|
|
|
|
|
|
|
|
void MenuBar::Render() {
|
2026-03-26 01:26:26 +08:00
|
|
|
HandleShortcuts();
|
|
|
|
|
|
2026-03-20 17:08:06 +08:00
|
|
|
if (ImGui::BeginMainMenuBar()) {
|
|
|
|
|
ShowFileMenu();
|
|
|
|
|
ShowEditMenu();
|
|
|
|
|
ShowViewMenu();
|
|
|
|
|
ShowHelpMenu();
|
2026-03-26 01:26:26 +08:00
|
|
|
RenderSceneStatus();
|
2026-03-20 17:08:06 +08:00
|
|
|
ImGui::EndMainMenuBar();
|
|
|
|
|
}
|
2026-03-26 01:26:26 +08:00
|
|
|
|
2026-03-26 21:18:33 +08:00
|
|
|
RenderAboutPopup();
|
2026-03-26 01:26:26 +08:00
|
|
|
}
|
|
|
|
|
|
2026-03-26 21:18:33 +08:00
|
|
|
void MenuBar::HandleShortcuts() {
|
|
|
|
|
if (!m_context) {
|
2026-03-26 01:26:26 +08:00
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-27 00:15:38 +08:00
|
|
|
Actions::HandleMainMenuShortcuts(*m_context, Actions::GlobalShortcutContext());
|
2026-03-26 01:26:26 +08:00
|
|
|
}
|
|
|
|
|
|
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 01:26:26 +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 01:26:26 +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 01:26:26 +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 01:26:26 +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);
|
2026-03-20 17:08:06 +08:00
|
|
|
}
|
|
|
|
|
|
2026-03-26 01:26:26 +08:00
|
|
|
void MenuBar::RenderSceneStatus() {
|
|
|
|
|
if (!m_context) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
2026-03-27 00:15:38 +08:00
|
|
|
UI::DrawSceneStatusWidget(*m_context);
|
2026-03-26 01:26:26 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
2026-03-24 20:02:38 +08:00
|
|
|
}
|