LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: hulihutu

《用Glade2开发图形用户界面》目录初译及其它(陆续加入..)

[复制链接]
 楼主| 发表于 2003-7-5 14:46:52 | 显示全部楼层
大半部分翻译了,原版是html格式,现在为了粘贴方便很多图都没有上传。

最后完工,会上传一个html的打包文件。

另,哪位有空帮着校对一下,很多地方都是根据自己的理解翻译的,可不要误人子弟哦
 楼主| 发表于 2003-7-5 17:33:23 | 显示全部楼层
后端编程: 回到Gtemp
第一次编译
如果没有保存,就在glade的主窗口保存你的程序。点联编按钮来生成程序代码。 如果你想的话,可以检查一下gtemp子目录看生成些什么。


打开一个终端窗口
在gtemp目录,输入autogen.sh
你可以看到一长列autogen和autoconf的信息。除非 配置突然跳出,否则不用管它。
当autogen结束输入'make'。
进入/src子目录。列文件可以看到已经有一个gtemp的可执行文件。
输入./gtemp运行这个可执行文件。

gtemp程序开始运行。可以看到我们创建的所有窗口--主程序窗口和"关于"对话框都打开了。你可以关闭"关于"窗口,象前面所讨论的那样它已经设好了信号和回调函数。不过,我们不希望一下子打开两个窗口,这是我们要修改的第一件事情。

点窗口右上角X关闭程序。注意命令行并没有返回到开始运行gtemp的终端窗口。这是 因为为窗口图标自动创建的回调函数(最小化、最大化和关闭)没有完全关闭程序。这 显示得很愚蠢,同时你在一个程序里使用多个窗口。用户关闭弹出窗口,程序应该结束。 我们将来设置回调函数以便点击X时程序关闭。这是我们要修改的第二件事情。

我们需要当按下"退出"按钮或选择菜单条"文件"下的退出时程序能够退出。这是加入 第三件事情。还要当选择"帮助"菜单下"关于"菜单项时弹出"关于"窗口。还剩最后一个 事情, C 到 F 或 F 到 C 的实际转换。

程序开始时只打开一个窗口
打开一个编辑窗口。本教程作者使用Gvim,不过Emacs、gedit或一个字处理软件也 可以。Gvim和Emacs很适合,因为能给代码加颜色。打开gtemp的main.c文件。它在 /src子目录下。

main.c文件开头几行说明了glade不会改写这个文件,可以根据需要来修改它。记住, 如果你打开的glade生成文件没有这样说,就不要编辑它。来到main()函数,找到声明 GtkWidget *gtemp_about,删掉它。

向下翻找到
gtemp_about = create_gtemp_about ();
gtk_widget_show (gtemp_about);
删掉它们。

Glade为每一个设计的窗口生成create_xxx()函数比如create_gtemp_about()。当需要时可以用在你的代码中来创建它们。每一个窗口创建后用with gtk_widget_show()来显示。 现在我们删掉了这些行,不过很快会把它们加入到"关于"菜单项的回调函数中。

使Gtemp主窗口右上角的X工作
首先,我们需要加入另一个回调函数。在Glade选择Gtemp程序窗口,进入属性窗口。 在signals页,选择GtkWidget信号下的delete_event信号,把这个信号句柄加入列表,保存,重建程序。

用你选择的编辑器打开callbacks.c文件。你可以看到前面我们加入的所有信号句柄或 回调函数,刚才加入的delete event在文件的最下面。转到这儿。

加入
gtk_main_quit();

return FALSE;
在on_gtemp_app_delete_event()函数里。 想知道gtk_main_quit()函数的更多信息,你可以查询 gtk+ API在 gtk-General部分.

使"退出"菜单项和"退出"按钮工作
在on_quit1_activate()函数加入
gtk_main_quit()
函数调用。就做这么多。 on_quit_button_clicked()函数也这样处理。

选择"关于"菜单项时载入"关于"窗口
查找函数名为on_about1_activate()在这儿加入从main.c文件删 掉的创建窗口的代码。把下面的代码加进去:

GtkWidget *about

about = create_gtemp_about();
gtk_widget_show(about);

这就可以了。

现在可以测试刚才所做的工作。在/src输入make重新编译。如果没有打字或其它错误, make不会显示任何错误信息。运行gtemp检查我们所做的工作。

现在我们开始编写后端。这个很简单,不过在一个复杂的程序里,可能有几个辅助的 文件,绝大多数后端不会放在callbacks.c,比如在gtemp里.

最后使Gtemp能够转换温度单位
目前在callbacks.c里应该有四个空的回调函数。其中两个on_properties1_activate() 和on_preferences1_activate(),现在用不到。使用剩下的 on_fahr_entry_activate()和on_cel_entry_activate()。

我们将要编写一个函数叫做compute_temp(),它将被这两个 entry_activate回调函数调用。定义两个标志, C_TO_F和F_TO_C以便我们知道正在进行哪种转换。 Compute_temp()以调用的控件、用户输入的温度和转换类型做为参数。

在文件头部,在其它#define下面加入这几行

#define C_TO_F 0
#define F_TO_C 1

void compute_temp(GtkWidget *this_widget, float temperature, int type);

这是这些函数和标志的声明。

在文件尾部,所有回调函数的下面,加入这个函数:

void compute_temp(GtkWidget *this_widget, float temperature, int type)
{
   GtkWidget *other_entry = NULL;
   float result = 0.0;
   gchar *result_string = NULL;
   switch(type) {
     case C_TO_F:
       result = ((9.0 / 5.0) * temperature) + 32.0;
       other_entry = lookup_widget(this_widget, "fahr_entry");
       break;
     case F_TO_C:
       result = (5.0 / 9.0) * (temperature - 32.0);
       other_entry = lookup_widget(this_widget, "cel_entry");
       break;
   }
   result_string = g_strdup_printf("%5.2f", result);
   gtk_entry_set_text(GTK_ENTRY(other_entry), result_string);
   g_free(result_string);
}

单步执行这个函数,它声明了正确的变量,进入了一个分支语句,在这个语句中温度单位的转换取决于传入了哪个文本框:other_entry = lookup_widget(this_widget, "cel_entry"); and other_entry = lookup_widget(this_widget, "fahr_entry"); 使用glade支持函数lookup_widget() 找到没有用户输入的那个文件框。Gtk_entry只接收文本,因此我们把浮点数通过 g_strdup_printf()转换成文本。这个功能很象printf() 函数,不管字符串有多长都能确保分配了足够的内存。接下来用gtk_entry_set_text() 把结果写入gtk_entry控件。用g_free()释放我们用 g_strdup_printf()创建的结果字符串。

所有的这些函数都可以在gnome.org上API部分查到。GtkEntry详细信息请看 这页。 你可以在这里 查到Glib字符串功能。

还需要在entry_activate里写入代码来实际运行compute_temp函数。找到回调函数名为 on_fahr_entry_activate() 加入以下代码:

   gchar *fahr = NULL;

   fahr = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);

   compute_temp(GTK_WIDGET(entry), atof(fahr), F_TO_C);

这儿我们没有做 任何错误检查,只是用atof()把字符串fahr转换成浮点数。后面我们会加入错误检查。找到on_cel_entry_activate()函数,加入以下代码:

   gchar *celsius = NULL;

   celsius = gtk_editable_get_chars(GTK_EDITABLE(entry), 0, -1);

   compute_temp(GTK_WIDGET(entry), atof(celsius), C_TO_F);

同样, 我们后面会加入错误检查。注意在每一个代码片断我们使用GtkEditable代替GtkEntry。这是因为GtkEntry某些方面不推荐使用(在Gtk+-1.0,不过在2.0中以恢复了entry_get_text 函数),特别是gtk_entry_get_text()函数。由于GtkEntry是GtkEditable的一个子类,用GtkEditable函数是比较有效的。我们只要记住用GTK_EDITABLE()转换宏把它 转换成一个新类。

现在,我们有一个可用的程序
重新编译看看。在/src子目录输入make,修改任何可能的打字错误,运行程序。 如果你在文本框只输入数字,它会运行得很好。试着在其中一个文本框里输入'abc'。 它给出了一个结果,因为atof()函数强行把"abc"转换成一个浮点数, 不过我们知道结果是错的。如果这个程序只是自己用,而且你知道输入什么才能得到 正确结果(象大多数编程者那样),那我们现在就停下来。不过让我们更进一小步,加入 简单的错误检查和提示。

加入错误提示
我们要写另一个函数check_temperature_value(),它将检查以确保输入的数值是数值型而不是其它。这个函数同样也被两个entry_activate函数调用,向程序 状态条输出一条错误信息。

在callbacks.c文件的底部加入函数:

gint check_temperature_value(GtkWidget *this_widget, gchar *value)
{
   GtkWidget *appbar;
   gint num = 0;
   gchar this_char = '\0';

   this_char = *value;

   if (!this_char)
   return 0;

   while (this_char != '\0') {
     if (!isdigit(this_char)) {
       /* set up the error message */
       appbar = lookup_widget(GTK_WIDGET(this_widget), "appbar1");
       gnome_appbar_push(GNOME_APPBAR(appbar), "lease enter numbers only");
       return 0;
     } else {
       num++;
       this_char = value[num];
     }
   }
   return 1;
}



我们需要在entry_activate回调函数调用这个函数。加入以下这些行到 on_cel_entry_activate()中,在compute_temp() 函数调用之前:

   if (!check_temperature_value(GTK_WIDGET(entry), celsius))
     return;
   clear_appbar(GTK_WIDGET(entry));

把同样的行加入到 on_fahr_entry_activate()中,在 compute_temp()函数调用之前:

   if (!check_temperature_value(GTK_WIDGET(entry), fahr))
     return;
   clear_appbar(GTK_WIDGET(entry));



最后我们需要clear_appbar()函数。它只是在输入是个正确的数字时从状态条上消除 错误信息。把它加入callbacks.c文件的最后:

void clear_appbar(GtkWidget *this_widget)
{
   GtkWidget *appbar;

   appbar = lookup_widget(GTK_WIDGET(this_widget), "appbar1");
   gnome_appbar_clear_stack(GNOME_APPBAR(appbar));
}

不要忘了在文件头部附近加入两个函数头。编译程序,现有你有一个能工作、错误检查并发出信息的Gtemp版本!
 楼主| 发表于 2003-7-7 19:49:01 | 显示全部楼层
控件的更多细节

接下来是一些常用的控件列表,及它们所用的一些gtk函数。没有列出函数 参数,也没有列出每个控件的所有函数。如果需要这些信息请到这个教程的 库部分。

注意下面并不是控件的详细列表。 在Glade没有包含的库里有很多可用的控件。还有一些Gtk+控件比较容易理解 (如垂直和水平分隔线)也没有列在这里。
Gtk+基本控件
Image 名称 目标 函数及参考
gtk window icon 窗口 基本Gtk窗口 编程者不需要注意什么特别的函数,不过如果这是主窗口,你需要把gtk_exit()与delete_event信号关联(比如当点击右上角的X时)。
Gtk Dialog Window 对话框窗口 创建一个基本的对话盒/窗口 它没有什么特别的函数。你需要向按钮条加入按钮和其它你想要的东西。
Gtk File Selection 文件选择对话框 创建一个标准化的文件选择对话框窗口 内部工作由控件来处理。你需要连接按钮的信号(如clicked信号),及获得选择结果。
Gtk Color Selection Dialog 颜色选择对话框 选择颜色的对话框窗口 创建一个标准化的颜色选择对话框盒/窗口。你需要使按钮工作,并用 gtk_color_selection_get_color()获得颜色选择结果。
Gtk Font Selection Dialog 字体选择对话框 选择字体的对话框窗口 这是一个标准化的字体选择对话框盒/窗口。通常你需要设置按钮并获取选择结果。使用gtk_get_font_selection_dialog_get_font() 做这件事。还有其它的函数来获取字体的名字及其它。查看列在本教程帮助部分的GTK+参考手册。
gtk menubar 菜单条 创建一个菜单条 你需要为所有下拉菜单的activate信号创建句柄。在Glade中有菜单编辑器来帮你做这个。参考本教程菜单编辑器部分。
gtk toolbar 工具条 创建一个工具条 你需要为按钮设置句柄。(通常是clicked 信号)。你还得在属性窗口里为一个按钮提供图标(或使用标准图标)及命名。
gtk label 标签 创建一个标签控件 它通常没有信号。这允许你在程序中放入一个标签。
gtk entry widget 文本框 允许输入单行文本 使用gtk_entry_set_text()、gtk_editable_get_chars()、gtk_entry_set_editable()有其它函数来操作这个单行文本。通常使用activate和changed信号。使用changed信号,设置一个标志,其后获得框内数据 (比如当按下OK键时)。
gtk Combo Box 下拉框 创建一个下拉框 使用这个控件或Gnome文本框创建一个下拉的框列表。 Gnome文本框自己管理这个列表,而ComboBox需要你自己来处理。它可以使用文本框的函数,独有的函数有:gtk_combo_set_value_in_list()等。
gtk text box 文本视图 多行文本编辑器 这个控件与Gtk+ 1.*相比有很大的变化。先创建一个GtkTextBuffer,在这里编辑文本,并在GtkTextView显示它。在一个很简单的程序中,可以用gtk_text_view_get_buffer() 得到缓冲区,并用gtk_text_view_set_buffer()设置它。缓冲区自己发出信号,比如changed,insert_text等。视图本身了发出copy_clipboard, move_focus等信号。
Gtk Button 按钮 一个基本的按钮 所有按钮最常用的信号是clicked信号,也可以用enter, leave, pressed, released等。没有用来获得数据的特别函数,不过你可能经常会想让按钮最后销毁它的父窗口,用 gtk_widget_destroy()函数。
Gtk Toggle Button 切换按钮 一个基本的切换按钮 这个按钮用来代表有两种状态(开/关,0/1等)的变量和实体。它有一个特别的信号toggled,其它与普通按钮信号一样。
Gtk Check Button 多选按钮 一个多选按钮(用标签切换) 这是一个切换按钮,它也有两个状态(开/关等)。这种按钮也有标签,使它是一个有标签的切换按钮。你可以使用 toggled 信号。
Gtk Radio Button 单选按钮 一个单选切换按钮 它是一种特殊的多选按钮。单行按钮组成一组,当点击一个时其它都变成"关"或未被选择。这允许编程者从许多项目中选择一项。它的信号当然是toggled。在属性窗口中,可以设置单选按钮的组和标签。
Gtk Option Menu 选项菜单 创建一个菜单,用户可以选择一项。 常用的信号是clicked, enter, leave, pressed等。函数有gtk_option_menu_get_menu(), gtk_option_menu_set_menu()等。本教程后面有一个例子,说明如何把句柄联接到这个控件。
Gtk Spin Button 滚动按钮 增加数字的按钮 这是个有用的方法,可以从用户获取数字。数字在一个范围内,而且一直是数字型(如果你在属性窗口设数字型为TRUE)。也可以设范围、增幅和开始的数字。使用changed 和 activate 信号可以从滚动按钮获得数据。 例如gtk_spin_button_get_value_as_float()或gtk_spin_button_get_value_as_int()。(记住用changed 信号设置一个标志,以后接收数据(如当按下OK键时))。
Gtk Status Bar 状态栏 显示状态信息的地方 它通常放在程序的底部,显示程序在做什么。比如,用户按下一个按钮来保存一个文件时,你可以在这儿显示"文件已保存"。使用gtk_statusbar_push(), gtk_statusbar_pop()及其它函数。
Gtk List or Tree View 列表或树视图 显示树和列表的控件 这是Gtk+ 2.0中新控件, 代替ctree,clist,list和tree控件。理论上它有点复杂,不过使用起来很简单。更多信息请看AP,不过基本上你可以创建一个列表或树模型,并用列表或树方式来浏览。
Gtk Image Gtk图像控件 显示一幅图像 这是一个没有窗口的控件,它不接收事件,只是简单地用来显示 图像/动画/其它。
Gtk Drawing Area 画图区 创建custom控件的地方 使用这个控件来创建custom控件,可以画东西(比如图像)等

Gtk容器
gtk handle box 带柄盒子(译注:就是浮动工具条) 创建一个盒状容器,可以通过柄来移动。 它没有信号,内部自带柄。这个容器是'rip away'盒子之一, 你可以创建菜单并能把它移动到屏幕上想到的位置。
Horizontal Box Widget 横向盒子 放置控件的一系列盒子 这是一个容器,如果愿意也可以连接信号,不过不需要的。不, 我并知道当它垂直排列是为什么叫水平盒子,除非numerically it runs horizontally (比如一串数字,one for each box).
Gtk Vertical Box 垂直盒子 这是一个容器,如果愿意也可以连接信号,不过不需要的。
Gtk Table Box 表状盒子 在一个表格式中创建一系列盒子 这是一个容器,如果愿意也可以连接信号,不过不需要的。
Gtk Fixed Gtk Fixed 允许你在容器里固定控件的位置。 这个控件不应该在实际中使用。它对那些从VB背景转来的人比较适合, 但会妨碍你学习在Gtk+里如何正确地使用容器。尽量避免使用。
Gtk Horizontal ButtonBox 水平按钮盒 一个水平地放置按钮的盒子 这个盒子用来包含按钮。
Gtk Vertical ButtonBox 垂直按钮盒 一个垂直地放置按钮的盒子 这个盒子用来包含按钮。
Gtk Horizontal Pane 水平面板 创建一个面板,用户可以放大或缩小在一个窗口里的部件。 这是一个容器,如果愿意也可以连接信号,不过不需要的。 可改变大小的部件是其内置的。
Gtk Vertical Pane 垂直面板 创建一个面板,用户可以放大或缩小在一个窗口里的部件。 这是一个容器,如果愿意也可以连接信号,不过不需要的。 可改变大小的部件是其内置的。
Gtk Notebook Widget 标签页 创建一系列"文件夹"盒子,如果用户点击标题,可以改变页内容。 这是一系列的容器,如果愿意也可以连接信号,不过不需要的。 你想要做的一件事是命名标题,或希望用这个控件来创建一个容易"改变"的布局, 注意不要显示标题。
Gtk Frame 框架 创建一个框架,可以命名 这是一个容器,如果愿意也可以连接信号,不过不需要的。 如果你想,记住命名框架。
Gtk Scrolled Window 滚动窗口 一个滚动窗口控件 这是一个容器,如果愿意也可以连接信号,the scrolling should be taken care of automatically.
Gtk Viewport Gtk视角 创建一个视角 作者对这个控件不是很熟,看API。
 楼主| 发表于 2003-7-7 22:16:49 | 显示全部楼层
控件更多的细节: Gtk+附加

注意下面没有列出全部控件,在Glade未包含的库里也有可用的控件。没有列出每个控件的所有函数。如果需要这些信息请到这个教程的 库部分。
Gtk+附加
Image 名称 目标 函数及参考
Gtk Horizontal Scale 水平刻度 创造一个水平滑块 使用它可以允许通过滑动刻度条来选择一定范围的数字。很象滚动按钮(spin button),你可以设最小值、最大值、最初数值,单步增幅及其它。
Gtk Vertical Scale 垂直刻度 创造一个垂直滑块 和水平刻度一样,只不过是垂直的。
Gtk Horizontal Ruler 水平尺子 创造一把水平尺子 只是简单地放置一把水平尺子。可以根据自己的意愿设置尺子的刻度。
Gtk Vertical Ruler 垂直尺子 创造一把垂直尺子 很象水平尺子,只是垂直放置。
Gtk Alignment Widget 排列控件 创造一个控件,在它里面可以设置子控件的排列。 这是一个容器控件,在里面你可以准确地设置子控件的位置。 (基于容器控件的尺寸)。
Gtk Event Box 事件盒 这个控件可以捕获事件 这个控件允许你为另一个没有窗口的控件捕获事件。
Gtk Calendar 日历 创造一个日历控件 你可以用 gtk_calender_get_date()来获得用户选择的日期。你也可以用不同的信号如day_selected等来标记日期及其它。
Gtk Progress Bar 进度条 显示事件进度的条 可以设为显示动态事件(如前后移动的条)或事情完成百分率。如果设为百分比模式,用gtk_progress_set_percentage()或gtk_progress_set_value()来更新。.
Gtk Layout 布局 创造一个布局控件 这是一个容器控件,你可以布置其它控件。我自己对它不熟悉。
Gtk Aspect Frame 方向框架 创造一个框架,里面的子控件可以保持它的方向 这是一个容器控件,可以控制子控件(如放在里面的控件) 的方向。可以设置在Glade属性窗口设置方向比率。
Popup Menu Icon 弹出菜单 创造一个弹出菜单 典型地用在当用户在什么上面点击右键。至少从Glade角度,这个菜单很象菜单条上的下拉菜单。
Gtk Arrow 箭头 创造一个箭头 只是显示一个指向四个基本方向其中之一的箭头。
Gtk Curve Gtk曲线 能被用户改变的曲线 更多信息请看文档,这是一个专业控件,将来会被移出gtk+库。
Gamma Curve Gamma曲线 可编辑的gamma曲线 更多信息请看文档。它被用来在GIMP里编辑 gamma曲线,是一个专业控件。最终它会被移出gtk+到另一个库。
Horizontal Scrollbar 水平滚动条 一个水平排列的滚动条 没有什么可说的,它是一个滚动条。
Vertical Scrollbar 垂直滚动条 一个垂直排列的滚动条 另一个滚动条。
Gtk Color Selection Widget 颜色选择 控制颜色选择的控件 这是颜色选择对话框的核心(见教程 Gtk+基本控件)。你可以使用color_changed信号,gtk_color_selection_get_color()及其它函数。
Gtk Font Selection Widget 字体选择 控制字体选择的控件 这是字体选择对话框的核心(见Gtk+基本控件)。使用gtk_font_selection_get_font(),gtk_font_selection_get_font_name()及其它。
Input Dialog 输入对话框 允许配置为XInput扩展设备的控件 见gtk+文档。
Custom Widget 定制控件 定制控件放置的地方 如果你在使用不是Glade一部分的定制控件,可以用它为你的控件插入一个放置的地方。
 楼主| 发表于 2003-7-7 23:22:56 | 显示全部楼层
控件更多的细节:Gnome

Gnome控件用于标准化gnome界面。如果你正在创建一个Gnome程序最好使用它们。同Gtk+控件相比,它们简化一些东西,允许你把你的程序与Gnome资源及其它东西连接起来。

注意下面并不是控件完整的列表。 在Glade未包含的库里也有可用的控件。没有列出函数 参数,也没有列出每个控件的所有函数。如果需要这些信息请到这个教程的 库部分。
Gnome
图像 名称 目标 函数及参考
Gnome Application Window 程序窗口 创建一个标准化的gnome程序窗口 你需要连接菜单和工具条上部件的信号到处理函数。详见以上关于菜单和工具条部分。
Gnome About Dialog 关于对话框 创建一个gnome关于对话框 不需要做任何事情,只要填上内容(版权、作者等)。按钮信号已被自动处理。
Gnome App Bar Gnome程序条 创建一个标准gnome程序条 这是一个程序条,把stock载入到Gnome程序窗口底部。在Glade属性窗口你可以设为显示一个进度条和一个状态消息的区域。这个区域可以用来给用户状态信息。函数中的gnome_appbar_push()和gnome_appbar_pop()处理这个。它也有小缓冲区,更多信息见Gnome参考手册。
Gnome Druid Gnome Druid 创建gnome druid系列的控件 当程序第一次运行时,Gnome Druid用来使用用户按他们的喜好定制程序。你需要指定需要多少页,再用属性窗口为每个页设置属性及其它。需要连接到finish、prepare、cancel等信号。同时在druid控件里加入标准页里你所需要的文本框。
Gnome Color Picker Gnome颜色选择器 创建一个能打开gtk颜色选择对话框控件的按钮 这个控件是一个按钮,能显示已选择的颜色和缺省颜色。使用不同的gnome_color_picker_get_*()和gnome_color_picker_set_*()函数来处理这个控件里的颜色。连接到本控件的信号是color_set。
Gnome Font Picker Gnome字体选择器 创建一个能打开gtk字体选择对话框控件的按钮 这个控件创建一个按钮,能打开字体选择对话框。它同时也显示当前的字体。使用gnome_font_picker_get_font()、 gnome_font_picker_get_font_name()等。连接到本控件的信号是 font_set。
Gnome Icon Entry Gnome图标输入框 创建一个'图标选择器'按钮 这个控件创建一个按钮,能显示当前图标,点击能打开一个图标选择器。使用gnome_icon_entry_get_filename()等函数来控制这个控件。
Gnome Href Button Gnome超级连接 创建一个连接到网页的按钮 这个控件是一个按钮,当点击会运行用户缺省浏览器并打开一个网页。你可以用gnome_href_set_url(), gnome_href_set_label()改变标签及地址。
Gnome Entry Box Gnome输入框 创建一个下拉输入框,并自动管理"历史"。 这是一个标准下拉框,不过输入历史记录被Gnome资源管理及维护。可以使用标准下拉框信号及函数,也可以使用任何 gnome_entry_*()函数之一。
Gnome File Entry Gnome文件输入框 创建一个下拉框,'浏览'键用来查找文件 有一个 browse_clicked信号,可以用来改变通常打开的文件选择对话框。你也需要连接到gtk_entry信号(当改变了一些东西)及其它。
Gnome PixMap Entry Gnome位图输入框 创建一个位图预览和输入控件来选择位图 这个控件显示一个所选位图的预览,需要的话输入框部分返回一个文件名(它是一个简单的gnome文件输入控件)。
Gnome Date Edit Gnome日期编辑 创建一个可处理的日期和时间控件 可以连接到date_changed和time_changed信号。注意它有一个弹出日历按钮(内部管理)及一个下拉时间选项菜单(也是内部管理)。选择结果会显示在日期和时间输入框中。gnome_date_edit_get_date() 函数返回控件里输入的时间。记住它是C中的time_t类型。
Gnome Canvas Gnome画布 创建一个可画图的控件 我对这个控件不熟悉,它的文档需要被完成。对不起,我知道这儿有几个界面需要的控件库,当你需要这个控件它们值得一看。
Gnome Icon List 图标列表 创建一个图标列表控件 详见gnome参考手册。
Gnome Icon Selection 图标选择 创建一个图标选择控件 详见gnome参考手册。
Gnome Bonobo Control Bonobo控制 执行一个眼镜蛇控制控件 详见bonoboui文档,在这里。
 楼主| 发表于 2003-7-9 22:36:50 | 显示全部楼层
控件更多的细节:不推荐和已改变

这些控件要么是gtk+/gnome开发者不推荐使用,因此在新代码不会再用,要么是在 Glade1和Glade2之间逐渐消失。当我发现消失的控件已被移动到新库,我会注明的。
Deprecated
图像 名称 目标 函数和参考
Gtk List Widget 列表 创建一个列表,列表中的每一行都可以被处理。 常用信号是select_child、 selection_changed, unselect_child。函数包括 gtk_list_insert_items(), gtk_list_append_items(), gtk_list_remove_items(), gtk_list_select_item(),等。
Gtk Columned List 柱状列表 一个多列的列表 这个控件允许纵向排列列表(如一个文件选择列表,可以同时显示文件名、 所有者和创建时间。).你需要在属性窗口里指定选择模式。这种模式表示在窗口里能否一 次性选择一个或多个条目(缺省是一个)。GtkCList有很多信号,是一个复杂的控件。详见 Gtk+参考手册。
Gtk Columned Tree 柱状树 一个多列的树 如果熟练掌握,这个控件确实很有用。但它很复杂,如果你需要在老 软件里使用它,请看指南。
Preview 预览 一个预览控件 在不推荐使用它之前我从未使用过它,因此请查看指南。
Gnome Dialog Box 对话框 用预制gnome标准的按钮创建一个对话框 需要连接句柄到按钮,你也可以改变按钮的标签和图标,或根据需要 删掉一二个。
Gnome Message Box 消息盒子 创建一个标准化的消息盒子 需要加入消息,选择消息的类型(警告、信息等),处理"ok"按钮信号。
Gnome Property Box 属性盒子 创建一个标准化窗口来处理不同的编程属性 需要处理盒子底部的按钮及其它在盒子里所创建控件的信号。 它由gtk控件创建,请看上述关于按钮等控件的部分。
Gnome Pixmap Gnome位图 从不同的资源载入和显示位图 这个控件能正确地载入、改变大小和创建不同类型的图片。
消失
Gtk Label with Accelerator 带快捷键的标签 创建一个快捷键的标签 标签显示一个快捷键在右边(如Save Ctrl-S)。它用在菜单之类中。
Gtk Image Widget 图片控件 创建一个可以放一幅图片的控件 这个控件内有一个图片,可以被一个程序处理。
Gnome Number Entry Gnome数字输入框 用计算器按钮创建一个数字输入框 这个控件有一个计算器按钮,让用户把计算结果直接加入输入框中。 它不作任何限制检查。用gnome_number_entry_get_number()来获取数字
Gnome Dial 拨号 创建一个拨号控件 这是一个类例拨号,象一个老式收音机调谐器拨号。 它只能被设为查看,或把它转为一个数值。使用 gtk_dial_get_percentage(), gtk_dial_set_percentage(), gtk_dial_set_value(), and gtk_dial_get_value()来处理数字。
Gtk Clock 时钟 创建一个数字时钟计数或显示准确时间 你可以在Glade属性窗口来设置显示格式。要用它做为计时器,在 属性窗口设置秒和时间间隔。Gtk_clock_start() 使时钟运行,你需要 在一些事件中调用它(如一个ok按钮或其它),gtk_clock_stop()停止。
Gnome Calculator Gnome计算器 创建一个计算器控件 你可以用result_changed信号来获得结果。 使用gnome_calculator_get_result()函数来实际获取它。
Gnome Less Gnome Less 创建一个控件来显示一个文件或流。 这个控件象unix的'more'命令。用户可以浏览一个文本文件。 可以在Glade属性窗口指定字体,用gnome_less_show_file()来显示文件, gnome_less_show_filestream()来显示文件流等等。
Gnome Paper Selector Gnome纸张选择器 为打印创建一个纸张选择控件 在你的代码中,找到这个控件,用不同的 gnome_paper_selector_get_*()函数来把选择结果传到你的打印代码中。
Gnome Animator Gnome动画 创建一个控件,可以把动画加入到程序 查看文档,因为我对它不熟。
 楼主| 发表于 2003-7-9 22:38:16 | 显示全部楼层
摘要和资源: 用Glade2开发图形用户界面

希望这个教程会让你朝正确的方向来学习使用Glade。对下一步,对一个初学者我建议以下资源。
网上有一些Glade, Gtk+和Gnome资源。 需要帮助请看以下:

    * Glade主页
    * Gnome开发者的资源
    * Gtk+ 参考手册
    * Gdk 参考手册
    * Glib 参考手册
    * Libglade 参考手册
    * Gnome用户 界面库参考指南

glade邮件列表在http://lists.ximian.com/mailman/listinfo/glade-users. 它是一个很好的资源。

Havoc Pennington写了一本《Gtk+/Gnome Application Development》。这本书 是另一个关于Gtk+开发的很好的信息资源。虽然它完全没有提到Glade,它阐述了控件如何工作,参数是什么,如何设计及实现一个复杂的程序,glib提供什么及其它有趣的内容。我强力推荐它。如果可以就买它,如果不行这儿有一个开源的html版本在这里。
 楼主| 发表于 2003-7-9 22:40:08 | 显示全部楼层
作者:

这个教程由Rikke D. Giles编写,是KPLUG的一部分,是在Linuxnorthwest上礼物的一部分,也是为更多写作准备工作的一部分。
版权:

这个教程一系列网页版权归Rikke D. Giles所有。教程的任何故障和问题请通知她到rgiles@users.sourceforge.net.
Glade:

Glade由Damon Chaplin编写和维护,加油!
致谢:

控件图片来自Glade的截图和Glade提供的png文件。其它图片由作者截图。

我使用gvim来做所有的编码工作。在www.gvim.org能找到它。

我使用blufish来作html编辑。它是一个很好的编辑器,在bluefish.openoffice.nl。
Insipiration:

感谢KPLUG的支持。You guys ROCK! 感谢我的 sig_other,能够容忍家里这样一个geek。还要感谢我的妈妈,虽然她不懂一点编程或计算机,从头到尾是个geek。She _gets_ why I do this.
 楼主| 发表于 2003-7-9 22:41:39 | 显示全部楼层
终于译完了,明天发一个打包的html版,带有原版所有的图片,敬请期待。
发表于 2003-7-9 23:46:49 | 显示全部楼层
呵呵,非常感谢。向hulihutu兄致敬!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表