//inject the Scribble Javascript object into the Zorbo Javascript Plugin. //this requires references to Jurassic.dll as well as the plugin (Javascript.dll) private void OnHostLoadedPlugin(object sender, LoadedPlugin <IServer, ServerPlugin> plugin) { if (plugin.Plugin is Javascript.JurassicPlugin js) { js.EmbedObject("Scribble", typeof(Scribble.Constructor), PropertyAttributes.Configurable); } }
/// <summary> /// Pre load the plugins specified in the configuration file /// </summary> private void Loadplugins() { var pluginNames = new List <string>(); m_plugins = new Dictionary <string, PluginManager>(); LoadedPlugins = new List <LoadedPlugin>(); foreach (var patern in settings.StrategyLoadPaterns) { if (string.IsNullOrEmpty(patern.CustomLibrary) || pluginNames.Contains(patern.CustomLibrary)) { continue; } var plugin = new PluginManager(Directory.GetCurrentDirectory() + "\\" + patern.CustomLibrary, patern.CustomLibraryConfigSection); m_plugins.Add(plugin.Settings.id, plugin); var item = new LoadedPlugin { Name = plugin.Settings.Name, ID = plugin.Settings.id, HasWinForm = plugin.Settings.hasForm, Description = plugin.Settings.Description }; LoadedPlugins.Add(item); } }
/// <summary> /// Initializes the specified plugin. /// </summary> /// <param name="player">The player.</param> public void Initialize(IAimpPlayer player) { if (IsLoaded) { LoadedPlugin.OnInitialize(player, LoadedPlugin.PluginId); } }
/// <summary> /// Unloads this plugin. /// </summary> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> public bool Unload() { if (IsLoaded) { try { if (PluginUnloadEvent != null) { PluginUnloadEvent(this); } LoadedPlugin.OnDispose(); if (PluginAppDomainInfo != null) { AppDomain.Unload(PluginAppDomainInfo); } PluginAppDomainInfo = null; LoadedPlugin = null; GC.Collect(); } catch (Exception ex) { #if DEBUG MessageBox.Show(ex.Message); #endif } } return(!IsLoaded); }
public PluginDisplayControl(LoadedPlugin _plugin) { Plugin = _plugin; Details = Plugin.Details; InitializeComponent(); nameLabel.Text = Details.Name; descriptionLabel.Text = Details.Description; publisherLabel.Text = Details.Publisher; filenameLabel.Text = Path.GetFileName(Plugin.PluginAssembly.Location); }
private static string GetBigIcon(LoadedPlugin loadedPlugin) { if (_colorTheme == 0) { if (!string.IsNullOrEmpty(loadedPlugin.BigDarkIconUrl)) { return(loadedPlugin.BigDarkIconUrl); } } return(loadedPlugin.BigIconUrl); }
private static string GetBigIconForSubFunction(LoadedPlugin loadedPlugin, int i) { if (_colorTheme == 0) { if (!string.IsNullOrEmpty(loadedPlugin.SubBigDarkIconsUrl[i])) { return(loadedPlugin.SubBigDarkIconsUrl[i]); } } return(loadedPlugin.SubBigIconsUrl[i]); }
private static PushButtonData CreatePushButtonData(LoadedPlugin loadedPlugin) { return(CreatePushButtonData( loadedPlugin.Name, Language.GetFunctionLocalName(loadedPlugin.Name, loadedPlugin.LName), Language.GetFunctionShortDescription(loadedPlugin.Name, loadedPlugin.Description), loadedPlugin.SmallIconUrl, loadedPlugin.BigIconUrl, Language.GetFunctionFullDescription(loadedPlugin.Name, loadedPlugin.FullDescription), loadedPlugin.ToolTipHelpImage, loadedPlugin.Location, loadedPlugin.FullClassName, GetHelpUrl(loadedPlugin.Name))); }
private void Plugin_OnException(LoadedPlugin parent, Exception ex) { string PluginName = "Unknowen"; if (parent != null) { PluginName = parent.Details.Name; } var exceptionItem = new ListViewItem(PluginName); exceptionItem.SubItems.Add(ex.Message); pluginExceptionList.Items.Add(exceptionItem); }
protected override void OnPluginKilled(LoadedPlugin <IServer, ServerPlugin> plugin) { try { plugin.Plugin.OnPluginKilled(); } catch (Exception ex) { OnError(plugin, nameof(OnPluginKilled), ex); } try { RaisePluginKilled(plugin); } catch (Exception ex) { OnError(plugin, "Killed::EventHandler", ex); } }
protected override void OnPluginLoaded(LoadedPlugin <IServer, ServerPlugin> plugin) { try { plugin.Plugin.Directory = Path.Combine(BaseDirectory, plugin.Name); plugin.Plugin.OnPluginLoaded(Server); } catch (Exception ex) { OnError(plugin, nameof(OnPluginLoaded), ex); } try { RaisePluginLoaded(plugin); } catch (Exception ex) { OnError(plugin, "Loaded::EventHandler", ex); } }
public void CheckTrigger(LoadedPlugin plugin, string sender, string message) { try { foreach(var trigger in TriggerList) { if (message.ToLower().Contains(trigger.Key)) trigger.Value(sender); } } catch(Exception ex) { if(OnException!=null) OnException(plugin, ex); } }
private static PushButtonData CreatePushButtonData(LoadedPlugin loadedPlugin, int i) { return(CreatePushButtonData( loadedPlugin.SubPluginsNames[i], Language.GetFunctionLocalName( loadedPlugin.Name, loadedPlugin.SubPluginsLNames[i], i + 1), Language.GetFunctionShortDescription( loadedPlugin.Name, loadedPlugin.SubDescriptions[i], i + 1), loadedPlugin.SubSmallIconsUrl[i], loadedPlugin.SubBigIconsUrl[i], Language.GetFunctionFullDescription( loadedPlugin.Name, loadedPlugin.SubFullDescriptions[i], i + 1), loadedPlugin.SubHelpImages[i], loadedPlugin.Location, loadedPlugin.SubClassNames[i], GetHelpUrl(loadedPlugin.Name))); }
private void UI_OnTabAdd(LoadedPlugin parent, PluginTab tab) { if (tab != null) { try { TabPage t = new TabPage(tab.TabText); tab.TabControl.Parent = t; tab.TabControl.Dock = DockStyle.Fill; t.Controls.Add(tab.TabControl); mainTabControl.Controls.Add(t); } catch (Exception ex) { OnException(parent, ex); } } }
private void Bot_OnSayMessage(LoadedPlugin parent, string message, params object[] data) { try { if (message.StartsWith("/") && !parent.CanUseCommands) { throw new Exception("No permission for commands"); } bot.SendMessage(string.Format(message, data)); } catch (Exception ex) { OnExceptionDelegate oEx = parent.GetExceptionCallback(); if (oEx != null) { oEx(parent, ex); } } }
public void CheckTrigger(LoadedPlugin plugin, string sender, string message) { try { foreach (var trigger in TriggerList) { if (message.ToLower().Contains(trigger.Key)) { trigger.Value(sender); } } } catch (Exception ex) { if (OnException != null) { OnException(plugin, ex); } } }
private void _loadPlugins() { var pluginsDirectory = new DirectoryInfo(_pluginsPath); if (!pluginsDirectory.Exists) { pluginsDirectory.Create(); } foreach (var file in pluginsDirectory.GetFiles("*.dll")) { var assembly = Assembly.LoadFrom(file.FullName); foreach (var type in assembly.GetTypes()) { if (!type.IsSubclassOf(typeof(IPlugin)) || type.IsAbstract) { continue; } Longship.Instance.Log.LogInfo($"Loading plugin {file.Name}..."); try { _plugins[type] = new LoadedPlugin() { Plugin = type.InvokeMember( null, BindingFlags.CreateInstance, null, null, null) as IPlugin, Name = file.Name }; } catch (Exception e) { Longship.Instance.Log.LogError($"Can't load plugin {file.Name}."); Longship.Instance.Log.LogError(e); } } } }
/// <summary> /// Pre load the plugins specified in the configuration file /// </summary> private void Loadplugins() { var pluginNames = new List<string>(); m_plugins = new Dictionary<string, PluginManager>(); LoadedPlugins = new List<LoadedPlugin>(); foreach (var patern in settings.StrategyLoadPaterns) { if (string.IsNullOrEmpty(patern.CustomLibrary) || pluginNames.Contains(patern.CustomLibrary)) continue; var plugin = new PluginManager(Directory.GetCurrentDirectory() + "\\" + patern.CustomLibrary, patern.CustomLibraryConfigSection); m_plugins.Add(plugin.Settings.id, plugin); var item = new LoadedPlugin { Name = plugin.Settings.Name, ID = plugin.Settings.id, HasWinForm = plugin.Settings.hasForm, Description = plugin.Settings.Description }; LoadedPlugins.Add(item); } }
private void OnException(LoadedPlugin parent, Exception ex) { Debug.WriteLine("[{0}] Exception: {1}", parent.Details.Name, ex.Message); }
public MainWindow() { using (LoadBotForm lbf = new LoadBotForm()) { if (lbf.ShowDialog() != DialogResult.OK) { Environment.Exit(0); return; } bot = new IRCBot(lbf.BotLogin); } InitializeComponent(); DirectoryInfo PluginDirectory; try { PluginDirectory = new DirectoryInfo("Plugins"); if (!PluginDirectory.Exists) { PluginDirectory.Create(); } } catch { MessageBox.Show("No access to \"Plugin\" Directory."); return; } foreach (FileInfo pluginFile in PluginDirectory.GetFiles("*.dll")) { try { LoadedPlugin plugin = PluginHandler.LoadPlugin(pluginFile.FullName); plugin.OnException += Plugin_OnException; if (!PluginIDList.Add(plugin.PluginID)) { throw new Exception("Duplicate id"); } HandlerBundle handlers = new HandlerBundle(); handlers.Bot = new BotHandler(plugin); handlers.Bot.OnException += OnException; handlers.Bot.OnSayMessage += Bot_OnSayMessage; handlers.UI = new BotUIHandler(plugin); handlers.UI.OnTabAdd += UI_OnTabAdd; plugin.Initilze(handlers); foreach (var command in plugin.Details.LoadedCommands) { var handler = new CommandHandler(plugin, command); if (!HandlerList.ContainsKey(handler.ID)) { HandlerList.Add(handler.ID, handler); } } PluginDisplayControl display = new PluginDisplayControl(plugin); display.Parent = PluginDisplayPanel; display.Width = PluginDisplayPanel.Width; display.Anchor = AnchorStyles.Left | AnchorStyles.Right | AnchorStyles.Top; display.Location = new Point(0, PluginList.Count * display.Height); PluginDisplayPanel.Controls.Add(display); PluginList.Add(plugin); } catch { Debug.WriteLine("Error on file {0}", pluginFile.Name); } LoadSettings(); } }
public PluginInfo(LoadedPlugin plugin) { Enabled = plugin.Enabled; Info = new OpenPluginInfoBase(plugin.Info); }
public PluginItemViewModel(LoadedPlugin p) { this.Plugin = p; }
private static void AddPushButton(RibbonPanel panel, LoadedPlugin loadedPlugin) { // ReSharper disable once AssignmentIsFullyDiscarded _ = panel.AddItem(CreatePushButtonData(loadedPlugin)) as PushButton; }
public CommandHandler(LoadedPlugin plugin, PluginCommand _command) { Parent = plugin; Command = _command; ID = string.Format("{0}->[{1}]", plugin.PluginID, _command.Name); }
public PermissionsHandler(LoadedPlugin _parent) { Parent = _parent; Handlers = new HandlerBundle(); }