为NEO-GUI 添加插件系统
qaz88889999
发表于 2022-12-10 01:42:54
194
0
0
虽然NEO-GUI定位为一个演示客户端与开发工具,不过使用他的开发者还是很多的,大家都要对NEO-GUI进行各式各样的修改。! _) n! |' g7 n7 q- ^$ V
那么为什么不增加一个插件机制呢,说干就干。
先贴地址,此分支版本的源码在:https://github.com/lightszero/neo-gui.git
为neo neovm neogui 三合一,随时和NEO仓库保持同步。. @2 i6 h0 q# A" ]% k |
先增加一个插件模块,里面有两个接口,一个IAPI,提供客户端暴露给插件使用的接口
NEOGUI 继承此接口。另一个是IPLUGIN,插件实现此接口。& ]# z3 v% ~9 {3 P5 X
6 V; u- @5 J+ Z& z8 O5 \6 Y
然后在NEO-GUI启动时,动态寻找插件的dll,用反射方法找出其中的插件类型,并创建实例。6 h* ?; C: F/ G, w4 l
最后在NEO-GUI动态增加菜单,按下菜单时呼叫对应的插件。( ?9 a+ q) z6 ^, l
这个插件机制就完成了。2 h* V4 C7 m, G
我们先来看一下效果
刚加上插件机制,和普通客户端并无不同,那个good请无视掉,本来应该安置一个插件管理器什么的。- Q$ r3 \: ]; d+ h5 {9 {
在运行程序的目录
创建一个文件夹
把插件copy进去,重启gui即可生效。& U0 T) S$ {+ `3 m$ ?
我们先copy 一个 sample_plugin
效果如下,为这个插件增加了一个菜单项
功能是简单的弹出了一个对话框0 ?, b B: }' j! y
这个插件的源码非常简洁
我们再安装另一个插件,他有一个实际的功能,可以查询storage存储区里面的内容
% @' u$ t0 T1 X4 Z Y9 ]5 E7 ?
$ g' M1 L& K3 n* y8 x1 ]
对neogui源码的侵入性也很小
成为第一个吐槽的人