feat: settings window rework

This commit is contained in:
goaaats 2023-01-06 22:32:44 +01:00
parent 0dc58cce56
commit bc3dcdfad7
No known key found for this signature in database
GPG key ID: 49E2AA8C6A76498B
22 changed files with 1724 additions and 1084 deletions

View file

@ -0,0 +1,72 @@
using System;
using System.Diagnostics.CodeAnalysis;
namespace Dalamud.Interface.Internal.Windows.Settings;
[SuppressMessage("StyleCop.CSharp.DocumentationRules", "SA1600:Elements should be documented", Justification = "Internals")]
public abstract class SettingsTab : IDisposable
{
public abstract SettingsEntry[] Entries { get; }
public abstract string Title { get; }
public bool IsOpen { get; set; } = false;
public virtual bool IsVisible { get; } = true;
public virtual void OnOpen()
{
// ignored
}
public virtual void OnClose()
{
foreach (var settingsEntry in this.Entries)
{
settingsEntry.OnClose();
}
}
public virtual void Draw()
{
foreach (var settingsEntry in this.Entries)
{
if (settingsEntry.IsVisible)
settingsEntry.Draw();
ImGuiHelpers.ScaledDummy(5);
}
ImGuiHelpers.ScaledDummy(15);
}
public virtual void Load()
{
foreach (var settingsEntry in this.Entries)
{
settingsEntry.Load();
}
}
public virtual void Save()
{
foreach (var settingsEntry in this.Entries)
{
settingsEntry.Save();
}
}
public virtual void Discard()
{
foreach (var settingsEntry in this.Entries)
{
settingsEntry.Load();
}
}
/// <inheritdoc/>
public virtual void Dispose()
{
// ignored
}
}