从今天开始读这本《LINUX应用程序开发指南:使用GTK+ GNOME库》, 边读边记录其要点,也希望这个读书笔记能对其他人有所帮助。
第1章 Linux软件开发概述
KDE(K Destop Environment) - [Qt] VS. Gnome - [Gtk+]
自由软件社区的一批计算机专家开始了 KDE项目(K Desktop Environment, K桌面环境),目的是提供一个开放源代码的图形用户接口和开发环境。该项目取得了极大的成功, K D E成为许多 L i n u x发布版本的首选桌面环境。 G N U / L i n u x项目因此而得到蓬勃发展。但是,KDE是基于Troll Technologies公司的Qt库的。Qt库是一个跨平台的 C++类库,可以用于多种Unix、Linux、Win32等操作系统。Qt并不是遵从 GPL或LGPL协议的软件包。它的许可条件是:如果使用它的免费版本开发应用程序或程序库,则所开发的软件必须开放源代码;如果使用它的商用版本,则可以用以开发私有的商用软件。另外, Qt库是属于 Troll公司的产品,一旦Troll公司破产,或者被收购,自由软件事业将受到严重打击。
1 9 9 7年由墨西哥国立自治大学的 Miguel de Icaza 领导的项目组开始了 G n o m e开发计划。Gnome是GNU Network Object Model Environment(GNU,网络对象模型环境)的缩写。该计划的最初目的是创建一种基于应用程序对象的架构,类似于微软公司的 OLE和 COM技术。然而,随着项目的进展,项目的范围也迅速地扩大;项目开发过程中有数百名程序员加入进来,编
写了成千上万行的源代码。该项目进展很快, 1998年发布了Gnome 1.0。目前的最新版本是于1 9 9 9年1 0月发布的 October Gnome。现在, G n o m e已成为一个强劲的 G U I应用程序开发框架,并且可以在任何一种 U n i x系统下运行。 G n o m e使用的图形库是 G t k + — 最初为了编写 G I M P而创建的一套构件库,它是基于 L G P L创建的,可以用它来开发开放源代码的自由软件,也可以开发不开放源代码的商用软件。 G n o m e的界面与 K D E的界面是类似的( G n o m e的目的之一就是创建一套类似 K D E的桌面环境),熟悉 K D E的用户无需学习就能够使用 G n o m e。由于以上几个原因,Gnome已经成为大多数 Linux发布版本的首选桌面环境。
由于G n o m e项目的成功, 1 9 9 8年11月Q t库的开发者 Tr o l l公司宣布修改许可证协议, Q t库将成为自由软件。但是获取 Q t库的许可证很不方便,况且 G n o m e的进展也很不错,因而,只要有可能,应该避免使用 Qt库以及KDE。
从用户的角度看, G n o m e是一个集成桌面环境和应用程序的套件。从程序员的角度看,它是一个应用程序开发框架 (由数目众多的实用函数库组成 )。即使用户不运行 Gnome桌面环境,用G n o m e编写的应用程序也可以正常运行,但是这些应用程序是可以很好地和 G n o m e桌面环境集成的。 G n o m e桌面环境包含文件管理器,它用于任务切换、启动程序以及放置其他程序的“面板” “控制中心” (包括配置系统的程序以及一些小东西 )等。这些程序在易用的图形界 、面背后隐藏了传统的 UNIX Shell。G n o m e的开发结构使开发一致的、易用的和可互相操作的应用程序成为可能。
第2章 Gtk+/Gnome开发简介
命令行选项和参数处理
nome_init_with_popt_table(PACKAGE, VERSION, argc, argv,
options, 0, &pctx);
这个函数把指定在options里的所有命令行选项解析并放入options结构指定的变量里面,例如,
static int greet_mode = FALSE;
.................................................
struct poptOption options[] = {
{
"greet",
‘g’,
POPT_ARG_NONE,
&greet_mode,
0,
N_("Say hello to specific people listed on the command line"),
NULL
}
.................................................
gnome_init_with_popt_table(PACKAGE, VERSION, argc, argv,
options, 0, &pctx);
由于指针的强大功能,这个函数调用后,变量greet_mode会被自动计算,根据是是否有-g或者--greet被指定在命令行上。
args = poptGetArgs(pctx);
这个函数把所有非选项的参数提取出来放到args里。
写一个gnome程序通常要实现的内容
1. 初始化库
2. 用popt分析参数
3. 国际化
4. 保存配置信息
5. 会话管理
6. 特殊的回调函数
1) 退出函数
2) Timeout函数
3) idle函数
4) 输入函数
用于开发的重要工具
1. autoconf
2. automake
3. libtool
这些工具使用还不是很熟练,需要进一步查寻文档,进一步的学习才可以。
第3章 glib库简介
概述
这一章描述了gkt+的基础库glib, 主要涉及的概念有,
1. glib特有类型的定义
2. glib的调试宏,校验宏
3. 内存管理
4. 字符串的处理/GString
5. 数据 结构(链表,树,哈希表)
这是一个十分优雅而又适用的数据结构基础库,应该深入的学习,甚至应该阅读其整个源代码。参考文档在,
http://library.gnome.org/devel/glib/stable/
第4章 构 件 定 位
GtkWindow/GdkWindow
GdkWindow是指X Server上的窗口划分,代表着X Server上的一个真正的窗口,大多数GtkWidget都对应一个GdkWindow. 然后,有一些轻量级的组件(GtkLabel)则没有相对应的GdkWindow, 他们是被绘制在父窗口上的。
这和Windows实现是一样的,Windows上大多数组件都对应着一个相应的窗口句柄。像Label这样的轻量级组件也不需要一个标准的窗口句柄,所以,也是画在父窗口上的。
窗口的关键APIs
/ *显示构件,当构件的父构件(向上递归直到最高级别构件)显示时,
*构件将显示在屏幕上, */
void gtk_widget_show(GtkWidget* widget)
/ *隐藏构件,构件的 G d k W i n d o w依然存在*/
void gtk_widget_hide(GtkWidget* widget)
(Call) =============================>>
/ *映射构件,构件的 G d k W i n d o w显示在窗口上 */
void gtk_widget_map(GtkWidget* widget)
/ *反映射构件,隐藏构件的 G d k W i n d o w。注意,构件的 G d k W i n d o w还存在*/
void gtk_widget_unmap(GtkWidget* widget)
(Call) =============================>>
/* 显现一个构件,创建该构件的 G d k W i n d o w * /
void gtk_widget_realize(GtkWidget* widget)
/* 反显现构件,销毁该构件的 G d k W i n d o w * /
void gtk_widget_unrealize(GtkWidget* widget)
对一个子窗口调用了gtk_widget_show(GtkWidget* widget), 内部的操作过程
GTK会检查是否有哪个父窗口没有被map到X Server的窗口上去,如果存在这样的窗口,然后,就会map这个窗口,直到所有的父窗口都map,然后,标记这个窗口处于显示状态,但是这个窗口可能没有被立即显示,直到所有的父窗口都被显示后,这个窗口才能真正的被显示。
GTK容器类型
1) GtkWindow
2) GtkBox(GtkHBox, GtkVBox)
3) GtkTable
4) GtkFixed
5) GtkLayout
分享到:
相关推荐
第一部分介绍Linux GUI编程架构以及编程基础知识,第二部分介绍Linux 编程常用C语言函数库glibc、构件库Gtk+、Gnome,第三部分介绍Linux下的GUI生成器Glade,第四部分介绍Linux编程调试工具gdb及xxgdb。第五部分包括...
GTK+是一个高性能、面向对象、跨平台且不依赖于特定编程语言的开发工具包,在GNOME出现前就已经广泛应用于各类软件的开发中。GTK+支持多种编程语言,包括但不限于C、C++、TOM、PERL、Python、GUILE和ADA。 #### 三...
### 从Windows转向Linux...以上内容覆盖了从Windows转向Linux的过程中所需要掌握的基本知识点,不仅包括了操作系统本身的使用,还涉及到了软件安装、网络配置、编程开发等多个方面,为初学者提供了一个全面的学习指南。
1. **图形程序**:包括桌面环境(如GNOME)及QQ、微信等应用软件。 2. **GUI框架**:QT、Android Framework、GTK、MiniGUI等图形用户界面库。 3. **本地可执行程序和库**:如ls、pwd等Linux shell命令及其相关的库...
教程中还涵盖了 Ubuntu 的配置,包括配置中文环境、调整字体大小、调整 Firefox 和一些系统中文字体过度柔化、XMMS 等 Gtk1 程序的中文显示问题等内容。 Ubuntu 的优化 在优化方面,本教程提供了多种优化策略,...