#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); if (const mijin::Result<> result = mConfig.init(getFS().getPath("/config/persistent.yml")); !result.isSuccess()) { msgError("Error initializing config: {}.", result.getError().message); } return true; } void Application::configureImgui() { raid::Application::configureImgui(); ImGuiIO& imguiIO = ImGui::GetIO(); imguiIO.ConfigFlags |= ImGuiConfigFlags_DockingEnable; } void Application::render() { if (const mijin::Result<> result = mConfig.save(); !result.isSuccess()) { msgError("Error while saving config: {}.", result.getError().message); } 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