Micaps3.2二次开发实例教程-13

第十三节        实例八-让Micaps的综合图菜单自动生成

Micaps的主菜单用户是可以根据需要编辑的,但Micaps的各类数据菜单项目极多,2000多行,手工编辑会累死人的。

由于在SharpDevelop的架构中,主菜单是由Addin文件定义的,代码均无法动态生成菜单项,所以Micaps开发人员编写了“菜单文本编辑”软件来生成AddIns\DataShortcut\DataShortcut.Addin文件,实现菜单编辑,

但这样仍显得不直观,太麻烦,很少有人大量修改自带菜单。能不能根据综合图目录结构自动创建菜单呢?

想想Sharpdevelop里的“最近打开文件列表”、“窗口列表”等菜单不就是动态生成的吗?SharpDevelop还是留有接口的。

这一节,我们就来制作一个Micaps综合菜单自动生成插件。

1、Addin文件

     
             


与HelloWorld类似,我们给Micaps的主菜单增加了一个菜单项,与HelloWorld不同的是,这个菜单项的type属性为“Builder”,代表的意思是这是一个由代码生成的菜单,生成这个菜单的类名是CmbMenuBuilder。

2、代码

        代码中,我们要实现Addin文件中指定的生成菜单的类CmbMenuBuilder,该类需要实现ISubmenuBuilder接口。IsubmenuBuilder接口也很简单,只包含一个方法。代码关键部分如下:
    
public class CmbMenuBuilder : Micaps.WinForms.ISubmenuBuilder
{      
        public ToolStripItem[] BuildSubmenu(Micaps.Core.Codon codon, object owner)
        {
            List menus = new List();
            ToolStripMenuItem item = new ToolStripMenuItem();
            item.Text = "综合图";
            item.DisplayStyle = ToolStripItemDisplayStyle.Text;
            FindFile("data/zht", item);
            menus.Add(item);
            return menus.ToArray();
        } 
        #endregion
}

代码中FindFile方法是递归查找文件的代码,这里不列出来了。

编译完成后,运行Micaps,主菜单上将出现综合图菜单项,自动根据目录结构生成了菜单,单击菜单项能显示数据。有了这个插件,Micaps里原有的地面、高空、T639、EC等菜单意义就不大了,可以删掉它,修改AddIns\DataShortcut\ DataShortcut.Addin文件,删除里面不需要的菜单项(2000多行),然后运行Micaps,效果如下:

Micaps3.2二次开发实例教程-13_第1张图片

你可能感兴趣的:(Micaps3.2二次开发实例教程-13)