Files
sessionzero-cs/SzGui/Windows/SettingsWindow.cs
2026-02-25 00:08:27 -06:00

77 lines
2.0 KiB
C#

using System.Numerics;
using ImGuiNET;
namespace SzGui.Windows;
public class SettingsWindow : SzGuiWindowBase
{
private bool _settingsDirty = false;
public SettingsWindow() => WindowName = "App Settings";
protected override void RenderContent()
{
ImGui.SeparatorText("Application Settings");
foreach (var setting in ApplicationSettings.GetAllSettings().ToList())
{
string key = setting.Key;
object val = setting.Value;
bool changed = false;
if (val is bool boolVal)
{
if (ImGui.Checkbox(key, ref boolVal))
{
ApplicationSettings.SetSettingValue(key, boolVal);
changed = true;
}
}
else if (val is float floatVal || val is double)
{
float f = Convert.ToSingle(val);
if (ImGui.DragFloat(key, ref f, 0.01f))
{
ApplicationSettings.SetSettingValue(key, f);
changed = true;
}
}
else if (val is string strVal)
{
if (ImGui.InputText(key, ref strVal, 256))
{
ApplicationSettings.SetSettingValue(key, strVal);
changed = true;
}
}
if (ImGui.IsItemHovered())
{
ImGui.SetTooltip($"Internal Key: {key}");
}
if (changed) _settingsDirty = true;
}
ImGui.Separator();
if (ImGui.Button("Save Changes"))
{
ApplicationSettings.SaveSettings();
_settingsDirty = false;
}
ImGui.SameLine();
if (ImGui.Button("Reload from Disk"))
{
ApplicationSettings.LoadSettings();
}
if (_settingsDirty)
{
ImGui.TextColored(new Vector4(1, 0.5f, 0, 1), "You have unsaved changes!");
}
}
}