Esempio n. 1
0
        /// <summary>
        /// 从插件方案中查找<see cref="MenuStrip"/>对应的插件,加载插件
        /// </summary>
        /// <param name="menuStrip"></param>
        /// <param name="pluginPlan"></param>
        /// <param name="cmdData">插件命令的传入参数,泛型对象</param>
        public static void LoadPlugins <TCmdData>(this MenuStrip menuStrip, IPluginPlan pluginPlan, TCmdData cmdData)
        {
            var form      = menuStrip.FindForm();
            var view      = pluginPlan.QueryViews(form);       //找到窗体对应的插件视图
            var container = QueryContainer(view, menuStrip);   //找到控件对应的插件容器

            menuStrip.LoadPluginContainer(container);          //向控件加载插件容器包含的插件
            container.LoadPluginCommands(cmdData);             //创建容器包含的插件对应的命令
        }
Esempio n. 2
0
        public MenuStripDBusMenu(MenuStrip menu)
        {
            if (menu == null)
            {
                throw new ArgumentNullException("menu");
            }
            lock (mLockObject) {
                mMenuParentForm = menu.FindForm();

                mMenuItemList = new List <IMenuItemProxy>();

                mMenuItemList.Insert(0, new MenuStripProxy(menu));
                AddItemsToMenuItemList(menu.Items);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// 向插件窗口的<see cref="MenuStrip"/>加载插件
        /// </summary>
        /// <param name="container"></param>
        /// <param name="menuStrip"></param>
        public static void LoadPluginContainer(this MenuStrip menuStrip, IPluginContainer container)
        {
            var form = menuStrip.FindForm();

            foreach (var subContainer in container.SubContainers)
            {
                var menuItem = CreateMenuItem(container);
                menuStrip.Items.Add(menuItem);

                foreach (var container1 in subContainer.SubContainers)
                {
                    LoadPluginContainer(subContainer, menuItem, form);
                }
            }

            foreach (var plugin in container.Plugins)
            {
                menuStrip.Items.Add(CreateMenuItem(plugin, form));
            }
        }
Esempio n. 4
0
 /// <summary>
 /// Tracks the commands.
 /// </summary>
 /// <param name="strip">The strip.</param>
 public static void TrackCommands(MenuStrip strip)
 {
     TrackCommands(strip, strip.FindForm());
 }