1
0
mirror of https://github.com/chylex/TweetDuck.git synced 2025-08-16 06:31:42 +02:00
Files
.github
.idea
bld
lib
TweetLib.Browser
TweetLib.Browser.CEF
TweetLib.Communication
TweetLib.Core
Application
Features
Notifications
Plugins
Config
PluginConfig.cs
PluginConfigInstance.cs
Enums
Events
Plugin.cs
PluginBridge.cs
PluginLoader.cs
PluginManager.cs
PluginSchemeHandler.cs
PluginScriptGenerator.cs
TweetDeck
Twitter
BaseBrowser.cs
BaseContextMenu.cs
BaseResourceRequestHandler.cs
CommonBridgeObject.cs
FileDownloadManager.cs
ICommonInterface.cs
PropertyObjectScript.cs
Resources
Systems
App.cs
Lib.cs
TweetLib.Core.csproj
TweetLib.Utils
TweetTest.Browser.CEF
TweetTest.Core
TweetTest.Utils
linux
resources
windows
.gitattributes
.gitignore
LICENSE.md
README.md
TweetDuck.sln
TweetDuck.sln.DotSettings
Version.cs
global.json
2022-02-05 23:34:00 +01:00

44 lines
1.3 KiB
C#

using System;
using System.Collections.Generic;
using TweetLib.Core.Features.Plugins.Events;
using TweetLib.Core.Systems.Configuration;
namespace TweetLib.Core.Features.Plugins.Config {
public sealed class PluginConfig : IConfigObject<PluginConfig> {
internal IEnumerable<string> DisabledPlugins => disabled;
internal event EventHandler<PluginChangedStateEventArgs>? PluginChangedState;
private readonly HashSet<string> defaultDisabled;
private readonly HashSet<string> disabled;
public PluginConfig(IEnumerable<string> defaultDisabled) {
this.defaultDisabled = new HashSet<string>(defaultDisabled);
this.disabled = new HashSet<string>(this.defaultDisabled);
}
public PluginConfig ConstructWithDefaults() {
return new PluginConfig(defaultDisabled);
}
internal void Reset(IEnumerable<string> newDisabledPlugins) {
disabled.Clear();
disabled.UnionWith(newDisabledPlugins);
}
internal void ResetToDefault() {
Reset(defaultDisabled);
}
public void SetEnabled(Plugin plugin, bool enabled) {
if ((enabled && disabled.Remove(plugin.Identifier)) || (!enabled && disabled.Add(plugin.Identifier))) {
PluginChangedState?.Invoke(this, new PluginChangedStateEventArgs(plugin, enabled));
}
}
public bool IsEnabled(Plugin plugin) {
return !disabled.Contains(plugin.Identifier);
}
}
}