From b7acc6f0a483449c706e3a586d7259181b9f8736 Mon Sep 17 00:00:00 2001 From: Pilzinsel64 Date: Fri, 15 Nov 2024 10:17:50 +0100 Subject: [PATCH] version bump --- Pilz.Plugins.Advanced.UI/ControlFeature.cs | 18 +++++++++++ Pilz.Plugins.Advanced.UI/ControlManager.cs | 17 +++++++++++ .../ControlFeatureCollectoinExtensions.cs | 27 +++++++++++++++++ .../PluginFeatureControllerExtensions.cs | 30 +++++++++++++++++++ Pilz/Pilz.csproj | 2 +- 5 files changed, 93 insertions(+), 1 deletion(-) create mode 100644 Pilz.Plugins.Advanced.UI/ControlFeature.cs create mode 100644 Pilz.Plugins.Advanced.UI/ControlManager.cs create mode 100644 Pilz.Plugins.Advanced.UI/Extensions/ControlFeatureCollectoinExtensions.cs create mode 100644 Pilz.Plugins.Advanced.UI/Extensions/PluginFeatureControllerExtensions.cs diff --git a/Pilz.Plugins.Advanced.UI/ControlFeature.cs b/Pilz.Plugins.Advanced.UI/ControlFeature.cs new file mode 100644 index 0000000..65206ff --- /dev/null +++ b/Pilz.Plugins.Advanced.UI/ControlFeature.cs @@ -0,0 +1,18 @@ +namespace Pilz.Plugins.Advanced.UI; + +public abstract class ControlFeature : PluginFeature +{ + public string? ControlName { get; } + + public ControlFeature(string? controlName, string type, string identifier) : base(type, identifier) + { + ControlName = controlName; + } + + public ControlFeature(string? controlName, string type, string identifier, string? name) : base(type, identifier, name) + { + ControlName = controlName; + } + + public abstract void Execute(Control control, PluginFunctionParameter? parameter); +} diff --git a/Pilz.Plugins.Advanced.UI/ControlManager.cs b/Pilz.Plugins.Advanced.UI/ControlManager.cs new file mode 100644 index 0000000..58a5727 --- /dev/null +++ b/Pilz.Plugins.Advanced.UI/ControlManager.cs @@ -0,0 +1,17 @@ +namespace Pilz.Plugins.Advanced.UI; + +public class ControlManager(PluginFeatureController controller, bool autoTrack) +{ + public PluginFeatureController Controller => controller; + public bool AutoTrack => autoTrack; + + public void RegisterControl(Control control) + { + + } + + public void Execute(object mode) + { + + } +} diff --git a/Pilz.Plugins.Advanced.UI/Extensions/ControlFeatureCollectoinExtensions.cs b/Pilz.Plugins.Advanced.UI/Extensions/ControlFeatureCollectoinExtensions.cs new file mode 100644 index 0000000..7f9eb8d --- /dev/null +++ b/Pilz.Plugins.Advanced.UI/Extensions/ControlFeatureCollectoinExtensions.cs @@ -0,0 +1,27 @@ +using System.Windows.Forms; + +namespace Pilz.Plugins.Advanced.UI.Extensions; + +public static class ControlFeatureCollectoinExtensions +{ + public static void ExecuteControlFeatures(this IEnumerable @this, Control control, bool recursive, PluginFunctionParameter? parameter) + { + if (control.Name is string name) + { + foreach (var feature in @this) + { + if (feature.ControlName is null || feature.ControlName.Equals(control.Name)) + feature.Execute(control, parameter); + } + } + + if (recursive) + { + foreach (var child in control.Controls) + { + if (child is Control childControl) + ExecuteControlFeatures(@this, childControl, true, parameter); + } + } + } +} diff --git a/Pilz.Plugins.Advanced.UI/Extensions/PluginFeatureControllerExtensions.cs b/Pilz.Plugins.Advanced.UI/Extensions/PluginFeatureControllerExtensions.cs new file mode 100644 index 0000000..158f1e6 --- /dev/null +++ b/Pilz.Plugins.Advanced.UI/Extensions/PluginFeatureControllerExtensions.cs @@ -0,0 +1,30 @@ +namespace Pilz.Plugins.Advanced.UI.Extensions; + +public static class PluginFeatureControllerExtensions +{ + public static ControlManager ApplyControlManager(this PluginFeatureController @this, Control control) + { + return ApplyControlManager(@this, control, true, true); + } + + public static ControlManager ApplyControlManager(this PluginFeatureController @this, Control control, bool recursive, bool autoTrack) + { + var manager = new ControlManager(@this, autoTrack); + goThrow(control); + return manager; + + void goThrow(Control control) + { + manager.RegisterControl(control); + + if (recursive) + { + foreach (var child in control.Controls) + { + if (child is Control childControl) + goThrow(childControl); + } + } + } + } +} diff --git a/Pilz/Pilz.csproj b/Pilz/Pilz.csproj index 347a2bd..4d4b5a4 100644 --- a/Pilz/Pilz.csproj +++ b/Pilz/Pilz.csproj @@ -5,7 +5,7 @@ latest enable annotations - 2.2.0 + 2.3.0