Skip to content

插件开发实例·IronPython

keepwn edited this page Nov 15, 2014 · 2 revisions
  1. 新建一个文本文档,命名为IronPythonPluginTest.py
  2. 导入模块clr,且clr添加引用Altman.Plugin,如下:
import clr
clr.AddReference('Altman.Plugin')
from Altman.Plugin.Interface import IPluginInfo,IPluginSetting,IControlPlugin
import sys,os
  1. 实现一个类,继承于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.'
  1. 实现一个类,继承于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 ''
  1. 实现一个类,继承于IControlPlugin,用于实现插件接口。其中:
  • 如果继承于IControlPlugin,则创建控件类插件,插件将出现在标签页中
  • 如果继承于IFormPlugin,则创建窗体类插件,插件将以窗体形式出现
  • 类名前需要声明导出类型@export(IPlugin),声明这是一个IPlugin类型的插件
  • 同时还需要定义一个IHost类型的字段,同时声明@import_one(IHost),此字段可以调用由宿主框架提供的各种方法。(只有在插件构造函数初始化完毕后,此字段才会被实例化,也就是说在构造函数中无法使用这个字段)
  • Load() 用于插件初始化,由框架默认调用,当插件构造函数初始化完毕后,将自动调用该方法。经常用于插件的初始化操作,如果初始化正常,则返回true,默认为true
  • Show(PluginParameter data) 用于显示插件。参数类型为PluginParameter,返回类型为PanelForm
@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
  1. 保存文件到Plugins/IronPythonPluginTest/IronPythonPluginTest.py,要求保存的目录与插件名同名。
  2. 运行主程序,即可在菜单Plugins中找到插件IronPythonPluginTest

i am ready.

Clone this wiki locally