From 2ddc5efbefafdfb61931a2c41657402d1be97775 Mon Sep 17 00:00:00 2001 From: pizzaboxer Date: Sat, 29 Jun 2024 23:20:28 +0400 Subject: [PATCH] Add RTL support for WinForms dialogs --- Bloxstrap/Locale.cs | 4 ++++ .../Elements/Bootstrapper/Base/WinFormsDialogBase.cs | 11 +++++++++++ Bloxstrap/UI/Elements/Bootstrapper/VistaDialog.cs | 1 + 3 files changed, 16 insertions(+) diff --git a/Bloxstrap/Locale.cs b/Bloxstrap/Locale.cs index a984ea5..619b20b 100644 --- a/Bloxstrap/Locale.cs +++ b/Bloxstrap/Locale.cs @@ -8,6 +8,8 @@ namespace Bloxstrap { public static CultureInfo CurrentCulture = CultureInfo.InvariantCulture; + public static bool RightToLeft { get; private set; } = false; + public static readonly Dictionary SupportedLocales = new() { { "nil", Strings.Enums_Theme_Default }, // /shrug @@ -83,6 +85,8 @@ namespace Bloxstrap if (identifier == "ar" || identifier == "he") { + RightToLeft = true; + handler = new((sender, _) => { var window = (Window)sender; diff --git a/Bloxstrap/UI/Elements/Bootstrapper/Base/WinFormsDialogBase.cs b/Bloxstrap/UI/Elements/Bootstrapper/Base/WinFormsDialogBase.cs index d59bdc5..a66352f 100644 --- a/Bloxstrap/UI/Elements/Bootstrapper/Base/WinFormsDialogBase.cs +++ b/Bloxstrap/UI/Elements/Bootstrapper/Base/WinFormsDialogBase.cs @@ -94,6 +94,17 @@ namespace Bloxstrap.UI.Elements.Bootstrapper.Base { Text = App.Settings.Prop.BootstrapperTitle; Icon = App.Settings.Prop.BootstrapperIcon.GetIcon(); + + if (Locale.RightToLeft) + { + this.RightToLeft = RightToLeft.Yes; + this.RightToLeftLayout = true; + } + else + { + this.RightToLeft = RightToLeft.No; + this.RightToLeftLayout = false; + } } #region WinForms event handlers diff --git a/Bloxstrap/UI/Elements/Bootstrapper/VistaDialog.cs b/Bloxstrap/UI/Elements/Bootstrapper/VistaDialog.cs index c228bf8..00cd332 100644 --- a/Bloxstrap/UI/Elements/Bootstrapper/VistaDialog.cs +++ b/Bloxstrap/UI/Elements/Bootstrapper/VistaDialog.cs @@ -75,6 +75,7 @@ namespace Bloxstrap.UI.Elements.Bootstrapper { Icon = new TaskDialogIcon(App.Settings.Prop.BootstrapperIcon.GetIcon()), Caption = App.Settings.Prop.BootstrapperTitle, + RightToLeftLayout = Locale.RightToLeft, Buttons = { TaskDialogButton.Cancel }, ProgressBar = new TaskDialogProgressBar()