[学习笔记]Linux应用程序开发指南:使用GTK+Gnome库-01-Gnome的开发结构

来源:互联网 发布:qq飞车帝王雷诺数据 编辑:程序博客网 时间:2024/05/18 20:35
  
       一般用GTK代表软件包和共享库,用Gtk+代表GTK的图形构件集。
       在用Gtk+开发Gnome的过程中,由于实际需要,在上面的构件基础上,又开发了一些新构件。一般把这些构件称为Gnome构件(与Gtk+构件相对应)。这些构件都是Gtk+构件库的补充,它们提供了许多Gtk+构件没有的功能。从本质上来说, Gtk+构件和Gnome构件是完全类似的东西。
 
1、Gnome的开发结构
       只使用Gtk+构件也可以开发出优秀的Linux应用程序,但是Gnome构件,特别是GnomeApp、GnomeUIInfo等,使开发界面一致的应用程序变得更加容易。Gnome的一些新特性,如popt参数分析,保存应用程序设置等也是Gtk+构件所没有的。
       Gnome差不多对任何语言都提供了Gnome API接口,其中包括Ada、Scheme、Python、Perl、Tom、Eiffel、Dylan以及Objective C等。至少有三种不同的C++封装。
       Gnome的开发架构包含以下一些内容:
(1)非Gnome库
       Glib Glib是Gnome的基础,它是一个C工具库,提供了创建和操作常用数据结构的实用函数。
       Gtk+ Gtk+(GIMP Toolkit的缩写),是在Gnome应用程序中使用的GUI工具包。Gtk+依赖于glib。Gtk+包中包含了Gdk,它是对底层的X Window系统库Xlib的简化。由于Gtk+使用了Gdk而不是直接调用Xlib,因此Gdk的移植版本允许Gtk+运行在不同于X但只有相对较少的修改的窗口系统上。
       对Gnome应用程序来说,Gtk+具有以下的特性:
       1) 动态类型系统。
       2) 用C语言编写的对象系统,可实现继承、类型检验,以及信号/回调函数的基础结构。
       3) 类型和对象系统不是特别针对GUI的。
       4) GtkWidget对象使用对象系统,它定义了Gtk+的图形组件的使用接口。
       5) 大量的GtkWidget子类(构件)。
       ORBit ORBit是一个用C开发的CORBA 2.2O RB。ORBit是以一整套库函数的方式实现的。ORBA,或称作通用对象请求中介构架(Common Object Request Broker Architecture),是一套对象请求中介,或称为ORB的规范。
       Imlib Imlib (图片库)提供一些例程,其中包括加载、存储、显示,以及定绘制各种流行的图像格式(包括GIF、JPEG、PNG以及TIFF)的函数。它包括两种版本:Xlib-only版本和基于Gdk的版本。Gnome使用Gdk版本。
(2)Gnome库
       下面所介绍的库是Gnome-libs包的一部分,并且是专门为Gnome项目开发的。
       libgnome libgnome是一些与图形用户接口无关的函数集合,它包含分析配置文件的代码,也包含与一些外部实用程序的接口,比如国际化编程接口(通过GNU gettext 包)、变量解析(通过popt包)、声音编程接口(通过EnlightenmentDaemon,esound)等。
       libgnomeui libgnomeui包含了与GUI相关的Gnome代码。libgnomeui主要包含:
       1)GnomeApp构件一般用来为应用程序创建主窗口。它使用GnomeDock构件,允许用户重新排列工具栏,还可以将工具条从窗口上拖开。
       2)GnomeCanvas构件用来编写复杂的、无闪烁的定制构件。
       3) Gnome 内置的pixmap(包括打开、关闭、保存以及其他操作的图标) 用于创建和使用对话框的例程。GnomePixmap构件比GtkPixmap功能更多。
       libgnomeui中还有几种其他构件,如GnomeEntry、GnomeFilePicker等。
       libgnorba libgnorba提供与CORBA相关的实用程序,包括安全机制和对象激活。
       libzvt 这个库包含一个终端构件(ZvtTerm ),可以在Gnome程序中使用它。
       libart_lgp 这个库包含由Raph Levien编写的图形绘制例程。实质上它是一个矢量图形光栅图形库,功能类似于PostScript语言。
(3)其他库
       这些库一般使用在Gnome应用程序中,但它不是Gnome-libs 专属的部分。
       Gnome-print
       Gnome-xml 由WWW协会的Daniel Veillard编写。它能按照树状结构分析XML,也能按照XML输出树状结构。这个库不依赖于任何其他的库(甚至glib),所以它只是在名义上是一个Gnome库。
       Guile Guile是Scheme编程语言在一个库中的实现,它使任何应用程序都能带有一个嵌入式的Sheme解释器。
       Bonobo Bonobo是一种对象嵌入式结构,类似于Microsoft的OLE。任何应用程序将能通过适当的Bonobo组件调用Gnome库,显示MIME类型数据,例如纯文本、HTML或图像。
 
       如果用C++语言开发基于Gtk+应用程序,可以使用一个名为Gtk--的函数库,它是GTK工具包的C++风格的封装。