【utools学习日记四】模板插件-列表模式实例

一、简介

  • 真香定理又出现了,一开始看官方介绍模板插件,感觉也没有多好用,结果一用,真香。本节简单用一个实例,来介绍下模板插件的列表模式。
  • 实例功能是:输入一个template的名字,自动帮我打开cocos studio的ui编辑器,并且打开这个template。(偷了个懒,该功能直接使用wox中自己实现的一个python脚本,wox也是不错的桌面工具,主要是使用python进行开发,感兴趣的可以阅读煎饼大佬的浅谈Wox插件的编写
  • 该python脚本主要是通过传入操作指令和template名来使用。
cmd = sys.argv[1]
if cmd == "add":
    uiName = sys.argv[2]
    openUi(uiName)
elif cmd == "clear":
    clearUi()

二、列表模式的编写

  • 首先要去掉plugin.js里的main字段,不使用入口html去配置插件前端。
{
    "pluginName": "openY6ui编辑器",
    "description": "打开y6ui编辑器",
    "preload": "preload.js",
    "version": "0.0.1",
    "features": [
        {
            "code": "opui",
            "explain": "打开ui编辑器",
            "cmds":["opui"]
        }
    ]
}
  • 在preload.json配置模板插件,通过实现window.exports属性来配置,以下是具体代码:
let exec = require('child_process').exec
window.exports = {
    "opui": { // 注意:键对应的是plugin.json中的features.code
        mode: "list",  // 列表模式
        args: {
            enter: (action, callbackSetList) => {
                //选项条:进入插件时会出现以下配置的2个选项:openUI和clearUI
                callbackSetList([
                    {
                       title: 'openUI',
                       description: '打开UI',
                       icon:''
                    },
                    {
                       title: 'clearUI',
                       description: '清掉缓存',
                       icon:'',
                    }
                ])
            },
            search: (action, searchWord, callbackSetList) => {
                //选项条:子输入框输入时会出现以下配置的2个选项:openUI和clearUI
                callbackSetList([
                    {
                       title: 'openUI',
                       description: '打开UI',
                       icon:'',
                       //这里给openUi的itemData加上搜索内容
                       searchWord : searchWord
                    },
                    {
                       title: 'clearUI',
                       description: '清掉缓存',
                       icon:'',
                    }
                ])
            },
            // 用户选择列表中某个条目时被调用
            select: (action, itemData, callbackSetList) => {
                // 点击列表选项或者输入框里回车时,会传入enter或search里的callbackSetList的属性。
                if(itemData.title == 'openUI'){
                    exec('python %s'.format(REAL_PATH_DIR+"openUi.py add "+itemData.searchWord))
                }else{
                    exec('python %s'.format(REAL_PATH_DIR+"openUi.py clear"))
                }
                //隐藏掉utools
                utools.hideMainWindow()
            },
            placeholder: ""
        } 
    }
}
image
  • 模板插件还有无UI模式和文档模式,感兴趣可以直接官网文档。

三、小结

  • openUi.py的脚本代码就不展示了,这里实际就是通过nodejs的child_process模块的exec接口,去调用python文件。并且传入参数,utools提供模板插件的列表模式,能很简单的实现在wox开发python插件时几乎一样的效果。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容