satdump/src-interface/settings.cpp
2022-03-30 15:41:23 +02:00

48 lines
No EOL
1.7 KiB
C++

#include "settings.h"
#include "imgui/imgui.h"
#include <string>
#include "core/params.h"
#include "core/config.h"
#include "main_ui.h"
namespace satdump
{
namespace settings
{
std::vector<std::pair<std::string, satdump::params::EditableParameter>> settings_user_interface;
void setup()
{
nlohmann::ordered_json params = satdump::config::main_cfg["user_interface"];
for (nlohmann::detail::iteration_proxy_value<nlohmann::detail::iter_impl<nlohmann::ordered_json>> cfg : params.items())
{
// Check setting type, and create an EditableParameter if possible
if (cfg.value().contains("type") && cfg.value().contains("value") && cfg.value().contains("name"))
settings_user_interface.push_back({cfg.key(), params::EditableParameter(nlohmann::json(cfg.value()))});
}
}
void render()
{
if (ImGui::CollapsingHeader("User Interface"))
{
if (ImGui::BeginTable("##satdumpuisettings", 2, ImGuiTableFlags_Borders | ImGuiTableFlags_RowBg))
{
for (std::pair<std::string, satdump::params::EditableParameter> &p : settings_user_interface)
p.second.draw();
ImGui::EndTable();
}
}
if (ImGui::Button("Save"))
{
for (std::pair<std::string, satdump::params::EditableParameter> &p : settings_user_interface)
satdump::config::main_cfg["user_interface"][p.first]["value"] = p.second.getValue();
config::saveUserConfig();
}
}
}
}