[gqq] gkiu core 2.9.9 合并入gqqdev仓库

  • From: Mike Ma <zhtx10@xxxxxxxxx>
  • To: gqq@xxxxxxxxxxxxx
  • Date: Thu, 07 Jul 2011 16:31:43 +0800

大家好!

嗯,现在的版本是2.9.9(设完后才发现2.9.0可能更合适),这个版本号是为3.x
做准备的。因为大的架构到现在已经变化了三次。

现在已经合并入gqqdev仓库了
http://github.com/gqqdev/gkiu

目前所在的进度是:
1. 可以查到插件
2. 可以启动插件
3. 可以依赖插件

现在的core还有两个硬伤:
(1) 在运行时自动启动插件(这种插件称为*自启动插件*)
(2) 插件间的互相调用(插件依赖已经由libpeas支持了)
    最麻烦的便是Python插件,我只会Python的简单应用。
    (如果仅由core调用,那是非常简单的。)

如果有了这两个,并且Core比较稳定,就可以按3.0正式发布了。

关于(1),现在的打算是使用GSettings(在Windows(R)上有注册表后端,不过不清
楚在BSD和OS X上怎么样)把要自启动的插件塞进配置,不过我觉得可能libpeas已
经提供了这种功能,但是我还没有找到,我觉得如果没有默认提供,IAge可能是最
接近的,在程序中遍历每个插件的IAge,如果是自启动的标准就应用,不过目前还
不清楚 IAge 到底是做什么的。
在这里有一份非官方的关于IAge的wiki,我看了后还是不太明白,有点类似于版本
号?希望谁看懂了能解释一下:
https://github.com/gregier/libpeas/wiki/IAge

关于(2),我已经询问过 Nud 了。这是Nud给我的回复:
You need to have introspection data available for the types you use as
plugins. As long as you only use PeasActivatable, you will be fine with
the data provided by libpeas itself, but if you want to use your own
interfaces you will need to provide your own introspection data.
pygobject also depends on gobject introspection now, so it means you
won't be able to use objects you defined yourself as well if you don't
have introspection data handy, but it's ok if you only use Gtk and other
libraries providing their own introspection data. You can have a look at
how gedit uses libpeas if you wish.

就是如果自己做了自己的插件类,那么就要提供GObject Introspection。如果不
是,直接require
libpeas即可(后半句来自Devhelp)。(结果我曲解了他的意思,以为每个插件都
要有,于是就给keyring加上了,加完才发现有点不对劲。。于是以后还要移除
keyring的Introspection数据。)
现在就是有两种办法, 
I. 在每个插件中提供一个接口,core调用这个接口并将core中调用插件接口的函
数提供进去,如果程序需要就直接使用它。优点:简单方便;缺点:似乎就是凑合
的代码,
II. 新增一个GObject类,基于PeasActivatable,所有的插件均基于这个类。优
点:优雅;缺点:麻烦,要在Makefile.am里面增加一堆和GObject Introspection
有关的东西。(似乎用AutoTools都有点得不偿失)
目前打算使用的是第二种方案,在src下就是plugin-object.c。

不知谁有好的想法?另外,如果你看懂了那个IAge的wiki,请告诉一声,嗯,如果
不忙的话,也请帮忙coding一下!非常感谢!


Other related posts:

  • » [gqq] gkiu core 2.9.9 合并入gqqdev仓库 - Mike Ma