EasyGo插件开发指南python篇
简介
EasyGo借鉴了wox的插件架构,尤其是python插件,几乎差不多,所以如果你开发过wox的python插件,那么可以很容易的将它移植到EasyGo上面来。一个python插件是由三部分组成,py源文件,plugin.json配置文件和应用图片。
架构
插件的整体架构如图
插件接口介绍
python的插件接口相对于c++要简单许多,因为针对python插件开发封装了一个python插件类供python插件继承使用
下面是一个简单的python插件示例,插件示例需要是utf8格式
import uuid
import clipboard
# PythonPlugin是python插件的封装类,文件位于JsonRPC下面
from PythonPlugin import PythonPlugin
class Main(PythonPlugin):
# 初始化插件,插件可以在这里做一些准备性工作,比如保存传入的插件路径,用来创建配置文件
# [in] pluginPath:当前插件位于的文件夹路径
# 此函数可以不需要重写,可以去掉
def InitPlugin(self,pluginPath):
return True
# 查询函数,使用EasyGo传入的查询关键字来获取结果列表并返回,返回值是数组
# [in] param:用户输入查询参数,字符串类型
def Query(self, param):
# results为结果数组
results = []
results.append({
"Title": "Demo", #这是EasyGo上行文字
"SubTitle": "this is a Demo", #这是EasyGo的下行文字
"IconPath": "img/app.png", #这是结果图标,可以为空,则用插件默认图标
"Action": { # 用户选中某个结果回车或者鼠标左击操作响应的函数设置
'FuncName': 'copy_to_clip', # 函数名,如果是自定义函数需要在类中定义,见下面
'Parameter': param, # 函数参数, 函数只有一个参数,字符串类型,而且无返回值
'HideWindow': True # 在响应用户操作后是否隐藏窗口,可省略,默认为True
}
})
return results
@staticmethod
def copy_to_clip(self, text):
clipboard.copy(text)
if __name__ == '__main__':
Main()
EasyGo提供给插件的接口
EasyGo 为插件提供了一些现有的回调接口,它们的调用方法和上述的Action
结构一样,将下面的函数名传入FuncName
,然后传入Parameter
参数即可使用
Ra_CopyPath
: 会拷贝Parameter文字内容到剪切板
Ra_Copy
:这个会拷贝Parameter指定的文件到剪切板,你可以在桌面上进行粘贴文件操作
Ra_CopyImage
:拷贝图片到剪切板,可以进行图片粘贴操作
Ra_Delete
:删除Paramter参数指定的文件或者文件夹 (不可恢复,非移动到回收站,请注意)
Ra_Recycle
:删除Paramter参数指定的文件或者文件夹到回收站
Ra_Open
:打开Parameter指定的可执行程序或者文件夹
Ra_OpenFileFolder
:打开Parameter指定文件路径所在的文件夹
Ra_OpenWeb
:打开Parameter指定的网址
Ra_ChangeQuery
:会设置EasyGo输入框的值为Parameter字符串,如果和之前输入框的文字不同会触发一次查询操作
Ra_ShowContent
: 会弹出一个文本浏览框显示你传入的Parameter内容,纯文本
还有一种接口主要提供给python插件在自定义回调接口中使用,不能使用在InitPlugin,Query和GetContextMenu里面,使用这些接口需要
from PythonPlugin import PythonPluginAPI
目前提供的接口如下
PythonPluginAPI.ChangeQuery(query)
: 修改输入框的查询字符串,query为字符串类型,如果文本发生改变会触发重新查询
PythonPluginAPI.Reload()
: 重载EasyGo
PythonPluginAPI.ReQuery()
: 强制重新查询,而不管输入框的文本是否发生变化
配置文件
{
"ID":"98451A7B5C764F6A9A3814EF7E4AFEEC", 这个是guid唯一标示
"Keyword":"guid", 这个是插件关键字,用户使用该默认关键字出发插件功能
"Name":"生成Guid", 插件名
"Description":"生成Guid", 插件描述
"Author":"zsxeee", 插件作者
"Version":"1.0.0", 插件版本
"PluginType":"python", 插件类型,目前只有c++和python两种
"PluginMode":"EnterMode", 插件模式,EnterMode或者RealMode,此字段可以省略,默认为RealMode
"AcceptType": "png,ico,folder", 插件支持的拖入的文件类型,就是文件的后缀名,其中唯一特殊的是folder,代表插件可以接受文件夹路径参数
"IconPath": "img\\app.png", 插件图标
"ExeName":"Main.py", 插件源文件名字
"CfgPath": "set.json" 插件的配置选项,可以用相对路径,可以指定配置文件名也可以指定设置界面程序。配置文件或者配置程序会在插件管理界面右键设置打开
}
插件打包
插件打包后的格式是 插件名.Plugin
,其实就是将插件的三个文件打包成zip文件,然后把zip后缀改成Plugin即可,记住了,打包的时候插件的外层不要有文件夹
然后如果你的插件需要依赖一些Python库,那么请放入requirements.txt,一个完成的包如图:
其中requrements.txt里面,每个包名占一行,包不建议加上版本号
具体的使用方法请参考示例
赞赏微信赞赏
支付宝赞赏