示例#1
0
        private void frmMain_Load(object sender, EventArgs e)
        {
            Global.SuppressErrors = true;
            Plugin[] temp_plugins = Plugin.Load();
            Global.SuppressErrors = false;

            foreach (Plugin p in temp_plugins)
            {
                Plugin.vActivationState state = p.Activate();

                switch (state)
                {
                case Plugin.vActivationState.Activated:
                    // ok
                    Plugin.Plugins.Add(p);
                    break;

                case Plugin.vActivationState.Error:
                    MessageBox.Show("Could not activate plugin: " + p.FriendlyName + "\n\nReason: See Error log", "Error");
                    break;

                case Plugin.vActivationState.NameConflict:
                    MessageBox.Show("Could not activate plugin: " + p.FriendlyName + "\n\nReason: Name Conflict", "Error");
                    break;

                default:
                    break;
                }
            }

            foreach (Plugin plug in Plugin.Plugins)
            {
                cboPlugins.Items.Add(plug);
            }

            cboPlugins_SelectedIndexChanged(null, null);
        }
示例#2
0
        private void Load_Plugins()
        {
            ContextMenu PluginMenu = new ContextMenu();

            Plugin.LoadSate();

            Plugin[] temp_plugins = Plugin.Load();
            Plugin.Plugins.Add(new Plugin(new GCPlugin()));

            foreach (Plugin p in temp_plugins)
            {
                if (p.Signature != Plugin.vSignature.Verified)
                {
                    if (!p.AlwaysAllowed)
                    {
                        frmPluginSecurity f = new frmPluginSecurity();

                        f.setPlugin(p);

                        DialogResult d = f.ShowDialog(this);

                        switch (d)
                        {
                        case DialogResult.Abort:           // do not load asm
                            continue;

                        case DialogResult.OK:               // temp allow
                            //
                            break;

                        case DialogResult.Yes:              // always allow
                            p.AlwaysAllowed = true;
                            break;
                        }
                    }
                }

                Plugin.vActivationState state = p.Activate();

                switch (state)
                {
                case Plugin.vActivationState.Activated:
                    // ok
                    Plugin.Plugins.Add(p);
                    break;

                case Plugin.vActivationState.Error:
                    MessageBox.Show("Could not activate plugin: " + p.FriendlyName + "\n\nReason: See Error log", "Error");
                    break;

                case Plugin.vActivationState.NameConflict:
                    MessageBox.Show("Could not activate plugin: " + p.FriendlyName + "\n\nReason: Name Conflict", "Error");
                    break;

                default:
                    break;
                }
            }


            foreach (Plugin plugin in Plugin.Plugins)
            {
                if (plugin != null)
                {
                    ListViewItem li = new ListViewItem();
                    li.Text = plugin.FriendlyName;
                    li.Tag  = plugin;

                    if (plugin.getCommands() != null && plugin.getCommands().Length > 0)
                    {
                        MenuItem PluginRootMenu = PluginMenu.MenuItems.Add(plugin.FriendlyName);



                        gcCommand[] cmds = plugin.getCommands();

                        if (cmds != null)
                        {
                            for (int k = 0; k < cmds.Length; k++)
                            {
                                PluginRootMenu.MenuItems.Add("[" + plugin.ShortName + "." + cmds[k].CommandKey + "]", new EventHandler(CommandForm.Menu_Click));
                            }

                            PluginRootMenu.MenuItems.Add("-");
                            MenuItem m = PluginRootMenu.MenuItems.Add("Show " + plugin.FriendlyName + " Help", new EventHandler(CommandForm.Menu_Help_Click));
                            m.Tag = cmds;
                        }
                    }

                    this.lsvPlugins.Items.Add(li);
                }
            }
            CommandForm.setMenu(PluginMenu);
        }