GTK+ (GIMP Toolkit)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 13:27, 28 декабря 2016.
GTK+
GTK+ logo.png
Создатели: The GTK+ Team,
первоначальные авторы:
Peter Mattis,
Spencer Kimball,
Josh MacDonald
Выпущена: апрель 1998
Состояние разработки: активное
Написана на: C
Операционная система: Linux, Mac OS X и др. UNIX-подобная операционная система
Локализация: Русский язык
Тип ПО: библиотека Элемент интерфейса
Лицензия: GNU LGPL
Веб-сайт http://www.gtk.org/

GTK+ (сокращение от GIMP ToolKit) — кроссплатформенная библиотека элементов интерфейса (фреймворк), имеет простой в использовании API, наряду с Qt является одной из двух наиболее популярных на сегодняшний день библиотек для X Window System.

Будучи изначально частью графического редактора GIMP, она развилась в отдельный проект и приобрела заметную популярность. GTK+ — свободное ПО, распространяемое на условиях GNU LGPL, позволяющей создавать как свободное, так и проприетарное программное обеспечение с использованием библиотеки. GTK+ является официальной библиотекой для создания графического интерфейса проекта GNU.

История

Проект Ридли (Project Ridley) — это попытка объединить несколько библиотек, сделав их частью GTK+: libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel, gtkglext и libsexy.

Архитектура

GTK+ написана на языке Си, но тем не менее, является объектно-ориентированной. Одной из причин для выбора Си в качестве языка было желание легко строить интерфейсы для других языков программирования. Собственно GTK+ состоит из двух компонентов: GTK и GDK. Первый содержит набор элементов пользовательского интерфейса, или «виджетов» (таких, как кнопка, список, поле для ввода текста и т. п.) для различных задач. GDK отвечает за вывод на экран и может использовать для этого X Window System, Linux Framebuffer, WinAPI или функции Mac OS X. Начиная с версии 2.8, GDK во многом (но не полностью) заменена на систему отрисовки векторной графики Cairo.

Помимо Cairo, GTK+ зависит от трёх библиотек — GLib, Pango и ATK, — которые разрабатываются вместе с GTK+, но могут использоваться и отдельно.

Внешний вид

Внешний вид графических интерфейсов, созданных с использованием GTK+, может конфигурироваться пользователем и/или программистом. При этом настраиваются не только цвета и шрифты, но и способ отображения различных элементов. Достигается это за счёт использования «движков» для вывода на экран. Путём подключения другого движка можно кардинальным образом менять внешний вид программ. Например, некоторые движки могут использовать псевдо-трёхмерный вид, другие — более «плоский» и т. п.

Использование

На основе GTK+ построены рабочие окружения GNOME и Xfce. Программы, использующие GTK+, могут выполняться в других окружениях, например в KDE и LXDE. Кроме того, GTK+ может работать и на операционных системах семействах Microsoft Windows и Mac OS X.

Также GTK+ выбран в качестве основной библиотеки построения пользовательских интерфейсов для Mono (порта Microsoft.NET для Linux).[9]

Ниже предоставлен неполный (так как GTK слишком популярен) список проектов с использованием GTK:

Рабочие окружения, которые используют GTK+

  • GNOME — полностью построено на GTK+
  • Cinnamon — форк GNOME 3, использующий GTK+
  • MATE Desktop (форк GNOME 2) — полностью построено на GTK+
  • Xfce — построено на GTK+, но, в сравнении с GNOME, программы Xfce имеют меньше зависимостей
  • LXDE (Lightweight X11 Desktop Environment) — поддерживает только темы и программы GTK, сам строится на Qt
  • ROX Desktop
  • GPE Palmtop Environment
  • Access Linux Platform
  • Sugar — обучающая платформа, которая построена на GTK+ с ипользованием PyGTK
  • KDE, хотя использует Qt, имеет поддержку программ и тем GTK+ (с версии 4.2).

Оконные менеджеры, использующие GTK+

  • Aewm
  • AfterStep
  • Amaterus
  • IceWM
  • Metacity
  • Marco (форк Metacity в MATE)
  • Mutter
  • Sawfish
  • Wmg
  • Xfwm.

Приложения, использующие GTK+

  • AbiWord — текстовый редактор
  • Anjuta — официальная интегрированная среда разработки GNOME
  • Chromium — веб-браузер, разрабатываемый в основном компанией Google и использующий WebKit
  • Ekiga — приложения для VoIP и видео-конференций
  • Epiphany — веб-браузер среды GNOME.
  • Evolution — программа для управления контактами и электронной почтой
  • Firefox — стандартный браузер большинства Gnome-редакций дистрибутивов Linux
  • GIMP — растровый графический редактор
  • HandBrake — программа для конвертирования видео
  • Inkscape — векторный графический редактор
  • Midori — легковесный веб-браузер
  • MonoDevelop — открытая интегрированная среда разработки
  • Pidgin — клиент обмена мгновенными сообщениями
  • Wireshark — анализатор сетевых пакетов
  • SciTE — кроссплатформенный текстовый редактор

GTK+ 3.0

В GTK версии 3.0.0 пересмотрена обработка устройств ввода, включена поддержка для тем, написанных с CSS-подобным синтаксисом, а также появилась возможность получать информацию от других открытых GTK приложений.

Разработка следующей версии GTK+ началась в феврале 2009 на мероприятии «GTK+ Theming Hackfest», проходившем в Дублине. Первый набросок плана разработки был опубликован 9 апреля 2009.

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 скомпилировать пример при помощи MinGW можно следующей командой:

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` 

Источники

  • GTK+ — The GIMP Toolkit [Электронный ресурс]: официальный сайт GTK+. / Дата обращения: 20.12.2016. — Режим доступа: http://www.gtk.org/ (англ.)
  • GTK+ 2.0 Tutorial [Электронный ресурс]: официальный учебник по GTK+ 2.0 / Дата обращения: 20.12.2016. — Режим доступа: http://library.gnome.org/devel/gtk-tutorial/stable/ (англ.)
  • GTK+ 2.0 Tutorial [Электронный ресурс]: официальный учебник по GTK+ 2.0 / Дата обращения: 20.12.2016. — Режим доступа: http://www.opennet.ru/docs/RUS/gtk_plus/ (рус.)
  • GTK+ 2.10 [Электронный ресурс]: Справочное описание / Дата обращения: 20.12.2016. — Режим доступа: https://www.opennet.ru/docs/RUS/gtk-reference/ Справочное описание (рус.)