Skip to content

Commit 04aa77c

Browse files
committed
Globalized the HidingTypeDescriptor class.
1 parent 358d63b commit 04aa77c

File tree

4 files changed

+85
-173
lines changed

4 files changed

+85
-173
lines changed

Source/NostalgicPlayer.Controls/Buttons/NostalgicButton.cs

Lines changed: 5 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,13 @@
44
/* information. */
55
/******************************************************************************/
66
using System;
7-
using System.Collections.Generic;
87
using System.ComponentModel;
98
using System.Drawing;
109
using System.Drawing.Drawing2D;
11-
using System.Linq;
1210
using System.Windows.Forms;
1311
using Polycode.NostalgicPlayer.Controls.Components;
1412
using Polycode.NostalgicPlayer.Controls.Containers;
13+
using Polycode.NostalgicPlayer.Controls.Designer;
1514
using Polycode.NostalgicPlayer.Controls.Theme;
1615
using Polycode.NostalgicPlayer.Controls.Theme.Interfaces;
1716

@@ -566,9 +565,9 @@ static NostalgicButton()
566565
/// </summary>
567566
private sealed class NostalgicButtonTypeDescriptionProvider : TypeDescriptionProvider
568567
{
569-
private static readonly TypeDescriptionProvider Parent = TypeDescriptor.GetProvider(typeof(Button));
568+
private static readonly TypeDescriptionProvider parent = TypeDescriptor.GetProvider(typeof(Button));
570569

571-
private static readonly string[] PropertiesToHide =
570+
private static readonly string[] propertiesToHide =
572571
[
573572
nameof(FlatStyle),
574573
nameof(BackColor),
@@ -594,7 +593,7 @@ private sealed class NostalgicButtonTypeDescriptionProvider : TypeDescriptionPro
594593
/// Constructor
595594
/// </summary>
596595
/********************************************************************/
597-
public NostalgicButtonTypeDescriptionProvider() : base(Parent)
596+
public NostalgicButtonTypeDescriptionProvider() : base(parent)
598597
{
599598
}
600599

@@ -607,57 +606,7 @@ public NostalgicButtonTypeDescriptionProvider() : base(Parent)
607606
/********************************************************************/
608607
public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
609608
{
610-
return new HidingTypeDescriptor(base.GetTypeDescriptor(objectType, instance));
611-
}
612-
613-
/// <summary>
614-
///
615-
/// </summary>
616-
private sealed class HidingTypeDescriptor : CustomTypeDescriptor
617-
{
618-
/********************************************************************/
619-
/// <summary>
620-
/// Constructor
621-
/// </summary>
622-
/********************************************************************/
623-
public HidingTypeDescriptor(ICustomTypeDescriptor parent) : base(parent)
624-
{
625-
}
626-
627-
628-
629-
/********************************************************************/
630-
/// <summary>
631-
///
632-
/// </summary>
633-
/********************************************************************/
634-
public override PropertyDescriptorCollection GetProperties()
635-
{
636-
return GetProperties(null);
637-
}
638-
639-
640-
641-
/********************************************************************/
642-
/// <summary>
643-
///
644-
/// </summary>
645-
/********************************************************************/
646-
public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
647-
{
648-
PropertyDescriptorCollection props = base.GetProperties(attributes);
649-
List<PropertyDescriptor> kept = new List<PropertyDescriptor>(props.Count);
650-
651-
foreach (PropertyDescriptor pd in props)
652-
{
653-
if (PropertiesToHide.Contains(pd.Name))
654-
continue;
655-
656-
kept.Add(pd);
657-
}
658-
659-
return new PropertyDescriptorCollection(kept.ToArray(), true);
660-
}
609+
return new HidingTypeDescriptor(base.GetTypeDescriptor(objectType, instance), propertiesToHide);
661610
}
662611
}
663612
#endregion
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
/******************************************************************************/
2+
/* This source, or parts thereof, may be used in any software as long the */
3+
/* license of NostalgicPlayer is keep. See the LICENSE file for more */
4+
/* information. */
5+
/******************************************************************************/
6+
using System;
7+
using System.Collections.Generic;
8+
using System.ComponentModel;
9+
using System.Linq;
10+
11+
namespace Polycode.NostalgicPlayer.Controls.Designer
12+
{
13+
/// <summary>
14+
///
15+
/// </summary>
16+
internal sealed class HidingTypeDescriptor : CustomTypeDescriptor
17+
{
18+
private readonly string[] hiddenProperties;
19+
20+
/********************************************************************/
21+
/// <summary>
22+
/// Constructor
23+
/// </summary>
24+
/********************************************************************/
25+
public HidingTypeDescriptor(ICustomTypeDescriptor parent, string[] propertiesToHide) : base(parent)
26+
{
27+
hiddenProperties = propertiesToHide;
28+
}
29+
30+
31+
32+
/********************************************************************/
33+
/// <summary>
34+
///
35+
/// </summary>
36+
/********************************************************************/
37+
public override PropertyDescriptorCollection GetProperties()
38+
{
39+
return GetProperties(null);
40+
}
41+
42+
43+
44+
/********************************************************************/
45+
/// <summary>
46+
///
47+
/// </summary>
48+
/********************************************************************/
49+
public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
50+
{
51+
PropertyDescriptorCollection props = base.GetProperties(attributes);
52+
List<PropertyDescriptor> kept = new List<PropertyDescriptor>(props.Count);
53+
54+
foreach (PropertyDescriptor pd in props)
55+
{
56+
if (hiddenProperties.Contains(pd.Name))
57+
continue;
58+
59+
kept.Add(pd);
60+
}
61+
62+
return new PropertyDescriptorCollection(kept.ToArray(), true);
63+
}
64+
}
65+
}

Source/NostalgicPlayer.Controls/Forms/NostalgicForm.cs

Lines changed: 9 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,10 @@
1010
using System.Drawing.Drawing2D;
1111
using System.Drawing.Imaging;
1212
using System.Drawing.Text;
13-
using System.Linq;
1413
using System.Runtime.InteropServices;
1514
using System.Windows.Forms;
1615
using Polycode.NostalgicPlayer.Controls.Containers.Events;
16+
using Polycode.NostalgicPlayer.Controls.Designer;
1717
using Polycode.NostalgicPlayer.Controls.Native;
1818
using Polycode.NostalgicPlayer.Controls.Theme;
1919
using Polycode.NostalgicPlayer.Controls.Theme.Interfaces;
@@ -164,12 +164,12 @@ private IEnumerable<IThemeControl> FindThemedControls(Control.ControlCollection
164164
{
165165
List<IThemeControl> result = new List<IThemeControl>();
166166

167-
foreach (IThemeControl control in controls.OfType<IThemeControl>())
167+
foreach (Control control in controls)
168168
{
169-
result.Add(control);
169+
if (control is IThemeControl themedControl)
170+
result.Add(themedControl);
170171

171-
if (control is Control ctrl)
172-
result.AddRange(FindThemedControls(ctrl.Controls));
172+
result.AddRange(FindThemedControls(control.Controls));
173173
}
174174

175175
return result;
@@ -1213,9 +1213,9 @@ static NostalgicForm()
12131213
/// </summary>
12141214
private sealed class NostalgicFormTypeDescriptionProvider : TypeDescriptionProvider
12151215
{
1216-
private static readonly TypeDescriptionProvider Parent = TypeDescriptor.GetProvider(typeof(Form));
1216+
private static readonly TypeDescriptionProvider parent = TypeDescriptor.GetProvider(typeof(Form));
12171217

1218-
private static readonly string[] PropertiesToHide =
1218+
private static readonly string[] propertiesToHide =
12191219
[
12201220
nameof(AutoScaleDimensions),
12211221
nameof(AutoScaleMode),
@@ -1229,7 +1229,7 @@ private sealed class NostalgicFormTypeDescriptionProvider : TypeDescriptionProvi
12291229
/// Constructor
12301230
/// </summary>
12311231
/********************************************************************/
1232-
public NostalgicFormTypeDescriptionProvider() : base(Parent)
1232+
public NostalgicFormTypeDescriptionProvider() : base(parent)
12331233
{
12341234
}
12351235

@@ -1242,57 +1242,7 @@ public NostalgicFormTypeDescriptionProvider() : base(Parent)
12421242
/********************************************************************/
12431243
public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
12441244
{
1245-
return new HidingTypeDescriptor(base.GetTypeDescriptor(objectType, instance));
1246-
}
1247-
1248-
/// <summary>
1249-
///
1250-
/// </summary>
1251-
private sealed class HidingTypeDescriptor : CustomTypeDescriptor
1252-
{
1253-
/********************************************************************/
1254-
/// <summary>
1255-
/// Constructor
1256-
/// </summary>
1257-
/********************************************************************/
1258-
public HidingTypeDescriptor(ICustomTypeDescriptor parent) : base(parent)
1259-
{
1260-
}
1261-
1262-
1263-
1264-
/********************************************************************/
1265-
/// <summary>
1266-
///
1267-
/// </summary>
1268-
/********************************************************************/
1269-
public override PropertyDescriptorCollection GetProperties()
1270-
{
1271-
return GetProperties(null);
1272-
}
1273-
1274-
1275-
1276-
/********************************************************************/
1277-
/// <summary>
1278-
///
1279-
/// </summary>
1280-
/********************************************************************/
1281-
public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
1282-
{
1283-
PropertyDescriptorCollection props = base.GetProperties(attributes);
1284-
List<PropertyDescriptor> kept = new List<PropertyDescriptor>(props.Count);
1285-
1286-
foreach (PropertyDescriptor pd in props)
1287-
{
1288-
if (PropertiesToHide.Contains(pd.Name))
1289-
continue;
1290-
1291-
kept.Add(pd);
1292-
}
1293-
1294-
return new PropertyDescriptorCollection(kept.ToArray(), true);
1295-
}
1245+
return new HidingTypeDescriptor(base.GetTypeDescriptor(objectType, instance), propertiesToHide);
12961246
}
12971247
}
12981248
#endregion

Source/NostalgicPlayer.Controls/Lists/NostalgicComboBox.cs

Lines changed: 6 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,13 @@
44
/* information. */
55
/******************************************************************************/
66
using System;
7-
using System.Collections.Generic;
87
using System.ComponentModel;
98
using System.Drawing;
109
using System.Drawing.Drawing2D;
11-
using System.Linq;
1210
using System.Windows.Forms;
1311
using Polycode.NostalgicPlayer.Controls.Components;
1412
using Polycode.NostalgicPlayer.Controls.Containers;
13+
using Polycode.NostalgicPlayer.Controls.Designer;
1514
using Polycode.NostalgicPlayer.Controls.Theme;
1615
using Polycode.NostalgicPlayer.Controls.Theme.Interfaces;
1716

@@ -568,8 +567,7 @@ private void DrawDropDownItemText(Graphics g, Rectangle rect, DropDownStateColor
568567
string text = GetItemText(Items[itemIndex]);
569568

570569
TextFormatFlags flags = TextFormatFlags.Left | TextFormatFlags.VerticalCenter | TextFormatFlags.SingleLine | TextFormatFlags.EndEllipsis;
571-
Rectangle drawRect = new Rectangle(rect.X, rect.Y, rect.Width, rect.Height);
572-
TextRenderer.DrawText(g, text, font, drawRect, stateColors.TextColor, flags);
570+
TextRenderer.DrawText(g, text, font, rect, stateColors.TextColor, flags);
573571
}
574572
#endregion
575573

@@ -591,9 +589,9 @@ static NostalgicComboBox()
591589
/// </summary>
592590
private sealed class NostalgicComboBoxTypeDescriptionProvider : TypeDescriptionProvider
593591
{
594-
private static readonly TypeDescriptionProvider Parent = TypeDescriptor.GetProvider(typeof(ComboBox));
592+
private static readonly TypeDescriptionProvider parent = TypeDescriptor.GetProvider(typeof(ComboBox));
595593

596-
private static readonly string[] PropertiesToHide =
594+
private static readonly string[] propertiesToHide =
597595
[
598596
nameof(FlatStyle),
599597
nameof(BackColor),
@@ -611,7 +609,7 @@ private sealed class NostalgicComboBoxTypeDescriptionProvider : TypeDescriptionP
611609
/// Constructor
612610
/// </summary>
613611
/********************************************************************/
614-
public NostalgicComboBoxTypeDescriptionProvider() : base(Parent)
612+
public NostalgicComboBoxTypeDescriptionProvider() : base(parent)
615613
{
616614
}
617615

@@ -624,57 +622,7 @@ public NostalgicComboBoxTypeDescriptionProvider() : base(Parent)
624622
/********************************************************************/
625623
public override ICustomTypeDescriptor GetTypeDescriptor(Type objectType, object instance)
626624
{
627-
return new HidingTypeDescriptor(base.GetTypeDescriptor(objectType, instance));
628-
}
629-
630-
/// <summary>
631-
///
632-
/// </summary>
633-
private sealed class HidingTypeDescriptor : CustomTypeDescriptor
634-
{
635-
/********************************************************************/
636-
/// <summary>
637-
/// Constructor
638-
/// </summary>
639-
/********************************************************************/
640-
public HidingTypeDescriptor(ICustomTypeDescriptor parent) : base(parent)
641-
{
642-
}
643-
644-
645-
646-
/********************************************************************/
647-
/// <summary>
648-
///
649-
/// </summary>
650-
/********************************************************************/
651-
public override PropertyDescriptorCollection GetProperties()
652-
{
653-
return GetProperties(null);
654-
}
655-
656-
657-
658-
/********************************************************************/
659-
/// <summary>
660-
///
661-
/// </summary>
662-
/********************************************************************/
663-
public override PropertyDescriptorCollection GetProperties(Attribute[] attributes)
664-
{
665-
PropertyDescriptorCollection props = base.GetProperties(attributes);
666-
List<PropertyDescriptor> kept = new List<PropertyDescriptor>(props.Count);
667-
668-
foreach (PropertyDescriptor pd in props)
669-
{
670-
if (PropertiesToHide.Contains(pd.Name))
671-
continue;
672-
673-
kept.Add(pd);
674-
}
675-
676-
return new PropertyDescriptorCollection(kept.ToArray(), true);
677-
}
625+
return new HidingTypeDescriptor(base.GetTypeDescriptor(objectType, instance), propertiesToHide);
678626
}
679627
}
680628
#endregion

0 commit comments

Comments
 (0)