第一章 Gnome开发基础 1
1.1 什么是Gnome 1
1.2 Gnome开发体系的基础结构 2
1.2.1 一个入门实例——简单的Gnome应用程序 4
1.2.2 GTK+ 7
1.2.3 Gnome,X和窗口管理器 8
1.2.4 Gnome中的CORBA应用程序 8
1.2.5 Gnome图形结构 13
1.2.6 Gnome画布 13
1.2.7 Libart库 17
1.2.8 GnomeCanvas Widget 18
1.2.9 结论 21
1.3 Gnome函数库 21
1.4 gnome-print 22
1.5 gnome-xml 22
1.6 Guile 22
1.7 Bonobo 23
1.8 glib:非Gnome函数的可移植性和实用性 23
第二章 创建Gnome应用程序 27
2.1 创建源代码树 27
2.1.1 Gnome源代码树概述 27
2.1.2 源代码树列表 28
2.1.3 configure.in 29
2.1.4 Makefile.am 31
2.1.5 安装支持文件 33
2.2 Gnome应用程序基础 37
2.2.1 初始化函数库 37
2.2.2 国际化 37
2.2.3 使用popt进行参数分析 39
2.2.4 GnomeHello中的参数分析 41
2.2.5 保存配置信息 45
2.2.6 读取保存的配置数据 45
2.2.8 配置文件Iterators 47
2.2.7 在配置文件中保存数据 47
2.2.9 gnome-apt的Iteration实例 48
2.2.10 其他配置文件操作 50
2.2.11 会话管理 51
2.2.12 使用GnomeClient对象 51
2.3 主窗口:GnomeApp 53
2.3.1 GnomeApp widget 53
2.3.2 GnomeApp 54
2.3.3 一个实例 55
2.3.4 自动创建菜单和工具条 57
2.3.5 GnomeUIInfo提供的菜单和工具条 57
2.3.6 GnomeUIInfo枚举类型数据结构的定义 59
2.3.7 把GnomeUIInfo转换为一个widget 60
2.3.8 添加一个状态条 61
2.3.9 帮助宏 63
2.3.10 标准菜单项宏 63
2.3.11 鼠标拖放 72
第三章 GDK基础 75
3.1 GdkWindow和GtkWidget 76
3.2 GdkWindow属性 77
3.3 visual和colormap 79
3.3.1 GdkVisual 80
3.3.3 颜色和GdkColormap 81
3.3.2 visual类型 81
3.3.4 获得调色板 83
3.4 drawable和Pixmap 84
3.5 事件 85
3.5.1 事件类型 85
3.5.2 键盘事件 86
3.5.3 鼠标移动事件 87
3.5.4 expose事件 90
3.5.5 窗口变动事件 91
3.5.6 其他事件 92
3.6.1 指针位置 95
3.6.2 捕获指针 95
3.6 鼠标指针 95
3.6.3 修改光标 96
3.7 字体 97
3.8 图形环境 99
3.9 画图 104
3.9.1 点 104
3.9.2 线 105
3.9.3 矩形 105
3.9.4 弧线 105
3.9.5 椭圆 106
3.9.6 文本 106
3.9.8 RGB缓冲区 107
3.9.7 pixmaps 107
3.10 GDK资源管理 108
3.11 GtkStyle和Themes 109
第四章 两个重要的函数库 112
4.1 使用libgnome函数库 112
4.1.1 配置文件 112
4.1.2 实用程序和文件 115
4.1.3 MIME类型 116
4.2 使用libgnomeui函数库 118
4.2.1 普通图标 118
4.2.2 对话框 119
4.2.3 输入框 126
4.2.4 使用图像 128
4.2.5 会话管理 128
4.2.6 多文档接口 130
4.2.7 杂项widget 132
第五章 GTK+对象和类型系统 135
5.1 对象和类结构 135
5.2 类型检查和新的类型 136
5.3 初始化一个新类 138
5.4 GtkArg和类型系统 141
5.5.1 设置对象参数 143
5.5 对象参数 143
5.5.2 读取对象参数 144
5.5.3 在自己的GtkObject子类中使用对象参数 145
5.5.4 发现可用的对象参数 148
5.6 信号 149
5.6.1 添加一个新的信号 150
5.6.2 使用己有的信号 154
5.6.3 释放一个信号 157
5.6.4 当信号释放时发生的事情 159
5.7 对象定位 159
5.8 把数据连接到对象上 163
5.9 事件掩码 166
5.10 在GTK+事件中接收GDK事件 167
5.11 按钮事件 169
第六章 GTK+开发 173
6.1 概述 173
6.2 GLib 173
6.2.1 命名规则 173
6.2.2 Typedefs 173
6.2.3 可移植性和实用程序函数 174
6.2.4 容器类 175
6.3.3 GTK+方法类型 180
6.3.4 对象数据 180
6.3.1 GUI基础 180
6.3.2 GTK+对象模型 180
6.3 GTK+ 180
6.3.5 GTK+/Gnome命名规则 181
6.3.6 使用GTK+方法 181
6.3.7 Hello World程序实例 181
6.4 GTK+中的国际化 183
6.4.1 概述 183
6.4.2 术语 184
6.4.3 GTK+中的国际化 184
7.1.2 widget的功能 187
7.1.1 widget类型 187
7.1 widget概述 187
第七章 编写GtkWidget 187
7.2 GtkWidget基类 188
7.2.1 GtkWidget实例结构体 188
7.2.2 GtkWidget类结构 189
7.2.3 可以覆盖的信号 193
7.3 一个实例:GtkEv widget 193
7.3.1 概述 193
7.3.2 GtkObject特性 194
7.4.1 析构 210
7.4 GtkWidget详解 210
7.4.2 显示,隐藏和映射 211
7.4.3 realization过程 212
7.4.4 作图 213
7.4.5 大小协商 213
7.4.6 GtkContainer基类 215
7.5 GtkVBox:一个没有窗口的容器 223
7.5.1 编写一个GTK_NO_WINDOW Widget 223
7.5.2 大小协商 224
7.5.3 孩子参数 230
7.6 GnomeAppBar:一个很小的复合widget 231
8.2 有关ORBit和CORBA的常见问题 235
8.1 ORBit/CORBA概念 235
第八章 ORBit/CORBA开发 235
8.3 安装ORBit 237
8.3.1 从RPMS安装 237
8.3.2 从源文件安装 237
8.3.3 运行实例程序 237
8.3.4 ORBit可以执行的平台 238
8.4 ORBit/CORBA的术语 238
8.5 第一个CORBA程序 239
8.5.1 echo客户和服务器 239
8.5.2 caculator客户和服务器 244
8.5.3 account客户和服务器 250
8.5.4 GUICalculator客户 255
8.5.5 GOAD,Gnome对象激活目录 257
第九章 KDE应用程序实例分析 258
9.1 最简单的Qt(P1) 258
9.2 Qt程序的优化(P2) 259
9.3 带有Widget的KDE程序(P3) 260
9.4 创建菜单(P4) 265
9.5 桌面交互程序(P5) 268
9.6 显示一个列表(P6) 273
9.7 开发工具栏(P7) 276
9.8 第6个程序的升级(P8) 283
9.9 创建界面(P9) 286