GTK+http://zh.wikipedia.org/wiki/GTK%2B#.E5.9B.BE.E5.BD.A2.E6.97.A0.E5.85.B3.E4.BB.A3.E7.A0.81
GTK+最初是GIMP的专用开发库(GIMP Toolkit),后来发展为Unix-like系统下开发图形界面的应用程序的主流开发工具之一。GTK+是自由软件,并且是GNU计划的一部分。GTK+的许可协议是LGPL。
编程语言
GTK+使用C语言开发,但是其设计者使用面向对象技术。也提供了C++(gtkmm)、Perl、Ruby、Java和Python(PyGTK)绑定,其他的绑定有Ada、D、Haskell、PHP和所有的.NET编程语言。
与其他很多部件工具箱不同,GTK+ 并不基于Xt。这一决策优劣互见:优点是GTK+ 可以应用于其他系统,其灵活性也很强;而缺点就是它无法利用以传统方法为X11定制的X资源数据库。GTK+ 最早应用于X Window System,如今已移植至其他平台,诸如Microsoft Windows、DirectFB,以及Quartz在Mac OS X.
Glade是一个界面设计工具,但是它也包含了一种描述GUI界面的XML语言,它和libglade一起工作就可以直接使用GTK和GNOME控件;新的Glade-3不再直接支持生成编程语言源代码。
外观和感觉[
提供不同的显示引擎使得最终用户可以定制外观和感觉。目前已经有一些可以模仿其他流行的平台或者工具箱(例如Windows 95、Motif、Qt或者NEXTSTEP)的引擎。
使用
使用GTK的环境
- GNOME是以GTK+为基础,就是说为GNOME编写的程序使用GTK+ 做为其工具箱。
- Xfce也基于GTK+,但是它的应用程序并不对很多其他程序有依赖。(这就是"GNOME程序"和"GTK+程序"的不同。)
- LXDE也基于GTK+,一个尽可能减少包相依性的桌面环境。
- GPE Palmtop环境和Nokia的互联网平板电脑的框架Maemo基于GTK+。
这只是一部分,另外GTK+ 也可以运行在KDE的环境下。而且GTK+ 也可以在Microsoft Windows运行,另外还有DirectFB和ncurses。
使用GTK的窗口管理器
GTK+应用程序
以下程序都是使用GTK+开发、属于开源软件,可以运行于Linux/Unix,Windows,Mac等多种操作系统平台上。
- Firefox-Mozilla基金会的网页浏览器。
- Geany-代码编辑器
- GIMP-类似于Photoshop的图像处理程序
- Inkscape-类似于Illustrator、CorelDraw的矢量图形绘制工具
- Pidgin-支持多种协议(IRC、Gtalk、Yahoo Talk、MSN等等)的聊天工具
- gcin-一种在Linux、Windows系统上常见的输入法平台
主要版本 |
发布日期 |
主要增强 |
最后次要版本 |
1998年4月14日 |
第一个稳定版本 |
1.0.6 |
|
1999年2月27日 |
新增部件(GtkFontSelector、GtkPacker、GtkItemFactory、GtkCTree、GtkInvisible、GtkCalendar、GtkLayout、GtkPlug、GtkSocket) |
||
2002年3月11日 |
2.0.9 |
||
2002年12月22日 |
Multihead support |
2.2.4 |
|
2004年3月16日 |
新增部件(GtkFileChooser、GtkComboBox、GtkComboBoxEntry、GtkExpander、GtkFontButton、GtkColorButton) |
||
2004年12月16日 |
New widgets (GtkIconView, GtkAboutDialog, GtkCellView). |
||
2005年8月13日 |
Cairo integration |
||
2006年7月3日 |
新增部件(GtkStatusIcon、GtkAssistant、GtkLinkButton、GtkRecentChooser)以及打印支持(GtkPrintOperation) |
||
2007年9月14日 |
GtkBuilder |
||
2008年9月4日 |
Jpeg2000 load support |
||
2009年3月13日 |
New GtkOrientable, Caps Lock warning in password Entry. |
||
2009年9月23日 |
New GtkInfoBar. Improvement on file chooser, printing. |
||
2010年3月23日 |
New GtkSpinner and GtkToolPalette, GtkOffscreenWindow. Improvement on file chooser, |
||
2010年9月23日 |
gdk-pixbuf moved to separate module, most GDK drawing are based on Cairo, |
||
2011年1月30日 |
New simple combo box widget (GtkComboBoxText) added, the cups print backend can send print jobs as PDF, |
||
2011年2月10日 |
Cairo, more X11 agnostic, XInput2, CSS-based theme API |
图形无关代码
最初GTK+包括一些和图形无关的常规功能,如链表和二叉树等数据结构。这些基本功能和对象系统GObject已经合并到独立的库Glib,它被程序员专门用于开发不需要图形界面的代码。
GTK+ 2
2002年3月11日,GTK+2.0版正式发布。GTK+ 2是GTK+ 后继版本,其新特性包括使用Pango改进的文本渲染、新主题引擎、使用ATK改进的可达性、完全转换到使用UTF-8的Unicode和更灵活的API。但是它和GTK+ 1不完全兼容,因此必须由程序员做移植工作。由于GTK+ 1更快、相对更简单或更加适合嵌入式应用,所以还被继续使用。
从GTK+ 2的2.8版起,它依靠库Cairo完成渲染,而这引入了矢量图形的支持。
发展
Ridley项目正在尝试统一一系列和GTK+相关的库,包括libgnome、libgnomeui、libgnomeprint、libgnomeprintui、libglade、libgnomecanvas、libegg、libeel和gtkglext。
GTK+ hello world
GTK+ hello world以C撰写,这支程序含有视窗,标题为"Hello, World".
#include <gtk/gtk.h> int main (int argc, char *argv[]) { GtkWidget *window; GtkWidget *label; gtk_init (&argc, &argv); /* create the main, top level, window */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); /* give it the title */ gtk_window_set_title (GTK_WINDOW (window), "Hello World"); /* Connect the destroy signal of the window to gtk_main_quit * When the window is about to be destroyed we get a notification and * stop the main GTK+ loop */ g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL); /* Create the "Hello, World" label */ label = gtk_label_new ("Hello, World"); /* and insert it into the main window */ gtk_container_add (GTK_CONTAINER (window), label); /* make sure that everything, window and label, are visible */ gtk_widget_show_all (window); /* start the main loop, and let it rest there until the application is closed */ gtk_main (); return 0; }
GTK+ Runtime Environment for Windows
由于GTK主要是作为Unix-like系统底下的接口,在Windows使用该系统所开发的软件时就需要用到GTK+ 运行环境,即GTK+ Runtime Environment for Windows。这个软件与GTK+不同的地方在于它仅仅是为了运行软件用途而制作,以解决Windows没有内置GTK+库的问题。
参见
外部链接