diff --git a/HellionChat/Resources/HellionStrings.Designer.cs b/HellionChat/Resources/HellionStrings.Designer.cs index 1402a1d..784a394 100644 --- a/HellionChat/Resources/HellionStrings.Designer.cs +++ b/HellionChat/Resources/HellionStrings.Designer.cs @@ -276,6 +276,11 @@ internal class HellionStrings internal static string Tabs_Presets_Linkshell => Get(nameof(Tabs_Presets_Linkshell)); internal static string Tabs_Presets_Linkshell_Hint => Get(nameof(Tabs_Presets_Linkshell_Hint)); + // Hellion Chat — v1.2.0 per-tab icon override + internal static string Tabs_Icon_Label => Get(nameof(Tabs_Icon_Label)); + internal static string Tabs_Icon_HelpMarker => Get(nameof(Tabs_Icon_HelpMarker)); + internal static string Tabs_Icon_DefaultOption => Get(nameof(Tabs_Icon_DefaultOption)); + // Hellion Chat — v0.6.0 chat colour presets (display labels) internal static string ChatColourPresets_Default => Get(nameof(ChatColourPresets_Default)); internal static string ChatColourPresets_HighContrast => Get(nameof(ChatColourPresets_HighContrast)); diff --git a/HellionChat/Resources/HellionStrings.de.resx b/HellionChat/Resources/HellionStrings.de.resx index 9b9c9bf..6957f51 100644 --- a/HellionChat/Resources/HellionStrings.de.resx +++ b/HellionChat/Resources/HellionStrings.de.resx @@ -561,6 +561,17 @@ Wenn du mehrere Linkshells benutzt, empfiehlt der Maintainer einen Tab pro Shell für eine sauberere Übersicht. Tab duplizieren und je Kopie die Kanalauswahl einschränken. + + + + Tab-Icon + + + FontAwesome-Glyph für die Sidebar. Default greift auf Tab-Name oder Channel-Typ. + + + (Default-Mapping) + Klassik (Chat 2 Default) diff --git a/HellionChat/Resources/HellionStrings.resx b/HellionChat/Resources/HellionStrings.resx index edba1d7..67a1f16 100644 --- a/HellionChat/Resources/HellionStrings.resx +++ b/HellionChat/Resources/HellionStrings.resx @@ -561,6 +561,17 @@ If you use multiple linkshells, the maintainer recommends one tab per shell for cleaner readability. Duplicate this tab and narrow the channel selection per copy. + + + + Tab-Icon + + + FontAwesome-Glyph für die Sidebar. Default greift auf Tab-Name oder Channel-Typ. + + + (Default-Mapping) + Klassik (Chat 2 Default) diff --git a/HellionChat/Ui/SettingsTabs/Tabs.cs b/HellionChat/Ui/SettingsTabs/Tabs.cs index 8ad2bb0..75eea88 100755 --- a/HellionChat/Ui/SettingsTabs/Tabs.cs +++ b/HellionChat/Ui/SettingsTabs/Tabs.cs @@ -91,6 +91,40 @@ internal sealed class Tabs : ISettingsTab } ImGui.InputText(Language.Options_Tabs_Name, ref tab.Name, 512, ImGuiInputTextFlags.EnterReturnsTrue); + + // v1.2.0 — Per-Tab Icon-Override. Default-Mapping greift falls nichts gesetzt. + ImGui.TextUnformatted(HellionStrings.Tabs_Icon_Label); + ImGui.SameLine(); + ImGuiUtil.HelpMarker(HellionStrings.Tabs_Icon_HelpMarker); + + var iconCurrent = string.IsNullOrEmpty(tab.Icon) ? "" : tab.Icon; + var iconPreview = iconCurrent.Length == 0 + ? HellionStrings.Tabs_Icon_DefaultOption + : iconCurrent; + using (var combo = ImRaii.Combo($"##icon-{i}", iconPreview)) + { + if (combo.Success) + { + // Erste Option: Default (löscht Icon, lässt Mapping greifen). + if (ImGui.Selectable(HellionStrings.Tabs_Icon_DefaultOption, iconCurrent.Length == 0)) + { + tab.Icon = null; + } + + ImGui.Separator(); + + // Pool-Optionen aus TabIconGlyphResolver.PickerOptions (Single-Source-of-Truth). + foreach (var option in TabIconGlyphResolver.PickerOptions) + { + var isSelected = string.Equals(iconCurrent, option, StringComparison.OrdinalIgnoreCase); + if (ImGui.Selectable(option, isSelected)) + { + tab.Icon = option; + } + } + } + } + ImGui.Checkbox(Language.Options_Tabs_ShowTimestamps, ref tab.DisplayTimestamp); ImGui.Checkbox(Language.Options_Tabs_PopOut, ref tab.PopOut); if (tab.PopOut)