SharpDevelop插件开发手册
SharpDevelop插件开发手册部分内容摘取自:http://www.cnblogs.com/CBuilder的SharpDevelop开发教程
SharpDevelop插件开发手册
第一章 Pad
Pad(面板)就是插件框架中的停靠窗口。有这些特点:Pad不能关闭,但可以隐藏或显示。每种类型的Pad只能打开一个,不能在运行时添加,标题唯一。可以显示图标,由插件框架中的布局管理器负责管理。通常不显示文件内容,而是辅助用户完成任务。
下面进入我们的实战流程,先新建一个类库型的项目,命名为CSPadDemoPlug,把Class1.cs改名为Main.cs,修改为如下内容:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

记得要在项目中加入插件框架中的ICSharpCode.Core.dll和SharpDevelop.Base.dll引用。这两个文件在插件框架下的Bin目录下。写插件框架的插件需要包含。
在项目中添加新建项à用户控件。改名为CSPadControl。各位可以在CSPadControl上添加一些相关的内容。
在工程中添加一个DemoPlug.addin文件,这是插件配置文件,很重要,内容如下:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

OK!把编译后的PadDemo.dll和DemoPlug.addin文件拷贝到的/AddIns/目录下,运行插件框架就可以看到我们创建的Pad了(如下图),同时在插件框架的菜单【查看】-【工具】下也出现了TestPanel菜单项。
如果需要指定pad的图标时,可以改更改base("TestPanel")为 base("TestPanel", "IconID")。
InconID为图标的资源号,作为演示你可以用Class的图标“Icons.16x16.Class”来替代。
要点分析:
制作Pad的时候要从AbstractPadContent继承。所以要using ICSharpCode.SharpDevelop.Gui;
第二章 工作区
第一节 创建工区作
View(工作区)是SD的基础部分,View通常包含编辑器,如代码编辑器,资源编辑器。基本上,它是显示于MPI窗口选项卡页面上的面板。
制作View要从AbstractViewContent继承下来。下面就进入我们的实战操作流程,首先新建一个类库行的项目,SDViewDemoPlug,把Class1.cs改名为Main.cs,修改为如下内容:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

添加一个新类,SDViewContent,文件名为SDViewContent.cs,修改内容如下:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

在项目中添加新建项用户控件。改名为SDViewControl。各位可以在SDViewControl上添加一些相关的内容。最后添加插件配置文件ViewDemoPlug.addin,内容如下:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

还有不要忘记把ICSharpCode.Core.dll和SharpDevelop.Base.dll引用进项目中来。编译后把ViewDemoPlug.addin和SDViewDemoPlug.dll拷贝到SD的/AddIns/目录下。运行SD,就可以看到在【工具】菜单下出现了【ShowMyView】菜单项。Click【ShowMyView】菜单项后显示如图,再click【ShowMyView】菜单项后就会又显示一个TestView。各位如果问:“需要做象“启动页”一样的View,如果已经有打开的了就会激活打开的View该如何处理呢?”。其实很简单,你可以把ShowViewCommand类中的Run函数更改为:

2

3

4

5

6

7

8

9

10

此Demo演示了如何在SD添加一个View,同时也演示了如何在SD中更改菜单项。每添加一个菜单项时都要继承一个AbstractMenuCommand,并且改写Run()函数,当然你的XXXCommand也可以从SD的AbstractCommand继承,但要实现IMenuCommand接口。因为添加菜单项和添加工具条按钮比较简单,在以后的内容中我会一起讲,在此我就不多说了。
第二节 工作区关闭控制
插件框架的工作区(AbstractViewContent)和主窗体(WorkbenchSingleton.MainForm)在是否关闭可能通过窗体的Closing事件来进行控制,和普通窗体关闭事件没有太大区别。
MainForm和常用的窗体没有什么区别,这里就不做特殊说明。
由于工作区本身不是一窗体,所以它没有Closing事件,但是它本身是有父窗体(AbstractViewContent.WorkbenchWindow)的,我们完全可以通过它父窗体的Closing事件来进行控制,示例如下:

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

第三章 配置文件
一、菜单配置

2

3

4

5

6

7

8

1)id:代表唯一标识
2)label:是菜单的标题,它即可以从资源文件中读取,也可以直接进行设置,如果要设置热键,格式如下:(&字母)
3)icon:表示,菜单的图标,该图标在resource格式的文件中定义
4)shortcut:设置快捷键
5)link:这里就是当前菜单项要链接的网址,也可以链接外部文件,示例如下:link = "home://doc/ReadMe.rtf",表示主程序上级的doc目录下的ReadMe.rtf文件。
6)class:表示该菜单对应的命令。
7)insertafter:表示插在哪个菜单项之后
如果要建立子菜单只需要添加MenuItem子节点即可,格式如下:

2

3

4

5

二、MenuItem类型
MenuItem共有四种类型
1) type = "Menu" 普通父菜单
2) type = "Separator" 分隔符
3) type = "Item" 菜单项
4) type = "Builder" 由代码购建的菜单,如文件历史列表
三、状态控制
插件框架中生成的工具栏按钮和菜单项都可以通过配置文件来进行控制。
示例如下:

2

3

4

5

6

7

8

9

10

11

12

13

14

配置的关键字为:Condition ,它含两个属性(name 和action),name 的名称对应 runtime中定义的ConditionEvaluator的name,它和程序中从IConditionEvaluator接口继承的状态控制类形成对应关系

2

3

4

5

6

7

8

IConditionEvaluator接口非常简单,只有一个IsValid方法。
配置文件中的条件在“IsValid”返回false时执行,执行结果由来action决定。
action共有3种状态:

2

3

4

5

6

Nothing:表示什么都不做
Execlude:表示一笔移除
Disable:表示改变状态为不可用
默认为:Execlude
SharpDevelop插件开发手册的更多相关文章
- Discuz! X 插件开发手册
文件命名规范 Discuz! 按照如下的规范对程序和模板进行命名,请在设计插件时尽量遵循此命名规范: 可以直接通过浏览器访问的普通程序文件,以 .php 后缀命名. 被普通程序文件引用的程序文件, ...
- 【miscellaneous】 GStreamer应用开发手册学习笔记之基础概念介绍
第3章. 基础概念介绍 本章将介绍GStreamer的基本概念. 理解这些概念对于你后续的学习非常重要,因为后续深入的讲解我们都假定你已经完全理解了这些概念. 3.1. 元件(Elements) 元件 ...
- Dynamics CRM 开发模板使用手册(插件开发)
CRM开发手册 本手册介绍在Visual Studio 2015 + Dynamics CRM Developer Extensions模板开发环境下,插件和JS脚本的开发.部署与调试过程. 手册中提 ...
- Sonar Java 规则插件开发 (基于阿里开发手册)
引言 最近在做Sonar静态代码扫描管理,以此顺手接了Sonar的插件开发,基于阿里开发手册进行开发,在整体开发过程中,其中还是遇到不少坑位,也以此给大家做相应借鉴官网Demo演示插件开发地址:htt ...
- sublime text 插件开发
前言:术语和参考资料 sublime text 2的扩展模式相当的丰富.有多种方法可以修改语法高亮模式以及所有的菜单等.它还可以创建一个新的build系统,自动补全,语言定义,代码片段,宏定义,快捷键 ...
- sublime插件开发手记
原:http://blog.hickwu.com/sublime插件开发手记 标题: sublime插件开发手记 时间: 2014-01-05 14:58:02 正文: 插件基本结构 基本插件实现 ...
- MyBean 框架入门手册<感谢[青铜]整理的如此细致和系统>
MyBean 框架入门手册 2014/9/15 by lighttop 目 录 MyBean 框架学习笔记............................................... ...
- MyBatis实现与插件开发
分析源码之前也需要源码下载并安装到本地仓库和开发工具中,方便给代码添加注释:安装过程和mybatis源码的安装过程是一样的,这里就不再重复描述了:下载地址:https://github.com/myb ...
- 方案设计:基于IDEA插件开发和字节码插桩技术,实现研发交付质量自动分析
作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 如何保证代码质量? 业务提需求,产品定方案,研发做实现,测试验流程.四种角色的相互配 ...
随机推荐
- OR1200数据Cache运用情景分析
以下摘录<步骤吓得核心--软-core处理器的室内设计与分析>一本书 13.7DCache使用情景之中的一个--存储指令运行阶段DCache失靶 存储指令运行阶段DCache失靶这样的情景 ...
- 理解JavaScript继承
原文:理解JavaScript继承 对于JavaScript的继承和原型链,虽然之前自己看了书也听了session,但还是一直觉得云里雾里,不禁感叹JavaScript真是一门神奇的语言.这次经过Sp ...
- 软件开发V型号
RAD(rap application development),就是软件开发过程中的一个重要模型,称为高速应用开发模型.其模型构图形似字母V,所以又称V模型. 他通过开发和測试同一时候进行 ...
- 转载Worktile 技术架构概要
Worktile 技术架构概要 其实早就该写这篇博客了,一直说忙于工作没有时间,其实时间挤挤总会有的,可能就是因为懒吧!从2013年11月一直拖到现在,今天就简单谈谈 Worktile 的技术架构吧 ...
- MySQL检查连接的最大数量和改变的最大连接数
版权声明:本文博主原创文章.博客,未经同意不得转载.
- 勾选Create git respository的作用
在Xcode中创建项目时会弹出Source Control选项,勾选Create git repository选项可以帮助我们对照以前项目中代码中修改的部分,为开发提供方便. 在项目完成到一定程度时, ...
- 怎样将IPhone应用程序软件公布到应用程序商店?
转自:http://www.shtion.com/667.html 怎样将IPhone应用程序软件公布到应用程序商店? 2009年10月19日公布 分类: App store, iphone, 手机应 ...
- MVC 5 Web编程2 -- URL映射
ASP.NET MVC 5 Web编程2 -- URL映射(路由原理) 2015-02-12 08:50 by hangwei, 704 阅读, 5 评论, 收藏, 编辑 本章将讲述ASP.NET M ...
- IE中的事件对象
IE中的事件对象 1)type属性 用于获取事件类型 2)srcElement属性 用于获取事件的目标 3)cancelBubble属性 用于阻止事件冒泡 设置为true表示阻止事件冒泡 设置为fa ...
- C# 笔试题,看你会几道题
1. Which interface you need to implement to support for each? IEnumerator IEnumerable ICompare ...