/// <summary> /// Stops a plugin. /// </summary> /// <param name="plugin">The plugin to stop</param> public static void Stop(Plugin plugin) { if (activePlugins.Contains(plugin)) { if (plugin.OnStart()) { DispatchStopped(plugin); activePlugins.Remove(plugin); PluginSettings set = GetSettings(plugin.ID); if (set != null) set.Enabled = false; PluginItem p = GetListItem(plugin.ID); if (p != null) p.Disabled = true; if (activePlugins.Count == 0) { ticker.Dispose(); ticker = null; } if (plugin.Type == PluginType.Filter) { Plugins.Filter filter = plugin as Plugins.Filter; filter.VolumeChanged -= Plugin_VolumeChanged; } U.L(LogLevel.Information, "PLUGIN", "Stopped plugin '" + plugin.ID + "'"); } else U.L(LogLevel.Warning, "PLUGIN", "Could not stop plugin '" + plugin.ID + "'"); } else U.L(LogLevel.Warning, "PLUGIN", "Won't stop not running plugin '" + plugin.ID + "'"); }
/// <summary> /// Starts a plugin. /// </summary> /// <param name="plugin">The plugin to start</param> public static void Start(Plugin plugin) { if (!activePlugins.Contains(plugin)) { if (plugin.OnStart()) { DispatchStarted(plugin); activePlugins.Add(plugin); PluginSettings set = GetSettings(plugin.ID); if (set != null) set.Enabled = true; PluginItem p = GetListItem(plugin.ID); if (p != null) p.Disabled = false; if (ticker == null) ticker = new Timer(Tick, null, 0, 30); if (plugin.Type == PluginType.Filter) { Plugins.Filter filter = plugin as Plugins.Filter; filter.VolumeChanged += Plugin_VolumeChanged; } U.L(LogLevel.Information, "PLUGIN", "Started plugin '" + plugin.ID + "'"); } else U.L(LogLevel.Warning, "PLUGIN", "Could not start plugin '" + plugin.ID + "'"); } else U.L(LogLevel.Warning, "PLUGIN", "Won't start running plugin '" + plugin.ID + "'"); }