lgob函数调用分析

由于lgob没有文档,很多时候不知道如何使用,不过作者提供一些例子,而且lgob的函数名和原C的

函数名类似,遇到不懂的查看一下例子和gtk的参考文档都可以解决.

1.部件的使用. lgob的部件名去掉了原C中的Gtk前缀,通过gtk"类",new()函数创建.
C代码
GtkWidget *window;
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);

lgob代码
window = gtk.Window.new(gtk.GTK_WINDOW_TOPLEVEL)

2.常量的使用.比原C要多加上"gtk." ,如上例中的gtk.GTK_WINDOW_TOPLEVEL

3.部件属性设置 如窗口的属性设置
C代码
gtk_window_set_default_size(window,400,300);
gtk_window_set_title(window,"gtk窗口");
gtk_window_set_position(window,GTK_WIN_POS_CENTER);

lgob代码,非常简洁,而且属性的顺序可以颠倒
window:set("title","lgob测试","default-width",400,"default-height",300,
"window-position",gtk.WIN_POS_CENTER)

注意带有"GTK_"前缀的,"GTK_"前缀要去掉.如GTK_WIN_POS_CENTER变为
gtk.WIN_POS_CENTER. 属性的查找方式如图:
如查找GtkWidow的属性,打开devhelp后,点击"Properties"可以看到各种属性,及其取值

 



对于没有"Properties"的属性,如 gtk_window_set_screen()
直接使用window:set_screen()

4.信号及回调函数,如上图,点击“signal”可以看到当前部件可用的信号。
C代码
// 产生信号的部件 信号名称 回调函数 信号附带的数据
g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(sayHello), "你好");

lgob代码,不需要"产生信号的部件"
-- 信号名称 回调函数 信号附带的数据
button:connect("clicked",sayHello,"你好")

两者"信号附带的数据"都可以为空,C语言设为NULL ,lua中直接不写.

5.gtk相关的库
与c类似,也需要额外的引入语句,如要显示带图标的按钮
require('lgob.gdk')

6.内部图标命名

使用stock可以创建带有图标的部件如

new_from_stock("gtk-quit") --从stock创建
--在devhelp中搜索stock items 可以看到各种stock,lgob的命名只是把"GTK_STOCK_XXX"换成了"gtk-xxx"


总结,lgob与Gtk的C API非常类似,而且要简洁,还有很多时候要把"GTK_"换成"gtk."
由于我也只是看了一点,有误之处敬请指正!


posted @ 2012-11-08 22:24  半山th  阅读(420)  评论(0编辑  收藏  举报