16.6 GNOME构件
GTK+被设计成独立于桌面的。也就是说,GTK+并不假定它运行在GNOME中,甚至不假定它运行在Linux上。这样,GTK+就可以被相对容易地移植到Windows或者任何其他视窗系统中。可这样导致的结果是,GTK+缺乏将程序与桌面紧密结合的方法,例如保存程序配置、显示帮助文件或编写applet(applet是在边缘面板上运行的小程序)的方法。
GNOME库包含GNOME构件,它们扩展了GTK+,并用一些更容易使用的构件替换了GTK+中的部分构件。在本节中,我们将看到如何用GNOME构件来编程。
在使用GNOME库之前,你必须在程序的一开始对它们进行初始化,就像你在使用GTK+时所做的那样。你在纯GTK+程序中调用的是gtk_init,在这里调用的是gnome_program_init。
这个函数的参数有:app_id和app_version(用于向GNOME描述你的程序)、module_info(告诉GNOME初始化哪个库模块)、命令行参数和应用程序属性(设置为以NULL结尾的“名/值”对列表)。
可选的属性列表用来设置一些属性,如位图查找目录。
实 验 一个GNOME窗口
现在让我们来看一个GNOME程序,注意GtkWindow在GNOME中被替代为GnomeApp构件。
输入这个程序,将它命名为gnome1.c:
为编译这个程序,你需要包含GNOME头文件,因此传递libgnomeui和libgome给pkg-config:
GnomeApp构件对GtkWindow进行了扩展,使得添加菜单、工具栏以及底部的状态栏变得很容易。因为GnomeApp继承自GtkWindow,所以你可以将GnomeApp构件用于任何GtkWindow函数。接下来,你将学习创建菜单。在本章最后一个例子中,你将添加一个状态栏。
你可以使用GTK+来创建菜单,但GNOME所提供的结构和宏使得这个工作变得更容易了。在线的GTK+文档描述了如何使用GTK+来创建菜单。