using System.ComponentModel; using System.Globalization; using Inspectron.Settings; using VisionBuilder.UI.Common.Utils; namespace VisionBuilder.UI.Common.Plugins; public class PluginSettings:ISettings { private List _plugins = new List(); public class PluginFlag { public bool Enabled { get; set; } public string Name { get; set; } public override string ToString() { return $"{(Enabled ? "" : "(Disabled)")}{Name}"; } } public void AddPlugin(PluginFlag plugin) { if (_plugins.All(p => p.Name != plugin.Name)) { _plugins.Add(plugin); } } public List Plugins { get => _plugins; set { // add unique only foreach (var plugin in value) { AddPlugin(plugin); } } } public void RegisterSettings(InspectronSettings settings) { settings.RegisterSimple(this, () => this.Plugins,"Plugins",nameof(Plugins)); } } public class PluginFlagConverter : GeneralListTypeConverter { protected override PluginSettings.PluginFlag ConvertFromString(ITypeDescriptorContext context, CultureInfo culture, string stringValue) { if (string.IsNullOrEmpty(stringValue)) return null; var parts = stringValue.Split(','); if (parts.Length == 2) { return new PluginSettings.PluginFlag { Name = parts[0].Trim(), Enabled = bool.Parse(parts[1].Trim()) }; } return null; } protected override string ConvertToString(ITypeDescriptorContext context, CultureInfo culture, PluginSettings.PluginFlag errorShortName) { return $"{errorShortName.Name}, {errorShortName.Enabled}"; } }