예제 #1
0
        private ButtonMenuItem LoadPluginsInUi(IPlugin plugin, bool isRoot)
        {
            var item = new ButtonMenuItem();

            var title = plugin.PluginInfo.Name;

            item.ID    = title;
            item.Text  = title;
            item.Order = plugin.PluginSetting.IndexInList;

            // 如果是插件,添加Run按钮
            if (isRoot)
            {
                var pluginRun = new Command()
                {
                    ID       = "Show",
                    MenuText = "Show " + title,
                    Tag      = plugin,
                };
                pluginRun.Executed += pluginRun_Click;
                item.Items.Add(pluginRun);
            }

            // 添加子插件按钮
            var childs = PluginProvider.GetChildPlugins(plugin);

            if (childs.Any())
            {
                item.Items.AddSeparator(80000 - 1);
                var pluginChild = new ButtonMenuItem()
                {
                    ID    = "Childs",
                    Text  = "Child Plugins",
                    Order = 80000
                };
                foreach (var c in childs)
                {
                    pluginChild.Items.Add(LoadPluginsInUi(c, false));
                }
                item.Items.Add(pluginChild);
            }
            // 添加分隔符
            item.Items.AddSeparator(90000 - 1);
            // 添加About按钮
            var pluginAbout = new Command()
            {
                ID       = "About",
                MenuText = "About",
                Tag      = plugin
            };

            pluginAbout.Executed += pluginAbout_Click;
            pluginAbout.Tag       = plugin;
            item.Items.Add(pluginAbout, 90000);

            return(item);
        }