GTK+ | это... Что такое GTK+? (original) (raw)
GTK+
Тип | библиотека элементов интерфейса (виджетов) |
Автор | The GTK+ Team,первоначальные авторы:Peter Mattis,Spencer Kimball,Josh MacDonald[1] |
Разработчики | сообщество |
Написана на | C |
Операционная система | Linux, Mac OS X и др. UNIX-подобные, Windows[2] |
Языки интерфейса | Русский и ещё 108 языков[3] |
Первый выпуск | апрель 1998[4] |
Последняя версия | 3.6.2 (10 ноября 2012[5]) |
Состояние | активное |
Лицензия | GNU LGPL |
Сайт | gtk.org |
GTK+ (сокращение от GIMP ToolKit) — кроссплатформенная библиотека элементов интерфейса. Наряду с Qt является одной из двух наиболее популярных на сегодняшний день библиотек для X Window System.
Будучи изначально частью графического редактора GIMP, она развилась в отдельный проект и приобрела заметную популярность. GTK+ — свободное ПО, распространяемое на условиях GNU LGPL, позволяющей создавать как свободное, так и проприетарное программное обеспечение с использованием библиотеки. GTK+ является официальной библиотекой для создания графического интерфейса проекта GNU.[6]
Содержание
- 1 История
- 2 Архитектура
- 3 Внешний вид
- 4 Использование
- 5 GTK+ 3.0
- 6 Пример программы
- 7 См. также
- 8 Примечания
- 9 Ссылки
История
Номер версии | Дата выхода версии | Значительные изменения | Последняя минорная версия |
---|---|---|---|
1.0 | 14 апреля 1998 года | Первая стабильная версия | 1.0.6 |
1.2 | 27 февраля 1999 года | Новые виджеты (GtkFontSelector, GtkPacker, GtkItemFactory, GtkCTree,GtkInvisible, GtkCalendar, GtkLayout, GtkPlug, GtkSocket) | 1.2.10 |
2.0 | 11 марта 2002 года | GObject, Universal Unicode UTF-8 | 2.0.9 |
2.2 | 22 декабря 2002 года | Multihead support | 2.2.4 |
2.4 | 16 марта 2004 года | Новые виджеты (GtkFileChooser, GtkComboBox, GtkComboBoxEntry,GtkExpander, GtkFontButton, GtkColorButton) | 2.4.14 |
2.6 | 16 декабря 2004 года | Новые виджеты (GtkIconView, GtkAboutDialog, GtkCellView);это последний выпуск, поддерживающий Windows 98/ME | 2.6.10 |
2.8 | 13 августа 2005 года | Интеграция Cairo | 2.8.20 |
2.10 | 3 июля 2006 года | Новые виджеты (GtkStatusIcon, GtkAssistant, GtkLinkButton,GtkRecentChooser) и поддержка печати (GtkPrintOperation) | 2.10.14 |
2.12 | 14 сентября 2007 года | GtkBuilder | 2.12.12 |
2.14 | 4 сентября 2008 года | Поддержка загрузки JPEG 2000 | 2.14.7 |
2.16 | 13 марта 2009 года | Новый GtkOrientable,в поле ввода пароля показывается предупреждение при включённом Caps Lock,улучшения в GtkScale, GtkStatusIcon, GtkFileChooser. | 2.16.6 |
2.18 | 23 сентября 2009 года | Новый GtkInfoBar. Улучшения в диалоге выбора файла, печати.GDK был переписан для использования 'client-side windows' | 2.18.9 |
2.20 | 23 марта 2010 года | Новый GtkSpinner и GtkToolPalette, GtkOffscreenWindow.Улучшения в диалоге выбора файла, работе с клавиатурой, GDK.Включены данные интроспекции GObject | 2.20.1 |
2.22 | 23 сентября 2010 года | gdk-pixbuf выделен в отдельный модуль,большинство функций отрисовки теперь выполняет Cairo | 2.22.1 |
2.24 | 30 января 2011 года | Новый упрощённый ComboBox-виджет (GtkComboBoxText), CUPS-бэкенд печати может отправлять задания в PDF,GtkBuilder получил поддержку текстовых тегов,внесено множество исправлений в символы интроспекции | 2.24.0 |
3.0 | 10 февраля 2011 года | За отрисовку теперь полностью отвечает Cairo, абстракция от X11,использование XInput2, поддержка CSS-подобных тем оформления | 3.0.12 |
3.2 | 25 сентября 2011 года | Новые экспериментальные Wayland и HTML5 бэкэнды, новый диалог выбора шрифта,новые виджеты: GtkLockButton и GtkOverlay | 3.2.4 |
3.4 | 26 марта 2012 года | Поддержка сенсорных дисплеев, в том числе мультитач,поддержка режима плавной прокрутки, улучшена поддержка Windows, MacOS X,расширен API для формирования визуальных тем | 3.4.0 |
Проект Ридли (Project Ridley) — это попытка объединить несколько библиотек, сделав их частью GTK+: libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel, gtkglext и libsexy.[7]
Архитектура
GTK+ написана на языке Си, но тем не менее, является объектно-ориентированной[8]. Одной из причин для выбора Си в качестве языка было желание легко строить интерфейсы для других языков программирования. В результате под GTK+ можно писать на следующих языках программирования:
Язык | Название | Поддержка |
---|---|---|
Ada | GtkAda | Частичная поддержка до 2.18 |
C | GTK+ | Встроена |
C++ | gtkmm | Да |
C# и другие языкипрограммированияплатформы .NET | Gtk# | Частичная поддержка до 2.20 |
D | gtkD | Частичная поддержка до 2.18 (плюс Cairo, Gda, Gl, GStreamer) |
Erlang | gtkNode | Частичная поддержка до 2.16 |
Fortran | gtk-fortran | Частичная поддержка до 2.24 / 3.0 |
GOB | языки, написанные для системы GObject. | Да |
Genie | языки, написанные для системы GObject. | Да |
Haskell | gtk2hs | Да |
FreeBASIC | GTK+tobac2 | Частичная поддержка до 2.22 |
Free Pascal | (header) integrated into the core distribution | GTK 2.16 с частичной поддержкой поздних версий |
Java | java-gnome | Частичная поддержка до 2.20 (недоступна на Windows) |
JavaScript | seed/GJS | Да |
Lua | lgob | Поддерживает все версии, начиная с 2.16 |
Lua | LuaGtk | Частичная поддержка до 2.16 |
OCaml | LablGTK | Частичная поддержка до 2.16 |
Perl | Gtk2-perl | Частичная поддержка до 2.20 |
PHP | PHP-GTK | Частичная поддержка до 2.20 |
PureBasic | Gtk2 | Да |
Python | GObject-интроспекция через PyGI, ранее PyGTK | Да |
R | RGtk2 | Частичная поддержка до 2.12 |
Ruby | ruby-gtk2 | Да |
Smalltalk | Smalltalk GTK | GNU Smalltalk, Smalltalk YX, Squeak |
Tcl | Gnocl | Да |
Vala | языки, написанные для системы GObject. | Да |
Собственно GTK+ состоит из двух компонентов: GTK и GDK. Первый содержит набор элементов пользовательского интерфейса, или «виджетов» (таких, как кнопка, список, поле для ввода текста и т. п.) для различных задач. GDK отвечает за вывод на экран и может использовать для этого X Window System, Linux Framebuffer, WinAPI или функции Mac OS X. Начиная с версии 2.8, GDK во многом (но не полностью) заменена на систему отрисовки векторной графики Cairo.
Помимо Cairo, GTK+ зависит от трёх библиотек — GLib, Pango и ATK, — которые разрабатываются вместе с GTK+, но могут использоваться и отдельно.[6]
Внешний вид
Внешний вид графических интерфейсов, созданных с использованием GTK+, может конфигурироваться пользователем и/или программистом. При этом настраиваются не только цвета и шрифты, но и способ отображения различных элементов. Достигается это за счёт использования «движков» для вывода на экран. Путём подключения другого движка можно кардинальным образом менять внешний вид программ. Например, некоторые движки могут использовать псевдо-трёхмерный вид, другие — более «плоский» и т. п.
Использование
На основе GTK+ построены рабочие окружения GNOME, LXDE и Xfce. Программы, использующие GTK+ могут выполняться в других окружениях, например в KDE. Кроме того, GTK+ может работать и на операционных системах семействах Microsoft Windows и Mac OS X.
Также GTK+ выбран в качестве основной библиотеки построения пользовательских интерфейсов для Mono (порта Microsoft.NET для Linux).[9]
Рабочие окружения, которые используют GTK+
- GNOME полностью построено на GTK+
- Xfce построено на GTK+, но в сравнении с GNOME, программы Xfce имеют меньше зависимостей
- LXDE (Lightweight X11 Desktop Environment)
- ROX Desktop
- GPE Palmtop Environment
- Access Linux Platform
- Sugar обучающая платформа, которая построена на GTK+ с ипользованием PyGTK
- KDE, хотя использует Qt, имеется поддержка программ и тем GTK+ (с версии 4.2).
Оконные менеджеры, использующие GTK+
Приложения использующие GTK+
- AbiWord — текстовый редактор
- Anjuta — официальная интегрированная среда разработки GNOME
- Chromium — веб-браузер, разрабатываеммый в основном компанией Google и использующий WebKit
- Ekiga — приложения для VoIP и видео-конференций
- Epiphany — веб-браузер среды GNOME.
- Evolution — программа для управления контактами и электронной почтой
- GIMP — растровый графический редактор
- Inkscape — векторный графический редактор
- Midori — легковесный веб-браузер
- MonoDevelop — открытая интегрированная среда разработки
- Pidgin — клиент обмена мгновенными сообщениями
- Wireshark — анализатор сетевых пакетов
- SciTE — кроссплатформенный текстовый редактор
GTK+ 3.0
Разработка следующей версии GTK+ началась в феврале 2009 на мероприятии «GTK+ Theming Hackfest», проходившем в Дублине[10]. Первый набросок плана разработки был опубликован 9 апреля 2009[11].
10 февраля 2011 года состоялся релиз GTK+ 3.0.0.
Пример программы
Простая программа «Здравствуй, мир!» на GTK+ в Linux
/* Подключаем библиотеку GTK+ */
include <gtk/gtk.h>
int main( int argc, char argv[]) { / Объявляем виджеты */ GtkWidget *label; // Метка GtkWidget window; // Главное окно / Инициализируем GTK+ / gtk_init(&argc, &argv); / Создаем главное окно / window = gtk_window_new(GTK_WINDOW_TOPLEVEL); / Устанавливаем заголовок окна "Здравствуй, мир!" / gtk_window_set_title(GTK_WINDOW(window), "Здравствуй, мир!"); / Создаем метку с текстом "Здравствуй, мир!" / label = gtk_label_new("Здравствуй, мир!"); / Вставляем метку в главное окно / gtk_container_add(GTK_CONTAINER(window), label); / Показываем окно вместе с виджетами / gtk_widget_show_all(window); / Соединяем сигнал завершения с выходом из программы / g_signal_connect(G_OBJECT(window), "destroy", G_CALLBACK(gtk_main_quit), NULL); / Приложение переходит в вечный цикл ожидания действий пользователя */ gtk_main(); return 0; }
Чтобы скомпилировать пример, нужно выполнить команду:
gcc file_name.c -o file_name pkg-config --cflags --libs gtk+-3.0
В Windows скомпилировать пример при помощи mingw32 можно следующей коммандой:
i686-pc-mingw32-gcc file_name.c PKG_CONFIG_LIBDIR=yes PKG_CONFIG_PATH=/usr/i686-pc-mingw32/sys-root/mingw/lib/pkgconfig/ pkg-config --cflags --libs gtk+-3.0
См. также
Интерфейсы для других языков программирования
- gtkmm (C++)
- PyGTK (Python)
- Gtk2-perl (Perl)
- PHP-GTK (PHP)
- CL-GTK2 (Common Lisp)
- Полный список интерфейсов, включая и «неофициальные»
Примечания
- ↑ См. файл AUTHORS в архиве с исходными кодами GTK+.
- ↑ Страница загрузки GTK+.
- ↑ См. файлы переводов .po в папке po/ в архиве с исходными кодами GTK+.
- ↑ См. файл ChangeLog.pre-1-0 в архиве с исходными кодами GTK+.
- ↑ Официальный репозиторий GTK+.
- ↑ 1 2 GTK+ 2.18.0 released (англ.). Архивировано из первоисточника 23 августа 2011. Проверено 23 сентября 2009.
- ↑ ProjectRidley — GNOME Live!
- ↑ GTK tutorial
- ↑ GtkSharp — Mono
- ↑ Анонс «GTK+ Theming Hackfest»
- ↑ План работ Gtk+ 3.0
Ссылки
Портал «Свободное программное обеспечение» | |
---|---|
GTK+ на Викискладе? |
- GTK+ — The GIMP Toolkit (англ.) — официальный сайт GTK+.
- GTK+ 2.0 Tutorial (англ.) — официальный учебник по GTK+ 2.0.
- GTK+ 2.0 Tutorial (рус.) — официальный учебник по GTK+ 2.0.
Проект GNOME | ||
---|---|---|
Сообщество | GNOME Foundation • GUADEC | |
Люди | Мигель де Икаса • Федерико Мена • Хэвок Пеннингтон | |
Компоненты | Shell • Панель • Mutter • Metacity | |
Приложения (список) | Anjuta • Cheese • Ekiga • Empathy • Epiphany • Evince • Evolution • Eye of GNOME • File Roller • GCalctool • gedit • Terminal • Inkscape • Meld • Nautilus • OCRFeeder • Rhythmbox • Sound Juicer • Tomboy • Totem • Игры: Games • Aisleriot | |
Технологии | ATK • Bonobo • D-Bus • GConf • GLib • GTK+ • Keyring • GVFS • GObject • GStreamer • Mono • Pango • Vala |
Инструменты разработки элементов графического интерфейса | |
---|---|
Низко-уровневые | Macintosh Toolbox/Carbon • Windows API • Intrinsics • Intuition • Xlib |
Высоко-уровневые | Amiga OS BOOPSI • Magic User Interface • Zune • ReAction GUI Mac OS и Mac OS X Cocoa • MacApp • MacZoop • PowerPlant Microsoft Windows Microsoft Foundation Classes • Windows Template Library • SmartWin++ • Object Windows Library • Visual Component Library • Windows Forms • Windows Presentation Foundation UNIX, под X Xaw • Motif • LessTif • InterViews Кросс-платфор-менные На основе Flash ASWing • Adobe Flex • Gnash • SWF2EXE Software На основе XML,AJAX или SVG Ample SDK • CougarXML • Dojo Toolkit • Echo • ExtJS • GladeXML • Google Web Toolkit • jQuery • Lively Kernel • MooTools • Pyjamas • qooxdoo • Rialto Toolkit • script.aculo.us • XML User Interface • XUL • Yahoo! UI Library На основе Java Abstract Window Toolkit • Swing • Standard Widget Toolkit • Qt Jambi На основеC или C++ Agar • CEGUI • Component Library for Cross Platform • dlib C++ Library • FLTK • FOX toolkit • OpenGL User Interface Library • GTK+ • IUP • Juce • JX Application Framework • Qt • TnFOX • Visual Component Framework • wxWidgets • YAAF • XForms • XVT • Ultimate++ На основе Common Lisp CAPI • Common Graphics • CLIM • McCLIM • Garnet На основе Pascal IP Pascal • Lazarus • fpGUI • FireMonkey На основе Python Pyjamas • PyQt • PyGTK • PyGUI • wxPython • PySide • Tkinter На основе Objective C GNUstep На основе других Tk |