From 2cdf9b79a273f87fe94d8a3e4010ffc2f1cd0dfe Mon Sep 17 00:00:00 2001 From: Peter Wagner Date: Sun, 17 Sep 2023 18:54:12 +0100 Subject: [PATCH 1/4] * Cleanup --- ...KryptonRibbonGroupThemeComboBoxDesigner.cs | 481 ++++++++++++++++++ .../KryptonRibbonGroupTripleDesigner.cs | 4 +- .../KryptonRibbonGroupThemeComboBox.cs | 15 + .../KryptonRibbonGroupThemeSelector.cs | 30 -- 4 files changed, 498 insertions(+), 32 deletions(-) create mode 100644 Source/Krypton Components/Krypton.Ribbon/Designers/Designers/KryptonRibbonGroupThemeComboBoxDesigner.cs delete mode 100644 Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeSelector.cs diff --git a/Source/Krypton Components/Krypton.Ribbon/Designers/Designers/KryptonRibbonGroupThemeComboBoxDesigner.cs b/Source/Krypton Components/Krypton.Ribbon/Designers/Designers/KryptonRibbonGroupThemeComboBoxDesigner.cs new file mode 100644 index 000000000..088cf0af2 --- /dev/null +++ b/Source/Krypton Components/Krypton.Ribbon/Designers/Designers/KryptonRibbonGroupThemeComboBoxDesigner.cs @@ -0,0 +1,481 @@ +#region BSD License +/* + * + * New BSD 3-Clause License (https://github.com/Krypton-Suite/Standard-Toolkit/blob/master/LICENSE) + * Modifications by Peter Wagner(aka Wagnerp) & Simon Coghlan(aka Smurf-IV), et al. 2023 - 2023. All rights reserved. + * + */ +#endregion + +namespace Krypton.Ribbon +{ + internal class KryptonRibbonGroupThemeComboBoxDesigner : ComponentDesigner, IKryptonDesignObject + { + #region Instance Fields + private IDesignerHost _designerHost; + private IComponentChangeService _changeService; + private KryptonRibbonGroupThemeComboBox _ribbonThemeComboBox; + private DesignerVerbCollection _verbs; + private DesignerVerb _toggleHelpersVerb; + private DesignerVerb _moveFirstVerb; + private DesignerVerb _movePrevVerb; + private DesignerVerb _moveNextVerb; + private DesignerVerb _moveLastVerb; + private DesignerVerb _deleteComboBoxVerb; + private ContextMenuStrip? _cms; + private ToolStripMenuItem _toggleHelpersMenu; + private ToolStripMenuItem _visibleMenu; + private ToolStripMenuItem _moveFirstMenu; + private ToolStripMenuItem _movePreviousMenu; + private ToolStripMenuItem _moveNextMenu; + private ToolStripMenuItem _moveLastMenu; + private ToolStripMenuItem _deleteComboBoxMenu; + + #endregion + + #region Identity + /// + /// Initialize a new instance of the KryptonRibbonGroupThemeComboBoxDesigner class. + /// + public KryptonRibbonGroupThemeComboBoxDesigner() + { + } + #endregion + + #region Public + /// + /// Initializes the designer with the specified component. + /// + /// The IComponent to associate the designer with. + public override void Initialize([DisallowNull] IComponent component) + { + // Let base class do standard stuff + base.Initialize(component); + + Debug.Assert(component != null); + + // Cast to correct type + _ribbonThemeComboBox = component as KryptonRibbonGroupThemeComboBox; + if (_ribbonThemeComboBox != null) + { + _ribbonThemeComboBox.ComboBoxDesigner = this; + + // Update designer properties with actual starting values + Visible = _ribbonThemeComboBox.Visible; + Enabled = _ribbonThemeComboBox.Enabled; + + // Update visible/enabled to always be showing/enabled at design time + _ribbonThemeComboBox.Visible = true; + _ribbonThemeComboBox.Enabled = true; + + // Tell the embedded text box it is in design mode + _ribbonThemeComboBox.ComboBox.InRibbonDesignMode = true; + + // Hook into events + _ribbonThemeComboBox.DesignTimeContextMenu += OnContextMenu; + } + + // Get access to the services + _designerHost = (IDesignerHost)GetService(typeof(IDesignerHost)); + _changeService = (IComponentChangeService)GetService(typeof(IComponentChangeService)); + + // We need to know when we are being removed/changed + _changeService.ComponentChanged += OnComponentChanged; + } + + /// + /// Gets the design-time verbs supported by the component that is associated with the designer. + /// + public override DesignerVerbCollection Verbs + { + get + { + UpdateVerbStatus(); + return _verbs; + } + } + + /// + /// Gets and sets if the object is enabled. + /// + public bool DesignEnabled + { + get => Enabled; + set => Enabled = value; + } + + /// + /// Gets and sets if the object is visible. + /// + public bool DesignVisible + { + get => Visible; + set => Visible = value; + } + #endregion + + #region Protected + /// + /// Releases all resources used by the component. + /// + /// true to release both managed and unmanaged resources; false to release only unmanaged resources. + protected override void Dispose(bool disposing) + { + try + { + if (disposing) + { + // Unhook from events + _ribbonThemeComboBox.DesignTimeContextMenu -= OnContextMenu; + _changeService.ComponentChanged -= OnComponentChanged; + } + } + finally + { + // Must let base class do standard stuff + base.Dispose(disposing); + } + } + + /// + /// Adjusts the set of properties the component exposes through a TypeDescriptor. + /// + /// An IDictionary containing the properties for the class of the component. + protected override void PreFilterProperties(IDictionary properties) + { + base.PreFilterProperties(properties); + + // Setup the array of properties we override + var attributes = Array.Empty(); + string[] strArray = { nameof(Visible), nameof(Enabled) }; + + // Adjust our list of properties + for (var i = 0; i < strArray.Length; i++) + { + var descrip = (PropertyDescriptor)properties[strArray[i]]; + if (descrip != null) + { + properties[strArray[i]] = TypeDescriptor.CreateProperty(typeof(KryptonRibbonGroupThemeComboBoxDesigner), descrip, attributes); + } + } + } + #endregion + + #region Internal + internal bool Visible { get; set; } + + internal bool Enabled { get; set; } + + #endregion + + #region Implementation + private void ResetVisible() => Visible = true; + + private bool ShouldSerializeVisible() => !Visible; + + private void ResetEnabled() => Enabled = true; + + private bool ShouldSerializeEnabled() => !Enabled; + + private void UpdateVerbStatus() + { + // Create verbs first time around + if (_verbs == null) + { + _verbs = new DesignerVerbCollection(); + _toggleHelpersVerb = new DesignerVerb(@"Toggle Helpers", OnToggleHelpers); + _moveFirstVerb = new DesignerVerb(@"Move ComboBox First", OnMoveFirst); + _movePrevVerb = new DesignerVerb(@"Move ComboBox Previous", OnMovePrevious); + _moveNextVerb = new DesignerVerb(@"Move ComboBox Next", OnMoveNext); + _moveLastVerb = new DesignerVerb(@"Move ComboBox Last", OnMoveLast); + _deleteComboBoxVerb = new DesignerVerb(@"Delete ThemeComboBox", OnDeleteThemeComboBox); + _verbs.AddRange(new[] { _toggleHelpersVerb, _moveFirstVerb, _movePrevVerb, + _moveNextVerb, _moveLastVerb, _deleteComboBoxVerb }); + } + + var moveFirst = false; + var movePrev = false; + var moveNext = false; + var moveLast = false; + + if (_ribbonThemeComboBox.Ribbon != null) + { + var items = ParentItems; + moveFirst = items.IndexOf(_ribbonThemeComboBox) > 0; + movePrev = items.IndexOf(_ribbonThemeComboBox) > 0; + moveNext = items.IndexOf(_ribbonThemeComboBox) < (items.Count - 1); + moveLast = items.IndexOf(_ribbonThemeComboBox) < (items.Count - 1); + } + + _moveFirstVerb.Enabled = moveFirst; + _movePrevVerb.Enabled = movePrev; + _moveNextVerb.Enabled = moveNext; + _moveLastVerb.Enabled = moveLast; + } + + private void OnToggleHelpers(object sender, EventArgs e) + { + // Invert the current toggle helper mode + if (_ribbonThemeComboBox.Ribbon != null) + { + _ribbonThemeComboBox.Ribbon.InDesignHelperMode = !_ribbonThemeComboBox.Ribbon.InDesignHelperMode; + } + } + + private void OnMoveFirst(object sender, EventArgs e) + { + if (_ribbonThemeComboBox.Ribbon != null) + { + // Get access to the parent collection of items + var items = ParentItems; + + // Use a transaction to support undo/redo actions + DesignerTransaction transaction = _designerHost.CreateTransaction(@"KryptonRibbonGroupThemeComboBoxBox MoveFirst"); + + try + { + // Get access to the Items property + MemberDescriptor propertyItems = TypeDescriptor.GetProperties(_ribbonThemeComboBox.RibbonContainer)[@"Items"]; + + RaiseComponentChanging(propertyItems); + + // Move position of the combobox + items.Remove(_ribbonThemeComboBox); + items.Insert(0, _ribbonThemeComboBox); + UpdateVerbStatus(); + + RaiseComponentChanged(propertyItems, null, null); + } + finally + { + // If we managed to create the transaction, then do it + transaction?.Commit(); + } + } + } + + private void OnMovePrevious(object sender, EventArgs e) + { + if (_ribbonThemeComboBox.Ribbon != null) + { + // Get access to the parent collection of items + var items = ParentItems; + + // Use a transaction to support undo/redo actions + DesignerTransaction transaction = _designerHost.CreateTransaction(@"KryptonRibbonGroupThemeComboBox MovePrevious"); + + try + { + // Get access to the Items property + MemberDescriptor propertyItems = TypeDescriptor.GetProperties(_ribbonThemeComboBox.RibbonContainer)[@"Items"]; + + RaiseComponentChanging(propertyItems); + + // Move position of the combotextbox + var index = items.IndexOf(_ribbonThemeComboBox) - 1; + index = Math.Max(index, 0); + items.Remove(_ribbonThemeComboBox); + items.Insert(index, _ribbonThemeComboBox); + UpdateVerbStatus(); + + RaiseComponentChanged(propertyItems, null, null); + } + finally + { + // If we managed to create the transaction, then do it + transaction?.Commit(); + } + } + } + + private void OnMoveNext(object sender, EventArgs e) + { + if (_ribbonThemeComboBox.Ribbon != null) + { + // Get access to the parent collection of items + var items = ParentItems; + + // Use a transaction to support undo/redo actions + DesignerTransaction transaction = _designerHost.CreateTransaction(@"KryptonRibbonGroupThemeComboBox MoveNext"); + + try + { + // Get access to the Items property + MemberDescriptor propertyItems = TypeDescriptor.GetProperties(_ribbonThemeComboBox.RibbonContainer)[@"Items"]; + + RaiseComponentChanging(propertyItems); + + // Move position of the combobox + var index = items.IndexOf(_ribbonThemeComboBox) + 1; + index = Math.Min(index, items.Count - 1); + items.Remove(_ribbonThemeComboBox); + items.Insert(index, _ribbonThemeComboBox); + UpdateVerbStatus(); + + RaiseComponentChanged(propertyItems, null, null); + } + finally + { + // If we managed to create the transaction, then do it + transaction?.Commit(); + } + } + } + + private void OnMoveLast(object sender, EventArgs e) + { + if (_ribbonThemeComboBox.Ribbon != null) + { + // Get access to the parent collection of items + var items = ParentItems; + + // Use a transaction to support undo/redo actions + DesignerTransaction transaction = _designerHost.CreateTransaction(@"KryptonRibbonGroupThemeComboBox MoveLast"); + + try + { + // Get access to the Items property + MemberDescriptor propertyItems = TypeDescriptor.GetProperties(_ribbonThemeComboBox.RibbonContainer)[@"Items"]; + + RaiseComponentChanging(propertyItems); + + // Move position of the combobox + items.Remove(_ribbonThemeComboBox); + items.Insert(items.Count, _ribbonThemeComboBox); + UpdateVerbStatus(); + + RaiseComponentChanged(propertyItems, null, null); + } + finally + { + // If we managed to create the transaction, then do it + transaction?.Commit(); + } + } + } + + private void OnDeleteThemeComboBox(object sender, EventArgs e) + { + if (_ribbonThemeComboBox.Ribbon != null) + { + // Get access to the parent collection of items + var items = ParentItems; + + // Use a transaction to support undo/redo actions + DesignerTransaction transaction = _designerHost.CreateTransaction(@"KryptonRibbonGroupThemeComboBox DeleteThemeComboBox"); + + try + { + // Get access to the Items property + MemberDescriptor propertyItems = TypeDescriptor.GetProperties(_ribbonThemeComboBox.RibbonContainer)[@"Items"]; + + RaiseComponentChanging(null); + RaiseComponentChanging(propertyItems); + + // Remove the combobox from the group + items.Remove(_ribbonThemeComboBox); + + // Get designer to destroy it + _designerHost.DestroyComponent(_ribbonThemeComboBox); + + RaiseComponentChanged(propertyItems, null, null); + RaiseComponentChanged(null, null, null); + } + finally + { + // If we managed to create the transaction, then do it + transaction?.Commit(); + } + } + } + + private void OnEnabled(object sender, EventArgs e) + { + if (_ribbonThemeComboBox.Ribbon != null) + { + PropertyDescriptor propertyEnabled = TypeDescriptor.GetProperties(_ribbonThemeComboBox)[nameof(Enabled)]; + var oldValue = (bool)propertyEnabled.GetValue(_ribbonThemeComboBox); + var newValue = !oldValue; + _changeService.OnComponentChanged(_ribbonThemeComboBox, null, oldValue, newValue); + propertyEnabled.SetValue(_ribbonThemeComboBox, newValue); + } + } + + private void OnVisible(object sender, EventArgs e) + { + if (_ribbonThemeComboBox.Ribbon != null) + { + PropertyDescriptor propertyVisible = TypeDescriptor.GetProperties(_ribbonThemeComboBox)[nameof(Visible)]; + var oldValue = (bool)propertyVisible.GetValue(_ribbonThemeComboBox); + var newValue = !oldValue; + _changeService.OnComponentChanged(_ribbonThemeComboBox, null, oldValue, newValue); + propertyVisible.SetValue(_ribbonThemeComboBox, newValue); + } + } + + private void OnComponentChanged(object sender, ComponentChangedEventArgs e) => UpdateVerbStatus(); + + private void OnContextMenu(object sender, MouseEventArgs e) + { + if (_ribbonThemeComboBox.Ribbon != null) + { + // Create the menu strip the first time around + if (_cms == null) + { + _cms = new ContextMenuStrip(); + _toggleHelpersMenu = new ToolStripMenuItem("Design Helpers", null, OnToggleHelpers); + _visibleMenu = new ToolStripMenuItem("Visible", null, OnVisible); + _moveFirstMenu = new ToolStripMenuItem("Move ThemeComboBox First", GenericImageResources.MoveFirst, OnMoveFirst); + _movePreviousMenu = new ToolStripMenuItem("Move ThemeComboBox Previous", GenericImageResources.MovePrevious, OnMovePrevious); + _moveNextMenu = new ToolStripMenuItem("Move ThemeComboBox Next", GenericImageResources.MoveNext, OnMoveNext); + _moveLastMenu = new ToolStripMenuItem("Move ThemeComboBox Last", GenericImageResources.MoveLast, OnMoveLast); + _deleteComboBoxMenu = new ToolStripMenuItem("Delete ThemeComboBox", GenericImageResources.Delete, OnDeleteThemeComboBox); + _cms.Items.AddRange(new ToolStripItem[] + { + _toggleHelpersMenu, new ToolStripSeparator(), + _visibleMenu, new ToolStripSeparator(), + _moveFirstMenu, _movePreviousMenu, _moveNextMenu, _moveLastMenu, new ToolStripSeparator(), + _deleteComboBoxMenu + }); + } + + // Update verbs to work out correct enable states + UpdateVerbStatus(); + + // Update menu items state from verbs + _toggleHelpersMenu.Checked = _ribbonThemeComboBox.Ribbon.InDesignHelperMode; + _visibleMenu.Checked = Visible; + _moveFirstMenu.Enabled = _moveFirstVerb.Enabled; + _movePreviousMenu.Enabled = _movePrevVerb.Enabled; + _moveNextMenu.Enabled = _moveNextVerb.Enabled; + _moveLastMenu.Enabled = _moveLastVerb.Enabled; + + // Show the context menu + if (CommonHelper.ValidContextMenuStrip(_cms)) + { + Point screenPt = _ribbonThemeComboBox.Ribbon.ViewRectangleToPoint(_ribbonThemeComboBox.ComboBoxView); + VisualPopupManager.Singleton.ShowContextMenuStrip(_cms, screenPt); + } + } + } + + private TypedRestrictCollection? ParentItems + { + get + { + switch (_ribbonThemeComboBox.RibbonContainer) + { + case KryptonRibbonGroupTriple triple: + return triple.Items; + case KryptonRibbonGroupLines lines: + return lines.Items; + default: + // Should never happen! + Debug.Assert(false); + return null; + } + } + } + #endregion + } +} \ No newline at end of file diff --git a/Source/Krypton Components/Krypton.Ribbon/Designers/Designers/KryptonRibbonGroupTripleDesigner.cs b/Source/Krypton Components/Krypton.Ribbon/Designers/Designers/KryptonRibbonGroupTripleDesigner.cs index 52c569e89..d9a134892 100644 --- a/Source/Krypton Components/Krypton.Ribbon/Designers/Designers/KryptonRibbonGroupTripleDesigner.cs +++ b/Source/Krypton Components/Krypton.Ribbon/Designers/Designers/KryptonRibbonGroupTripleDesigner.cs @@ -18,7 +18,7 @@ internal class KryptonRibbonGroupTripleDesigner : ComponentDesigner private IDesignerHost _designerHost; private IComponentChangeService _changeService; private KryptonRibbonGroupTriple _ribbonTriple; - private DesignerVerbCollection _verbs; + private DesignerVerbCollection? _verbs; private DesignerVerb _toggleHelpersVerb; private DesignerVerb _moveFirstVerb; private DesignerVerb _movePrevVerb; @@ -1080,7 +1080,7 @@ private void OnContextMenu(object sender, MouseEventArgs e) // Update sub menu options available for the 'Move To Group' UpdateMoveToGroup(); - // Update menu items state from versb + // Update menu items state from verb _toggleHelpersMenu.Checked = _ribbonTriple.Ribbon.InDesignHelperMode; _visibleMenu.Checked = _ribbonTriple.Visible; _maximumLMenu.Checked = _ribbonTriple.MaximumSize == GroupItemSize.Large; diff --git a/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeComboBox.cs b/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeComboBox.cs index 0800efc0f..4d40f7e12 100644 --- a/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeComboBox.cs +++ b/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeComboBox.cs @@ -10,6 +10,16 @@ namespace Krypton.Ribbon { + /// + /// Represents a ribbon group theme combo box. + /// + [ToolboxItem(false)] + [ToolboxBitmap(typeof(KryptonRibbonGroupThemeComboBox), "ToolboxBitmaps.KryptonRibbonGroupComboBox.bmp")] + [Designer(typeof(KryptonRibbonGroupThemeComboBoxDesigner))] + [DesignerCategory(@"code")] + [DesignTimeVisible(false)] + [DefaultEvent("SelectedTextChanged")] + [DefaultProperty(nameof(Text))] public class KryptonRibbonGroupThemeComboBox : KryptonRibbonGroupComboBox { #region Instance Fields @@ -100,5 +110,10 @@ protected override void OnSelectedIndexChanged(EventArgs e) #endregion + #region Removed Designer + + + + #endregion } } \ No newline at end of file diff --git a/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeSelector.cs b/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeSelector.cs deleted file mode 100644 index ccb6f32fc..000000000 --- a/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeSelector.cs +++ /dev/null @@ -1,30 +0,0 @@ -#region BSD License -/* - * - * Original BSD 3-Clause License (https://github.com/ComponentFactory/Krypton/blob/master/LICENSE) - * © Component Factory Pty Ltd, 2006 - 2016, All rights reserved. - * - * New BSD 3-Clause License (https://github.com/Krypton-Suite/Standard-Toolkit/blob/master/LICENSE) - * Modifications by Peter Wagner(aka Wagnerp) & Simon Coghlan(aka Smurf-IV), et al. 2017 - 2023. All rights reserved. - * - * Modified: Monday 12th April, 2021 @ 18:00 GMT - * - */ -#endregion - -namespace Krypton.Ribbon -{ - /// - /// Represents a ribbon group combo box. - /// - [ToolboxItem(false)] - [ToolboxBitmap(typeof(KryptonRibbonGroupComboBox), "ToolboxBitmaps.KryptonRibbonGroupComboBox.bmp")] - [Designer(typeof(KryptonRibbonGroupComboBoxDesigner))] - [DesignerCategory(@"code")] - [DesignTimeVisible(false)] - [DefaultEvent(@"SelectedTextChanged")] - [DefaultProperty(nameof(Text))] - public class KryptonRibbonGroupThemeSelector : KryptonRibbonGroupThemeComboBox - { - } -} From 1b78780a39532eb79990707d31b61f704651d023 Mon Sep 17 00:00:00 2001 From: Peter Wagner Date: Fri, 22 Sep 2023 08:26:59 +0100 Subject: [PATCH 2/4] Update KryptonRibbonGroupThemeComboBox.cs --- .../KryptonRibbonGroupThemeComboBox.cs | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeComboBox.cs b/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeComboBox.cs index 4d40f7e12..5fa18dfd0 100644 --- a/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeComboBox.cs +++ b/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeComboBox.cs @@ -112,7 +112,38 @@ protected override void OnSelectedIndexChanged(EventArgs e) #region Removed Designer + /// Gets and sets the text associated with the control. + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + [AllowNull] + public new string Text + { + get => base.Text; + set => base.Text = value; + } + + /// Gets and sets the appearance and functionality of the KryptonComboBox. + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public new ComboBoxStyle DropDownStyle + { + get => base.DropDownStyle; + set => base.DropDownStyle = value; + } + + /// Gets or sets the items in the KryptonComboBox. + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public new ComboBox.ObjectCollection Items => base.Items; + /// Gets or sets the StringCollection to use when the AutoCompleteSource property is set to CustomSource. + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public new AutoCompleteStringCollection AutoCompleteCustomSource + { + get => base.AutoCompleteCustomSource; + set => base.AutoCompleteCustomSource = value; + } #endregion } From 047ec6fe6f5c03001732776e4556bf4ea4b796d2 Mon Sep 17 00:00:00 2001 From: Peter Wagner Date: Fri, 22 Sep 2023 08:30:57 +0100 Subject: [PATCH 3/4] Update OSUtilities.cs --- .../Krypton Components/Krypton.Toolkit/Utilities/OSUtilities.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Source/Krypton Components/Krypton.Toolkit/Utilities/OSUtilities.cs b/Source/Krypton Components/Krypton.Toolkit/Utilities/OSUtilities.cs index fa26de35c..4f6a5ea2c 100644 --- a/Source/Krypton Components/Krypton.Toolkit/Utilities/OSUtilities.cs +++ b/Source/Krypton Components/Krypton.Toolkit/Utilities/OSUtilities.cs @@ -27,6 +27,8 @@ public OSUtilities() #region Implementation + // Note: Update these, once a new public upgrade becomes GA + /// Gets a value indicating whether the client version is Windows 7. /// true if the client version is Windows 7; otherwise, false. public static bool IsWindowsSeven => Environment.OSVersion.Version is { Major: >= 6, Minor: >= 1 }; From 5b1962708c594d710818619cca1ae19364a36aab Mon Sep 17 00:00:00 2001 From: Peter Wagner Date: Fri, 22 Sep 2023 08:45:20 +0100 Subject: [PATCH 4/4] * Testing --- .../KryptonRibbonGroupThemeComboBox.cs | 18 +++ .../TestForm/Form3.Designer.cs | 108 +++++++++++------- Source/Krypton Components/TestForm/Form3.resx | 62 +++++++++- 3 files changed, 145 insertions(+), 43 deletions(-) diff --git a/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeComboBox.cs b/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeComboBox.cs index 5fa18dfd0..f771f28bb 100644 --- a/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeComboBox.cs +++ b/Source/Krypton Components/Krypton.Ribbon/Group Contents/KryptonRibbonGroupThemeComboBox.cs @@ -145,6 +145,24 @@ protected override void OnSelectedIndexChanged(EventArgs e) set => base.AutoCompleteCustomSource = value; } + /// Gets or sets the text completion behavior of the combobox. + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public new AutoCompleteMode AutoCompleteMode + { + get => base.AutoCompleteMode; + set => base.AutoCompleteMode = value; + } + + /// Gets or sets the autocomplete source, which can be one of the values from AutoCompleteSource enumeration. + [Browsable(false)] + [DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)] + public new AutoCompleteSource AutoCompleteSource + { + get => base.AutoCompleteSource; + set => base.AutoCompleteSource = value; + } + #endregion } } \ No newline at end of file diff --git a/Source/Krypton Components/TestForm/Form3.Designer.cs b/Source/Krypton Components/TestForm/Form3.Designer.cs index 9a90d0110..896306c50 100644 --- a/Source/Krypton Components/TestForm/Form3.Designer.cs +++ b/Source/Krypton Components/TestForm/Form3.Designer.cs @@ -28,66 +28,87 @@ protected override void Dispose(bool disposing) /// private void InitializeComponent() { - kryptonRibbon1 = new Krypton.Ribbon.KryptonRibbon(); - kryptonRibbonTab1 = new Krypton.Ribbon.KryptonRibbonTab(); - kryptonRibbonGroup1 = new Krypton.Ribbon.KryptonRibbonGroup(); - kryptonRibbonGroupTriple1 = new Krypton.Ribbon.KryptonRibbonGroupTriple(); - kryptonRibbonGroupButton1 = new Krypton.Ribbon.KryptonRibbonGroupButton(); - kryptonRibbonGroupButton2 = new Krypton.Ribbon.KryptonRibbonGroupButton(); - kryptonRibbonGroupButton3 = new Krypton.Ribbon.KryptonRibbonGroupButton(); - kryptonRibbonGroup2 = new Krypton.Ribbon.KryptonRibbonGroup(); - kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); - ((System.ComponentModel.ISupportInitialize)kryptonRibbon1).BeginInit(); - ((System.ComponentModel.ISupportInitialize)kryptonPanel1).BeginInit(); - SuspendLayout(); + this.kryptonRibbon1 = new Krypton.Ribbon.KryptonRibbon(); + this.kryptonRibbonTab1 = new Krypton.Ribbon.KryptonRibbonTab(); + this.kryptonRibbonGroup1 = new Krypton.Ribbon.KryptonRibbonGroup(); + this.kryptonRibbonGroupTriple1 = new Krypton.Ribbon.KryptonRibbonGroupTriple(); + this.kryptonRibbonGroupButton1 = new Krypton.Ribbon.KryptonRibbonGroupButton(); + this.kryptonRibbonGroupButton2 = new Krypton.Ribbon.KryptonRibbonGroupButton(); + this.kryptonRibbonGroupButton3 = new Krypton.Ribbon.KryptonRibbonGroupButton(); + this.kryptonRibbonGroup2 = new Krypton.Ribbon.KryptonRibbonGroup(); + this.kryptonPanel1 = new Krypton.Toolkit.KryptonPanel(); + this.kryptonRibbonGroupSeparator1 = new Krypton.Ribbon.KryptonRibbonGroupSeparator(); + this.kryptonRibbonGroupTriple2 = new Krypton.Ribbon.KryptonRibbonGroupTriple(); + this.kryptonRibbonGroupThemeComboBox1 = new Krypton.Ribbon.KryptonRibbonGroupThemeComboBox(); + ((System.ComponentModel.ISupportInitialize)(this.kryptonRibbon1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).BeginInit(); + this.SuspendLayout(); // // kryptonRibbon1 // - kryptonRibbon1.AllowFormIntegrate = true; - kryptonRibbon1.InDesignHelperMode = true; - kryptonRibbon1.Name = "kryptonRibbon1"; - kryptonRibbon1.RibbonTabs.AddRange(new Krypton.Ribbon.KryptonRibbonTab[] { kryptonRibbonTab1 }); - kryptonRibbon1.SelectedContext = null; - kryptonRibbon1.SelectedTab = kryptonRibbonTab1; - kryptonRibbon1.Size = new System.Drawing.Size(933, 115); - kryptonRibbon1.TabIndex = 0; + this.kryptonRibbon1.AllowFormIntegrate = true; + this.kryptonRibbon1.InDesignHelperMode = true; + this.kryptonRibbon1.Name = "kryptonRibbon1"; + this.kryptonRibbon1.RibbonTabs.AddRange(new Krypton.Ribbon.KryptonRibbonTab[] { + this.kryptonRibbonTab1}); + this.kryptonRibbon1.SelectedTab = this.kryptonRibbonTab1; + this.kryptonRibbon1.Size = new System.Drawing.Size(800, 115); + this.kryptonRibbon1.TabIndex = 0; // // kryptonRibbonTab1 // - kryptonRibbonTab1.Groups.AddRange(new Krypton.Ribbon.KryptonRibbonGroup[] { kryptonRibbonGroup1, kryptonRibbonGroup2 }); + this.kryptonRibbonTab1.Groups.AddRange(new Krypton.Ribbon.KryptonRibbonGroup[] { + this.kryptonRibbonGroup1, + this.kryptonRibbonGroup2}); // // kryptonRibbonGroup1 // - kryptonRibbonGroup1.Items.AddRange(new Krypton.Ribbon.KryptonRibbonGroupContainer[] { kryptonRibbonGroupTriple1 }); + this.kryptonRibbonGroup1.Items.AddRange(new Krypton.Ribbon.KryptonRibbonGroupContainer[] { + this.kryptonRibbonGroupTriple1, + this.kryptonRibbonGroupSeparator1, + this.kryptonRibbonGroupTriple2}); // // kryptonRibbonGroupTriple1 // - kryptonRibbonGroupTriple1.Items.AddRange(new Krypton.Ribbon.KryptonRibbonGroupItem[] { kryptonRibbonGroupButton1, kryptonRibbonGroupButton2, kryptonRibbonGroupButton3 }); + this.kryptonRibbonGroupTriple1.Items.AddRange(new Krypton.Ribbon.KryptonRibbonGroupItem[] { + this.kryptonRibbonGroupButton1, + this.kryptonRibbonGroupButton2, + this.kryptonRibbonGroupButton3}); // // kryptonPanel1 // - kryptonPanel1.Location = new System.Drawing.Point(225, 224); - kryptonPanel1.Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - kryptonPanel1.Name = "kryptonPanel1"; - kryptonPanel1.Size = new System.Drawing.Size(117, 115); - kryptonPanel1.TabIndex = 1; + this.kryptonPanel1.Location = new System.Drawing.Point(193, 194); + this.kryptonPanel1.Name = "kryptonPanel1"; + this.kryptonPanel1.Size = new System.Drawing.Size(100, 100); + this.kryptonPanel1.TabIndex = 1; + // + // kryptonRibbonGroupTriple2 + // + this.kryptonRibbonGroupTriple2.Items.AddRange(new Krypton.Ribbon.KryptonRibbonGroupItem[] { + this.kryptonRibbonGroupThemeComboBox1}); + // + // kryptonRibbonGroupThemeComboBox1 + // + this.kryptonRibbonGroupThemeComboBox1.DisplayMember = "Key"; + this.kryptonRibbonGroupThemeComboBox1.DropDownWidth = 121; + this.kryptonRibbonGroupThemeComboBox1.FormattingEnabled = false; + this.kryptonRibbonGroupThemeComboBox1.ItemHeight = 15; + this.kryptonRibbonGroupThemeComboBox1.ValueMember = "Value"; // // Form3 // - AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F); - AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - ClientSize = new System.Drawing.Size(933, 519); - Controls.Add(kryptonPanel1); - Controls.Add(kryptonRibbon1); - Margin = new System.Windows.Forms.Padding(4, 3, 4, 3); - Name = "Form3"; - Text = "Form3"; - Controls.SetChildIndex(kryptonRibbon1, 0); - Controls.SetChildIndex(kryptonPanel1, 0); - ((System.ComponentModel.ISupportInitialize)kryptonRibbon1).EndInit(); - ((System.ComponentModel.ISupportInitialize)kryptonPanel1).EndInit(); - ResumeLayout(false); - PerformLayout(); + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.kryptonPanel1); + this.Controls.Add(this.kryptonRibbon1); + this.Name = "Form3"; + this.Text = "Form3"; + ((System.ComponentModel.ISupportInitialize)(this.kryptonRibbon1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.kryptonPanel1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + } #endregion @@ -101,5 +122,8 @@ private void InitializeComponent() private Krypton.Ribbon.KryptonRibbonGroupButton kryptonRibbonGroupButton3; private Krypton.Ribbon.KryptonRibbonGroup kryptonRibbonGroup2; private Krypton.Toolkit.KryptonPanel kryptonPanel1; + private Krypton.Ribbon.KryptonRibbonGroupSeparator kryptonRibbonGroupSeparator1; + private Krypton.Ribbon.KryptonRibbonGroupTriple kryptonRibbonGroupTriple2; + private Krypton.Ribbon.KryptonRibbonGroupThemeComboBox kryptonRibbonGroupThemeComboBox1; } } \ No newline at end of file diff --git a/Source/Krypton Components/TestForm/Form3.resx b/Source/Krypton Components/TestForm/Form3.resx index f298a7be8..1af7de150 100644 --- a/Source/Krypton Components/TestForm/Form3.resx +++ b/Source/Krypton Components/TestForm/Form3.resx @@ -1,4 +1,64 @@ - + + +