72 lines
1.9 KiB
C#
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}";
|
|
}
|
|
} |