什么是GTK+?
GTK+或GIMP工具包是用于创建图形用户界面的多平台工具包。GTK+提供了一套完整的构件(widget),适用于从小型一次性工具到完整的应用程序套件等项目。GTK+是跨平台的,并且拥有易于使用的API,从而加快了您的开发时间。GTK+是用C语言编写的,但它是从底层设计的,支持各种各样的语言,而不仅仅是C/C++。使用来自Perl和Python等语言(尤其是与Glade GUI Builder结合使用)的GTK+提供了快速应用程序开发的有效方法。
许可限制
GTK+是免费软件,也是GNU项目的一部分。GTK+的许可条款GNU LGPL,允许所有开发人员使用它,包括那些开发商业软件的人,任何人都不需要许可费或版税。
稳定性
GTK+已经开发了十多年,能够为您的应用程序开发提供诱人的功能和卓越的性能。GTK+得到了大量开发人员的支持,并拥有Red Hat、Novell、Lanedo、Codethink、Unless Mobile和Intel等公司的核心维护人员。
跨平台
最初,GTK+是为X窗口系统开发的,但随着时间的推移,它已经增加了对其他知名窗口系统的后端支持。今天您可以在以下位置使用GTK+:
语言绑定
由于可用的语言绑定,GTK+可用于许多其他编程语言。这使得GTK+成为应用程序开发非常有吸引力的工具包。
语言绑定(或“包装器”)允许从其他编程语言使用GTK+,使用这些语言的样式。它们相对容易创建,因为GTK+设计时考虑了它们。官方的GNOME绑定遵循GNOME发布计划,保证API的稳定性和基于时间的发布。
适应性
GTK+满足了当今开发人员在工具包中寻找的许多功能,包括:
- 本土化的外观和感觉
- 主题支持
- 线程安全性
- 面向对象方法
- 国际化
- 本土化
- 可访问性
- 双向文本支持(从左向右/从右向左)
- UTF8支持
- 文档
接口
GTK+有一个核心构件和接口的综合集合,可在应用程序中使用。
- 窗口(普通窗口或对话框、关于和助手对话框)
- 显示(标签、图像、进度栏、状态栏)
- 按钮和切换(复选按钮、单选按钮、切换按钮和链接按钮)
- 数字(水平或垂直缩放和数值调节按钮)和文本数据输入(有或无完成)
- 多行文本编辑器
- 树、列表和图标网格查看器(具有可自定义的渲染器和模型/视图分离)
- 组合框(带或不带条目)
- 菜单(带图像、单选按钮和复选项)
- 工具栏(带有单选按钮、切换按钮和菜单按钮)
- GTKbuilder(从XML创建用户界面)
- 选择器(颜色选择、文件选择器、字体选择)
- 布局(列表构件、表格构件、扩展器构件、框架、分隔符等)
- 状态图标(Linux上的通知区域,Windows上的托盘图标)
- 打印构件
- 最近使用的文档(菜单、对话框和管理器)
基础
GTK+是建立在glib之上的。glib提供了应用程序中常见的基本算法语言构造。此库具有以下功能:(此列表不是综合列表)
- 对象和类型系统
- 主循环
- 动态加载模块(即插件)
- 线程支持
- 定时器支持
- 内存分配器
- 线程队列(同步和异步)
- 列表(单链接、双链接、双端)
- 哈希表
- 数组
- 树(n元和二进制平衡)
- 字符串实用程序和字符集处理
- 词汇扫描器和XML解析器
- base64(编码和解码)
移动设备支持
gmae(gnome mobile&embedded)倡议推动了gnome组件作为移动和嵌入式用户体验平台的使用、开发和商业化。它汇集了行业领导者、专家顾问、关键开发人员以及他们所代表的社区和行业组织。因此,GTK+具有与移动和嵌入式平台需求相关的功能。在过去几年中,GTK+参与了多项嵌入式计划,包括:
- 诺基亚770/N800/N810/N900
- One Laptop Per Child Project
- OpenMoko
起源
GTK+最初是为GNU图像处理程序gimp开发和使用的。它被称为“gimp工具包”(The GIMP ToolKit),以便记住项目的起源。今天,它通常简称为GTK+,被大量应用程序使用,包括GNU项目的GNOME桌面。Peter Mattis在Spencer Kimball和Josh Macdonald的帮助下开始了这一切。Marius Vollmer教我们如何使GTK+用于语言绑定。LarsHamann和StefanJeske为核心构件添加了各种特性。CarstenHaitzler设计并完成了主题支持的第一个实现。Shawn Amundson发布了GTK+1.0和GTK+1.2的管理。
体系结构
随着时间的推移,GTK+团队已经将GTK+建立在四个库的基础上:
- GLib,构成GTK+基础的低级核心库。它为C提供数据结构处理,可移植性封装和接口,用于事件循环、线程、动态加载和对象系统等运行时功能。
- Pango,用于布局和呈现强调国际化的文本的库。它构成了GTK+文本和字体处理的核心。
- Cairo,支持多个输出设备(包括x window系统、win32)的二维图形库,同时在所有媒体上生成一致的输出,同时利用可用的显示硬件加速。
- ATK,用于提供可访问性的一组接口的库。通过支持ATK接口,应用程序或工具包可以与屏幕阅读器、放大镜和其他输入设备等工具一起使用。