From 0bec8cf759a8e678c81888da804a48fb3c592b5f Mon Sep 17 00:00:00 2001 From: Liza Carvelli Date: Sat, 11 Feb 2023 14:31:43 +0100 Subject: [PATCH] Update window titles on language change --- Pal.Client/ILanguageChanged.cs | 13 +++++++++++++ Pal.Client/Plugin.cs | 6 +++++- Pal.Client/Windows/AgreementWindow.cs | 8 ++++++-- Pal.Client/Windows/ConfigWindow.cs | 13 ++++++++++--- Pal.Client/Windows/StatisticsWindow.cs | 10 ++++++++-- 5 files changed, 42 insertions(+), 8 deletions(-) create mode 100644 Pal.Client/ILanguageChanged.cs diff --git a/Pal.Client/ILanguageChanged.cs b/Pal.Client/ILanguageChanged.cs new file mode 100644 index 0000000..8f3f519 --- /dev/null +++ b/Pal.Client/ILanguageChanged.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Pal.Client +{ + internal interface ILanguageChanged + { + void LanguageChanged(); + } +} diff --git a/Pal.Client/Plugin.cs b/Pal.Client/Plugin.cs index a7d56a4..6e3075c 100644 --- a/Pal.Client/Plugin.cs +++ b/Pal.Client/Plugin.cs @@ -26,6 +26,7 @@ using System.Text.RegularExpressions; using System.Threading.Tasks; using Pal.Client.Extensions; using Pal.Client.Properties; +using ECommons; namespace Pal.Client { @@ -250,7 +251,10 @@ namespace Pal.Client } private void LanguageChanged(string langcode) - => Localization.Culture = new CultureInfo(langcode); + { + Localization.Culture = new CultureInfo(langcode); + Service.WindowSystem?.Windows.OfType().Each(w => w.LanguageChanged()); + } private void OnFrameworkUpdate(Framework framework) { diff --git a/Pal.Client/Windows/AgreementWindow.cs b/Pal.Client/Windows/AgreementWindow.cs index 617cc90..40af15c 100644 --- a/Pal.Client/Windows/AgreementWindow.cs +++ b/Pal.Client/Windows/AgreementWindow.cs @@ -7,11 +7,12 @@ using Pal.Client.Properties; namespace Pal.Client.Windows { - internal class AgreementWindow : Window + internal class AgreementWindow : Window, ILanguageChanged { + private const string WindowId = "###PalPalaceAgreement"; private int _choice; - public AgreementWindow() : base($"{Localization.Palace_Pal}###PalPalaceAgreement") + public AgreementWindow() : base(WindowId) { Flags = ImGuiWindowFlags.NoCollapse; Size = new Vector2(500, 500); @@ -26,6 +27,9 @@ namespace Pal.Client.Windows }; } + public void LanguageChanged() + => WindowName = $"{Localization.Palace_Pal}{WindowId}"; + public override void OnOpen() { _choice = -1; diff --git a/Pal.Client/Windows/ConfigWindow.cs b/Pal.Client/Windows/ConfigWindow.cs index 5c9628c..8681c71 100644 --- a/Pal.Client/Windows/ConfigWindow.cs +++ b/Pal.Client/Windows/ConfigWindow.cs @@ -24,6 +24,7 @@ namespace Pal.Client.Windows { internal class ConfigWindow : Window { + private const string WindowId = "###PalPalaceConfig"; private int _mode; private int _renderer; private bool _showTraps; @@ -45,10 +46,10 @@ namespace Pal.Client.Windows private FileDialogManager _importDialog; private FileDialogManager _exportDialog; - public ConfigWindow() : base($"{Localization.Palace_Pal}###PalPalaceConfig") + public ConfigWindow() : base(WindowId) { - var version = typeof(Plugin).Assembly.GetName().Version!.ToString(2); - WindowName = $"{Localization.Palace_Pal} v{version}###PalPalaceConfig"; + LanguageChanged(); + Size = new Vector2(500, 400); SizeCondition = ImGuiCond.FirstUseEver; Position = new Vector2(300, 300); @@ -58,6 +59,12 @@ namespace Pal.Client.Windows _exportDialog = new FileDialogManager { AddedWindowFlags = ImGuiWindowFlags.NoCollapse | ImGuiWindowFlags.NoDocking }; } + public void LanguageChanged() + { + var version = typeof(Plugin).Assembly.GetName().Version!.ToString(2); + WindowName = $"{Localization.Palace_Pal} v{version}{WindowId}"; + } + public override void OnOpen() { var config = Service.Configuration; diff --git a/Pal.Client/Windows/StatisticsWindow.cs b/Pal.Client/Windows/StatisticsWindow.cs index e61351a..264640d 100644 --- a/Pal.Client/Windows/StatisticsWindow.cs +++ b/Pal.Client/Windows/StatisticsWindow.cs @@ -14,12 +14,15 @@ using Pal.Client.Properties; namespace Pal.Client.Windows { - internal class StatisticsWindow : Window + internal class StatisticsWindow : Window, ILanguageChanged { + private const string WindowId = "###PalacePalStats"; private SortedDictionary _territoryStatistics = new(); - public StatisticsWindow() : base($"{Localization.Palace_Pal} - {Localization.Statistics}###PalacePalStats") + public StatisticsWindow() : base(WindowId) { + LanguageChanged(); + Size = new Vector2(500, 500); SizeCondition = ImGuiCond.FirstUseEver; Flags = ImGuiWindowFlags.AlwaysAutoResize; @@ -30,6 +33,9 @@ namespace Pal.Client.Windows } } + public void LanguageChanged() + => WindowName = $"{Localization.Palace_Pal} - {Localization.Statistics}{WindowId}"; + public override void Draw() { if (ImGui.BeginTabBar("Tabs"))