Compiles!

This commit is contained in:
SimoZ64
2025-05-05 22:15:45 +02:00
parent 20e8e720a6
commit b4c5c7a3e4
25 changed files with 598 additions and 422 deletions

View File

@@ -1,76 +1,76 @@
#include <SettingsWindow.hpp>
#include <fmt/core.h>
#include <nfd.hpp>
#include <log.hpp>
#include <JSONUtils.hpp>
std::string savePath;
SettingsWindow::SettingsWindow() {
settings = JSONOpenOrCreate("resources/settings.json");
savePath = JSONGetField<std::string>(settings, "general", "savePath");
SettingsWindow::SettingsWindow() : settings{JSONOpenOrCreate("resources/settings.json")} {
keyMap = inputSettings.GetMappedKeys();
savesFolder.setName(fmt::format(savesFolder.getName(), savePath));
savesFolder.setName(fmt::format("Save path: {}",
JSONGetField<std::string>(settings, "general", "savePath")));
tabs.addTab({"General", [](gui::TabItem* tab, void* userData) {
SettingsWindow* sW = (SettingsWindow*)userData;
if(sW->savesFolder.render()) {
// TODO: HANDLE FILE DIALOG savePath = QFileDialog::getExistingDirectory(this, tr("Select directory")).toStdString();
sW->savesFolder.setName(fmt::format(sW->savesFolder.getName(), savePath));
JSONSetField(sW->settings, "general", "savePath", savePath);
sW->apply.setEnabled(true);
tabs.addTab({"General", [&]() {
if(savesFolder.render()) {
NFD::Guard guard;
NFD::UniquePath outPath;
auto result = NFD::PickFolder(outPath);
if(result == NFD_CANCEL)
return;
if(result == NFD_ERROR)
Util::panic("Error: {}", NFD::GetError());
savesFolder.setName(fmt::format("Save path: {}", outPath.get()));
JSONSetField(settings, "general", "savePath", outPath.get());
apply.setEnabled(true);
}
}, this});
}});
tabs.addTab({"CPU", [](gui::TabItem* tab, void* userData) {
SettingsWindow* sW = (SettingsWindow*)userData;
CPUSettings& cS = sW->cpuSettings;
gui::PushButton& apply = sW->apply;
if(cS.render()) {
if(cS.getModified())
sW->apply.setEnabled(true);
}
}, this});
tabs.addTab({"Audio", [](gui::TabItem* tab, void* userData) {
SettingsWindow* sW = (SettingsWindow*)userData;
AudioSettings& aS = sW->audioSettings;
gui::PushButton& apply = sW->apply;
if(aS.render()) {
if(aS.getModified())
tabs.addTab({"CPU", [&]() {
if(cpuSettings.render()) {
if(cpuSettings.getModified())
apply.setEnabled(true);
}
}, this});
}});
tabs.addTab({"Input", [](gui::TabItem* tab, void* userData) {
SettingsWindow* sW = (SettingsWindow*)userData;
sW->inputSettings.render();
InputSettings& iS = sW->inputSettings;
gui::PushButton& apply = sW->apply;
if(iS.render()) {
if(iS.getModified())
tabs.addTab({"Audio", [&]() {
if(audioSettings.render()) {
if(audioSettings.getModified())
apply.setEnabled(true);
}
}, this});
}});
tabs.addTab({"Input", [&]() {
if(inputSettings.render()) {
if(inputSettings.getModified())
apply.setEnabled(true);
}
}});
apply.setEnabled(false);
canvas.setFunc([&]() {
tabs.render();
if(apply.render()) {
auto newMap = inputSettings.GetMappedKeys();
if (keyMap != newMap)
keyMap = newMap;
apply.setEnabled(false);
std::ofstream file("resources/settings.json");
file << settings;
file.close();
}
});
}
bool SettingsWindow::render() {
tabs.render();
if(apply.render()) {
auto newMap = inputSettings.GetMappedKeys();
if (keyMap != newMap)
keyMap = newMap;
apply.setEnabled(false);
std::ofstream file("resources/settings.json");
file << settings;
file.close();
}
if(canvas.render())
return true;
return false;
}