Compiles!
This commit is contained in:
@@ -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;
|
||||
}
|
||||
Reference in New Issue
Block a user