#include #include #include #include #include SettingsWindow::SettingsWindow(gui::NativeWindow& window) : window(window) { savesPath = Options::GetInstance().GetValue("general", "savePath"); } bool SettingsWindow::render() { ImVec2 center = ImGui::GetMainViewport()->GetCenter(); ImGui::SetNextWindowPos(center, ImGuiCond_Appearing, ImVec2(0.5f, 0.5f)); if(!ImGui::BeginPopupModal("Settings", &isOpen)) return false; if(!ImGui::BeginTabBar("SettingsTabBar")) return false; if(ImGui::BeginTabItem("General")) { if(ImGui::Button("Pick...")) { NFD::Guard guard; NFD::UniquePath outPath; auto result = NFD::PickFolder(outPath); if(result == NFD_ERROR) panic("Error: {}", NFD::GetError()); if(result != NFD_CANCEL) { savesPath = outPath.get(); Options::GetInstance().SetValue("general", "savePath", savesPath); applyEnabled = true; } } ImGui::SameLine(); ImGui::BeginDisabled(); ImGui::InputText("Save Path", (char*)savesPath.c_str(), savesPath.length()); ImGui::EndDisabled(); ImGui::EndTabItem(); } if(ImGui::BeginTabItem("Core")) { if(cpuSettings.render()) { if(cpuSettings.getModified()) applyEnabled = true; } ImGui::EndTabItem(); } if(ImGui::BeginTabItem("Audio")) { if(audioSettings.render()) { if(audioSettings.getModified()) applyEnabled = true; } ImGui::EndTabItem(); } ImGui::EndTabBar(); ImGui::BeginDisabled(!applyEnabled); if(ImGui::Button("Apply")) { applyEnabled = false; Options::GetInstance().Apply(); } ImGui::EndDisabled(); ImGui::SameLine(); if(ImGui::Button("Cancel")) { isOpen = false; ImGui::CloseCurrentPopup(); } ImGui::EndPopup(); return true; }