Esempio n. 1
0
    /// <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);
        }
    }
Esempio n. 2
0
        /// <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();
            }
        }