/// <summary> /// Loads the plugins from the Plugins.env. /// </summary> /// private void LoadRegisteredPlugins() { plugins.AddPluginsFromFile(pluginsFile); plugins.LoadPlugins(); foreach (IPlugin p in plugins.GetServices <IPlugin>()) { p.Init(this); } }
/// <summary> /// Loads a plugin using the Add command from the Plugins menu. /// </summary> /// <param name='sender'> /// Sender. /// </param> /// <param name='e'> /// Event args. /// </param> protected void OnAddActionActivated(object sender, EventArgs e) { var fc = new Gtk.FileChooserDialog("Choose the file to open", null, Gtk.FileChooserAction.Open, "Cancel", Gtk.ResponseType.Cancel, "Open", Gtk.ResponseType.Accept); try { fc.SelectMultiple = true; fc.SetCurrentFolder(Environment.CurrentDirectory); if (fc.Run() == (int)Gtk.ResponseType.Accept) { PluginServiceContainer pluginsToAdd = new PluginServiceContainer(); for (int i = 0; i < fc.Filenames.Length; i++) { if (!plugins.Plugins.Exists(x => x.codeBase == fc.Filenames[i])) { plugins.AddPlugin(fc.Filenames[i]); pluginsToAdd.AddPlugin(fc.Filenames[i]); } } pluginsToAdd.LoadPlugins(); foreach (IPlugin p in pluginsToAdd.GetServices <IPlugin>()) { p.Init(this); } } } finally { fc.Destroy(); } }