diff options
author | Mikayla Hutchinson <m.j.hutchinson@gmail.com> | 2018-07-13 20:44:05 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-07-13 20:44:05 +0300 |
commit | dba5955385d8d3c44cd5f38886fc94398619edea (patch) | |
tree | 6aae6465f3baac71ff15e2d92f7ddccf42b46814 | |
parent | af2540cb0b6a1c1e82c4f7ec8949565f6677e631 (diff) | |
parent | 87c63ee963c1d666b5762994e2d3b6a7709f6053 (diff) |
Merge pull request #841 from mhutch/checkbox-mnemonic
Add mnemonic option to checkboxes
-rw-r--r-- | Xwt.Gtk/Xwt.GtkBackend/CheckBoxBackend.cs | 3 | ||||
-rw-r--r-- | Xwt.WPF/Xwt.WPFBackend/CheckBoxBackend.cs | 8 | ||||
-rw-r--r-- | Xwt.XamMac/Xwt.Mac/CheckBoxBackend.cs | 8 | ||||
-rw-r--r-- | Xwt/Xwt.Backends/ICheckBoxBackend.cs | 2 | ||||
-rw-r--r-- | Xwt/Xwt/CheckBox.cs | 24 |
5 files changed, 35 insertions, 10 deletions
diff --git a/Xwt.Gtk/Xwt.GtkBackend/CheckBoxBackend.cs b/Xwt.Gtk/Xwt.GtkBackend/CheckBoxBackend.cs index 15a37d2e..3a83ecdb 100644 --- a/Xwt.Gtk/Xwt.GtkBackend/CheckBoxBackend.cs +++ b/Xwt.Gtk/Xwt.GtkBackend/CheckBoxBackend.cs @@ -84,8 +84,9 @@ namespace Xwt.GtkBackend EventsRootWidget.SetBackgroundColor (color); } - public void SetContent (string label) + public void SetContent (string label, bool useMnemonic) { + Widget.UseUnderline = useMnemonic; Widget.Label = label; } diff --git a/Xwt.WPF/Xwt.WPFBackend/CheckBoxBackend.cs b/Xwt.WPF/Xwt.WPFBackend/CheckBoxBackend.cs index 8b3dfc8e..14c83ff5 100644 --- a/Xwt.WPF/Xwt.WPFBackend/CheckBoxBackend.cs +++ b/Xwt.WPF/Xwt.WPFBackend/CheckBoxBackend.cs @@ -49,9 +49,13 @@ namespace Xwt.WPFBackend CheckBox.Content = widget.NativeWidget; } - public void SetContent (string label) + public void SetContent (string label, bool useMnemonic) { - CheckBox.Content = new TextBlock { Text = label }; + if (useMnemonic) { + CheckBox.Content = new TextBlock { Text = label }; + } else { + CheckBox.Content = new AccessText { Text = label }; + } } public CheckBoxState State diff --git a/Xwt.XamMac/Xwt.Mac/CheckBoxBackend.cs b/Xwt.XamMac/Xwt.Mac/CheckBoxBackend.cs index 6f136132..b58f9ad1 100644 --- a/Xwt.XamMac/Xwt.Mac/CheckBoxBackend.cs +++ b/Xwt.XamMac/Xwt.Mac/CheckBoxBackend.cs @@ -28,7 +28,7 @@ using Xwt.Backends; namespace Xwt.Mac { - public class CheckBoxBackend: ViewBackend<NSButton,ICheckBoxEventSink>, ICheckBoxBackend + public class CheckBoxBackend : ViewBackend<NSButton, ICheckBoxEventSink>, ICheckBoxBackend { bool realAllowMixed; NSCellStateValue currentState = NSCellStateValue.Off; @@ -45,15 +45,15 @@ namespace Xwt.Mac button.Title = ""; button.ActivatedInternal += OnActivated; } - + #region ICheckBoxBackend implementation public void SetContent (IWidgetBackend widget) { } - public void SetContent (string label) + public void SetContent (string label, bool useMnemonic) { - Widget.Title = label; + Widget.Title = useMnemonic ? label.RemoveMnemonic () : label; ResetFittingSize (); } diff --git a/Xwt/Xwt.Backends/ICheckBoxBackend.cs b/Xwt/Xwt.Backends/ICheckBoxBackend.cs index 687d67c6..563bfdf8 100644 --- a/Xwt/Xwt.Backends/ICheckBoxBackend.cs +++ b/Xwt/Xwt.Backends/ICheckBoxBackend.cs @@ -30,7 +30,7 @@ namespace Xwt.Backends public interface ICheckBoxBackend: IWidgetBackend { void SetContent (IWidgetBackend widget); - void SetContent (string label); + void SetContent (string label, bool useMnemonic); /// <summary> /// Gets or sets the state of the checkbox. diff --git a/Xwt/Xwt/CheckBox.cs b/Xwt/Xwt/CheckBox.cs index a1b7724e..999a21b2 100644 --- a/Xwt/Xwt/CheckBox.cs +++ b/Xwt/Xwt/CheckBox.cs @@ -38,6 +38,7 @@ namespace Xwt EventHandler clicked; EventHandler toggled; string label = ""; + bool useMnemonic = true; protected new class WidgetBackendHost: Widget.WidgetBackendHost, ICheckBoxEventSink { @@ -81,11 +82,30 @@ namespace Xwt get { return label; } set { label = value; - Backend.SetContent (label); + Backend.SetContent (label, useMnemonic); OnPreferredSizeChanged (); } } + /// <summary> + /// Gets or sets a value indicating whether this <see cref="Xwt.CheckBox"/> uses a mnemonic. + /// </summary> + /// <value><c>true</c> if it uses a mnemonic; otherwise, <c>false</c>.</value> + /// <remarks> + /// When set to true, the character after the first underscore character in the Label property value is + /// interpreted as the mnemonic for that Label. + /// </remarks> + [DefaultValue (true)] + public bool UseMnemonic { + get { return useMnemonic; } + set { + if (useMnemonic == value) + return; + Backend.SetContent (label, value); + useMnemonic = value; + } + } + [DefaultValue (null)] public new Widget Content { get { return content; } @@ -111,7 +131,7 @@ namespace Xwt get { return Backend.State; } set { if (!value.IsValid ()) - throw new ArgumentOutOfRangeException ("Invalid check box state value"); + throw new ArgumentOutOfRangeException (nameof(value), "Invalid check box state value"); Backend.State = value; } } |