Files
HawkeyeVision/VisionBuilder.UI.Common/Plugins/PluginSettings.cs
2025-08-28 16:31:25 +02:00

72 lines
1.9 KiB
C#

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<PluginFlag> _plugins = new List<PluginFlag>();
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<PluginFlag> 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<PluginSettings.PluginFlag>
{
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}";
}
}