1.前言
2.了解布局
3.Menus
1.前言
要制作vs插件,我们首先要确定你要将插件实现的功能加在哪个菜单下,是顶部的菜单,还是右键菜单,还是在工具目录下,或者,你想在工具下拥有多级菜单。
2.了解布局
要实现上面所说,我们需要了解一下vs中如何来布局的,这就要认识一个文件,vsct文件,你可以在你新建的插件工程中找到它,打开发现,其实它就是个xml文件,如果你学过网页或者android,或许能找到一点点熟悉的感觉。
可以看到,这个文件的根目录是 CommandTable,其下面有Extern,Commands,以及Symbols三个目录。
- Extern
这个用来导入一些常用的东西,一般系统会生成,你无需手动添加 - Commands
命令?嗯,是的,说到这里,我们有必要说清楚一件事,在vs中,所有的操作都是一条命令,比如点击工具的时候,会触发一条命令,而在命令中,就是对应的操作了。 - Symbols
符号,这个是用来标识一些常量,稍后我们可以看看他的具体用途
在这三个目录里,最为重要的就是Commands了,因为所有的命令布局,你或者可以说按钮布局,都是依托它来实现的。而在这个目录下,又存在三种结构,分别是:Menus,Groups,Buttons。看到这几个,你应该很快就明白了,菜单,分组,按钮。嗯,好像可以有无限可能了,菜单中放分组,分组里放按钮,按钮下方分组,但是!这个是有规定的:
Menus和Groups可以互相嵌套,而Buttons只能在Groups下面
为什么呢,虽然我没有看到官方的正规解释为何要这么规定,但是我想其中道理应该是如此:
Button其实最终是和一条命令绑定在一起的,真正有意义的是Button,它才触发命令,所以当你按下Button的时候不可能再创建一个Menus或者一个Groups,这就注定了Button只能在最底层。
3.Menus
看了上面的介绍,你会想,那到底什么是菜单,什么是分组?ok,我们来探讨下,例如顶部的文件,编辑,工具等等,这些都是菜单,我们点开工具
注意箭头指向的地方,是不是有一些横线?两条横线之间便是一个分组了。这是不是和之前说的Menus和Groups可以互相嵌套,而Buttons只能在他们下面吻合了呢。Menus下可以放Groups,或者Buttons。那什么时候放哪种?这取决于你是否拥有二级目录。工具这里的具体结构我们来列一下。
工具(菜单)
包含
附加到进程(分组)
连接到数据库(分组)
。。。
外接程序管理器(分组)
。。
一个菜单包含了多个分组,而在有些分组里,每组里面,又有自己的逻辑存在,你看到右边有个小箭头的,那么它就是拥有二级目录,这个有箭头的item必定是个菜单了。或许有点绕,但你仔细品味下,发现还是很符合逻辑的。菜单的存在是为了弹出二级界面,在耳机界面中用Groups来分组,如此循环,直到最后,可以将你要的操作分门别类。