table layout for color settings

This commit is contained in:
choco
2025-10-03 09:50:37 +02:00
parent 05872c285c
commit 4862921b03

View File

@@ -978,45 +978,66 @@ public class SettingsUi : WindowMediatorSubscriberBase
var colorNames = new[]
{
("LightlessPurple", "Lightless Purple", "Primary colors"),
("LightlessPurpleActive", "Lightless Purple Active", "Primary colors"),
("LightlessPurpleDefault", "Lightless Purple Inactive", "Primary colors"),
("LightlessBlue", "Lightless Blue", "Secondary colors"),
("LightlessPurple", "Lightless Purple", "Section titles and dividers"),
("LightlessPurpleActive", "Lightless Purple Active", "Active tabs and hover highlights"),
("LightlessPurpleDefault", "Lightless Purple Inactive", "Inactive tabs and default dividers"),
("LightlessBlue", "Lightless Blue", "On/true toggles and 'Upload complete' status"),
("LightlessGreen", "Lightless Green", "Active elements"),
("LightlessGreen", "Lightless Green", "Join buttons and success messages"),
("LightlessYellow", "Lightless Yellow", "Warning colors"),
("LightlessYellow2", "Lightless Yellow 2", "Warning colors"),
("PairBlue", "Pair Blue", "Pair UI elements"),
("PairBlue", "Pair Blue", "Syncshell headers, toggle highlights, and moderator actions"),
("DimRed", "Dim Red", "Error and offline")
("DimRed", "Dim Red", "Error and offline colors")
};
foreach (var (colorKey, displayName, description) in colorNames)
if (ImGui.BeginTable("##ColorTable", 3, ImGuiTableFlags.Borders | ImGuiTableFlags.RowBg | ImGuiTableFlags.SizingFixedFit))
{
var currentColor = UIColors.Get(colorKey);
var colorToEdit = currentColor;
ImGui.TableSetupColumn("Color", ImGuiTableColumnFlags.WidthStretch);
ImGui.TableSetupColumn("Description", ImGuiTableColumnFlags.WidthStretch);
ImGui.TableSetupColumn("Reset", ImGuiTableColumnFlags.WidthFixed, 40);
ImGui.TableHeadersRow();
ImGui.AlignTextToFramePadding();
if (ImGui.ColorEdit4($"##color_{colorKey}", ref colorToEdit, ImGuiColorEditFlags.NoInputs | ImGuiColorEditFlags.AlphaPreviewHalf))
foreach (var (colorKey, displayName, description) in colorNames)
{
UIColors.Set(colorKey, colorToEdit);
}
ImGui.SameLine();
ImGui.TextUnformatted($"{displayName} - {description}");
if (UIColors.IsCustom(colorKey))
{
ImGui.SameLine();
if (_uiShared.IconTextButton(FontAwesomeIcon.Undo, $"Reset {colorKey}"))
ImGui.TableNextRow();
// olor column
ImGui.TableSetColumnIndex(0);
var currentColor = UIColors.Get(colorKey);
var colorToEdit = currentColor;
if (ImGui.ColorEdit4($"##color_{colorKey}", ref colorToEdit, ImGuiColorEditFlags.NoInputs | ImGuiColorEditFlags.AlphaPreviewHalf))
{
UIColors.Reset(colorKey);
UIColors.Set(colorKey, colorToEdit);
}
ImGui.SameLine();
ImGui.AlignTextToFramePadding();
ImGui.TextUnformatted(displayName);
// description column
ImGui.TableSetColumnIndex(1);
ImGui.AlignTextToFramePadding();
ImGui.TextUnformatted(description);
// actions column
ImGui.TableSetColumnIndex(2);
if (UIColors.IsCustom(colorKey))
{
using var resetId = ImRaii.PushId($"Reset_{colorKey}");
var availableWidth = ImGui.GetContentRegionAvail().X;
using (ImRaii.PushFont(UiBuilder.IconFont))
{
if (ImGui.Button(FontAwesomeIcon.Undo.ToIconString(), new Vector2(availableWidth, 0)))
{
UIColors.Reset(colorKey);
}
}
UiSharedService.AttachToolTip("Reset this color to default");
}
UiSharedService.AttachToolTip("Reset this color to default");
}
ImGui.EndTable();
}
ImGui.Spacing();
@@ -2263,4 +2284,4 @@ public class SettingsUi : WindowMediatorSubscriberBase
_wasOpen = IsOpen;
IsOpen = false;
}
}
}