首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > JavaScript >

替基于GTK/CLUTTER的库增加GJS支持

2012-07-05 
为基于GTK/CLUTTER的库增加GJS支持参考GObject Introspection官方网址:http://live.gnome.org/GObjectIntr

为基于GTK/CLUTTER的库增加GJS支持

参考GObject Introspection官方网址:

http://live.gnome.org/GObjectIntrospection

gtk gjs教程:

http://zetcode.com/gui/javascriptgtktutorial/

?

? 在gnome shell中可以使用GJS来调用常用的GTK/CLUTTER/DBUS等库。这些库在编译的过程中通过生成.gir .typelib文件,使得gjs可以直接进行import。

这些文件的具体路径为:

/usr/share/gir-1.0/Gtk-3.0.gir

/usr/lib/girepository-1.0/Gtk-3.0.typelib

?

直接在gjs文件中的使用方法testgtk.js:

imports.gi.versions.Gtk = '2.0';// GObject Introspection APIs are available from imports.gi.Modulenameconst Gtk = imports.gi.Gtk// JavaScript imports happen via imports.filename, where filename.js// is assumed to be available in module/ folderGtk.init (0, null);let win = new Gtk.Window({type: Gtk.WindowType.TOPLEVEL});win.set_border_width(10);win.connect('destroy', function (){Gtk.main_quit();});let button = new Gtk.Button({label: "Hello, world"});button.connect('clicked', function (){button.set_label("Bar");});win.add(button);button.show();win.show();Gtk.main();
??

运行:gjs testgtk.js


替基于GTK/CLUTTER的库增加GJS支持

?

?

gir的层次结构:

BUILD TIME:          +-----------------------+          |   foo.c                                                   |          |   foo.h                                                   |          |                                                           |          | Library sources, with type annotations                    |          +-----------------------+              |                                      |             gcc                                 g-ir-scanner              |                                      |              |                                      V              |                              +------------------------+              |                              |    Foo.gir             |              |                              |                        |              |                              |    <GI-name>.gir       |              |                              |                        |              |                              | XML file               |              |                              |                        |              |                              | Invocation information |              |                              | Required .gir files    |              |                              | API docs               |              |                              |                        |              |                              +------------------------+              |                                          |              |                                     g-ir-compiler              |                                          |  DEPLOYMENT TIME:                                       |              |                                          |              V                                          V        +-----------------------------+      +---------------------------+        |   libfoo.so                 |      |    Foo.typelib            |        |                             |      |                           |        |                             |      | Binary version of the     |        |  ELF file                   |      | invocation info and       |        |                             |      | required .typelib files   |        |  Machine code, plus         |      +---------------------------+        | dynamic linkage information |                  A        | (DWARF debug data, etc)     |                  |        +-----------------------------+                  |                     A                                   |                     |                       +---------------------------+                     |                       |  libgirepository.so       |                +-----------+                |                           |                | libffi.so |                |  Can read typelibs and    |                |           |<-------+------>|  present them in a        |                +-----------+        |       |  libffi-based way         |                                     |       |                           |                                     |       +---------------------------+                                     |                                     |                           +----------------------------+                           | Specific language bindings |                           +----------------------------+

热点排行