-
Notifications
You must be signed in to change notification settings - Fork 224
插件开发实例·IronPython
keepwn edited this page Nov 15, 2014
·
2 revisions
- 新建一个文本文档,命名为
IronPythonPluginTest.py
。 - 导入模块
clr
,且clr
添加引用Altman.Plugin
,如下:
import clr
clr.AddReference('Altman.Plugin')
from Altman.Plugin.Interface import IPluginInfo,IPluginSetting,IControlPlugin
import sys,os
- 实现一个类,继承于
IPluginInfo
,用于定义插件信息,如下:
class PluginInfo(IPluginInfo):
@property
def Name(self):
return 'IronPythonPluginTest'
@property
def FileName(self):
return 'IronPythonPluginTest.py'
@property
def Version(self):
return '1.0'
@property
def Author(self):
return 'Keepwn'
@property
def Description(self):
return 'this is a ironpython plugin demo.'
- 实现一个类,继承于
IPluginSetting
,用于定义插件配置,如下:
-
IsAutoLoad
用于设置插件是否需要自动加载; -
IndexInList
用于设置插件出现在Plugins菜单中的位置 -
LoadPath
用于设置插件装载点,默认为空,如果需要作为某个插件的子插件,则可以填写为父插件名。
class PluginSetting(IPluginSetting):
@property
def IsAutoLoad(self):
return False
@property
def IndexInList(self):
return 1
@property
def LoadPath(self):
return ''
- 实现一个类,继承于
IControlPlugin
,用于实现插件接口。其中:
- 如果继承于
IControlPlugin
,则创建控件类插件,插件将出现在标签页中 - 如果继承于
IFormPlugin
,则创建窗体类插件,插件将以窗体形式出现 - 类名前需要声明导出类型
@export(IPlugin)
,声明这是一个IPlugin类型的插件 - 同时还需要定义一个
IHost
类型的字段,同时声明@import_one(IHost)
,此字段可以调用由宿主框架提供的各种方法。(只有在插件构造函数初始化完毕后,此字段才会被实例化,也就是说在构造函数中无法使用这个字段) -
Load()
用于插件初始化,由框架默认调用,当插件构造函数初始化完毕后,将自动调用该方法。经常用于插件的初始化操作,如果初始化正常,则返回true,默认为true -
Show(PluginParameter data)
用于显示插件。参数类型为PluginParameter
,返回类型为Panel
或Form
@export(IPlugin)
class Plugin(IControlPlugin):
def __init__(self):
self.userControl = None
self.pluginInfo = PluginInfo()
self.pluginSetting = PluginSetting()
@import_one(IHost)
def import_host(self, host):
self.host = host
@property
def PluginInfo(self):
return self.pluginInfo
@property
def PluginSetting(self):
return self.pluginSetting
def Load(self):
return True
def Show(self, argv):
#self._userControl = MyFirstPlugin(_host,data)
#return self._userControl
pass
def Dispose(self):
self.userControl = None
- 保存文件到
Plugins/IronPythonPluginTest/IronPythonPluginTest.py
,要求保存的目录与插件名同名。 - 运行主程序,即可在菜单
Plugins
中找到插件IronPythonPluginTest
。