raid/private/raid_test/application.cpp

80 lines
1.9 KiB
C++

#include "raid_test/application.hpp"
namespace raid_test
{
Application gApplication;
bool Application::init()
{
if (!raid::Application::init()) {
return false;
}
setMainWindowFlags(raid::DEFAULT_MAIN_WINDOW_FLAGS | ImGuiWindowFlags_MenuBar | ImGuiWindowFlags_NoDocking);
setMainWindowStyle(ImGuiStyleVar_WindowPadding, ImVec2());
setMainWindowStyle(ImGuiStyleVar_WindowBorderSize, 0.f);
std::ranges::fill(mFrameOpen, true);
return true;
}
void Application::configureImgui()
{
raid::Application::configureImgui();
ImGuiIO& imguiIO = ImGui::GetIO();
imguiIO.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
}
void Application::render()
{
if (ImGui::BeginMenuBar())
{
if (ImGui::BeginMenu("File"))
{
if (ImGui::MenuItem("Quit"))
{
requestQuit();
}
ImGui::EndMenu();
}
if (ImGui::BeginMenu("Frames"))
{
for (std::size_t idx = 0; idx < NUM_FRAMES; ++idx) {
ImGui::MenuItem(FRAMES[idx].title, nullptr, &mFrameOpen[idx]);
}
ImGui::EndMenu();
}
if (ImGui::BeginMenu("Debug"))
{
ImGui::MenuItem("ImGui Metrics", nullptr, &mShowMetrics);
ImGui::EndMenu();
}
ImGui::EndMenuBar();
}
const ImGuiID dockID = ImGui::GetID(this);
ImGui::DockSpace(dockID);
if (mShowMetrics) {
ImGui::ShowMetricsWindow(&mShowMetrics);
}
for (std::size_t idx = 0; idx < NUM_FRAMES; ++idx)
{
ImGui::SetNextWindowDockID(dockID, ImGuiCond_FirstUseEver);
if (mFrameOpen[idx]) {
FRAMES[idx].render(mFrameOpen[idx]);
}
}
}
std::string Application::getFolderName()
{
return "raid_test_app";
}
std::string Application::getWindowTitle()
{
return "RAID Test Application";
}
} // namespace raid_test