GTK

Материал из Википедии — свободной энциклопедии
(перенаправлено с «GTK+»)
Текущая версия страницы покане проверялась опытными участниками и может значительно отличаться отверсии, проверенной 19 мая 2015 года; проверки требуют72 правки.
Перейти к навигацииПерейти к поиску
GTK
Логотип программы GTK
Скриншот программы GTK
Типфреймворк приложения[вд] и библиотека виджетов[вд]
АвторыThe GTK+ Team,
первоначальные авторы:
Peter Mattis,
Spencer Kimball,
Josh MacDonald[1]
РазработчикиGNOME Foundation и Проект GNU[3]
Написана наСи[4]
Операционные системыGNU/Linux, macOS, Unix-подобная операционная система, Windows и Linux
Первый выпуск14 апреля1998
Аппаратная платформакроссплатформенность
Последняя версия
Репозиторийgitlab.gnome.org/GNOME/g…
Состояниеактивное
ЛицензияLGPL-2.1[вд][5][6]
Сайтgtk.org (англ.)
Логотип Викисклада Медиафайлы на Викискладе

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

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

Содержание

История

[править |править код]
Номер версииДата выхода версииЗначительные измененияПоследняя минорная версия
1.014 апреля1998 годаПервая стабильная версия1.0.6
1.227 февраля1999 годаНовые виджеты (GtkFontSelector, GtkPacker, GtkItemFactory, GtkCTree,
GtkInvisible, GtkCalendar, GtkLayout, GtkPlug, GtkSocket)
1.2.10
2.011 марта2002 годаGObject, Universal Unicode UTF-82.0.9
2.222 декабря2002 годаMultihead support2.2.4
2.416 марта2004 годаНовые виджеты (GtkFileChooser, GtkComboBox, GtkComboBoxEntry,
GtkExpander, GtkFontButton, GtkColorButton)
2.4.14
2.616 декабря2004 годаНовые виджеты (GtkIconView, GtkAboutDialog, GtkCellView);
это последний выпуск, поддерживающийWindows 98/ME
2.6.10
2.813 августа2005 годаИнтеграцияCairo2.8.20
2.103 июля2006 годаНовые виджеты (GtkStatusIcon, GtkAssistant, GtkLinkButton,
GtkRecentChooser) и поддержка печати (GtkPrintOperation)
2.10.14
2.1214 сентября2007 годаGtkBuilder2.12.12
2.144 сентября2008 годаПоддержка загрузкиJPEG 20002.14.7
2.1613 марта2009 годаНовый GtkOrientable,
в поле ввода пароля показывается предупреждение при включённомCaps Lock,
улучшения в GtkScale, GtkStatusIcon, GtkFileChooser.
2.16.6
2.1823 сентября2009 годаНовый GtkInfoBar. Улучшения в диалоге выбора файла, печати.
GDK был переписан для использования 'client-side windows'
2.18.9
2.2023 марта2010 годаНовый GtkSpinner и GtkToolPalette, GtkOffscreenWindow.
Улучшения в диалоге выбора файла, работе с клавиатурой, GDK.
Включены данные интроспекции GObject
2.20.1
2.2223 сентября2010 годаgdk-pixbuf выделен в отдельный модуль,
большинство функций отрисовки теперь выполняет Cairo
2.22.1
2.2430 января2011 годаНовый упрощённыйComboBox-виджет (GtkComboBoxText),
CUPS-бэкенд печати может отправлять задания в PDF,
GtkBuilder получил поддержку текстовых тегов,
внесено множество исправлений в символы интроспекции
2.24.0
3.010 февраля2011 годаЗа отрисовку теперь полностью отвечаетCairo, абстракция от X11,
использование XInput2, поддержкаCSS-подобных тем оформления
3.0.12
3.225 сентября2011 годаНовые экспериментальные бэкэндыWayland иHTML5, новый диалог выбора шрифта,
новые виджеты: GtkLockButton и GtkOverlay
3.2.4
3.426 марта2012 годаПоддержка сенсорных дисплеев, в том числе мультитач,
поддержка режима плавной прокрутки, улучшена поддержка Windows, MacOS X,
расширенAPI для формирования визуальных тем
3.4.4
3.624 сентября2012 годаНовые виджеты: GtkSearchEntry, GtkMenuButton, GtkLevelBar.
Кнопки ввода чисел GtkSpinButton теперь могут быть расположены вертикально.
Поддержка CSS-анимации, использования размытых теней.
3.6.5
3.813 мая2013 годаПоддержка Wayland 1.0, переработка GDK-бэкенда Broadway, улучшены темы оформления и управление геометрией.
Добавлена поддержка всплывающих окон, проведена обширная работа по увеличению производительности
3.8.9
3.1023 сентября2013 годаНовые виджеты (GtkHeaderBar, GtkPlacesSidebar, GtkStack, GtkStackSwitcher, GtkRevealer, GtkSearchBar, GtkListBox).
Поддержка Wayland 1.2 (maximization, animated cursors, multiple monitors, settings, custom surfaces and frame synchronization)
3.10.9
3.1225 марта2014 годаПоддержка Wayland 1.5; Новые виджеты (Popover, GtkActionBar, GtkFlowBox). Улучшена поддержка глобального меню вOS X.3.12.2
3.1422 сентября2014 годаПоддержка Wayland 1.6; Интеграция интерактивного отладчика GtkInspector. Прекращена поддержка виджетов GdkColor, GtkMisc, GtkArrow, GtkStatusIcon, GtkNumerableIcon, GtkThemingEngine.3.14.6
3.1622 марта2015 годаGDK встроена поддержка отрисовки окон через OpenGL для X11 и Wayland через libepoxy с использованием GLX или EGL, новые виджеты (GtkGLArea, GtkStackSidebar, GtkModelButton, GtkPopoverMenu), Экспериментальная поддержкаMir.3.16.0
3.1822 ноября2015 годаОбновился дизайн выбора файла, Удалена поддержка Windows XP3.18.5
3.2021 марта2016 годаРеализована система узлов CSS (CSS nodes), новый виджетGtkShortcutsWindow3.20.3 (недоступная ссылка)
3.2220 сентября2016 годаДобавлен API GtkPadController для обработки жестов с планшетов, новый виджет GtkShortcutLabel, интегрирована технология Flatpak3.22.0
4.016 декабря2020 года[9]Выпуск графического тулкита GTK 4.04.0.3
4.230 марта2021 года[10]Выпуск графического тулкита GTK 4.24.2.1
4.423 августа2021 года[11]Выпуск графического тулкита GTK 4.44.4.0
4.630 декабря2021 года[12]Доступен графический тулкит GTK 4.64.6.2

Архитектура

[править |править код]
Основная статья:Список языковых привязок GTK+

GTK+ написана наязыке Си, но тем не менее, являетсяобъектно-ориентированной[13]. Одной из причин для выбора Си в качестве языка было желание легко строитьинтерфейсы для другихязыков программирования.В результате под GTK+ можно писать на следующих языках программирования:

ЯзыкНазваниеПоддержка
AdaGtkAdaЧастичная поддержка до 2.18
CGTK+Встроена
C++gtkmmДа
C# и другие языки
программирования
платформы.NET
Gtk#Частичная поддержка до 2.20
DgtkDПоддержка GTK2 была gtkD-1.7.4, после - GTK3 (плюсCairo,Gda,Gl,GStreamer)
ErlanggtkNodeЧастичная поддержка до 2.16
Fortrangtk-fortranЧастичная поддержка до 2.24 / 3.0
Gogo-gtkЧастичная поддержка (33%)[14]
GOBязыки, написанные для системыGObject.Да
Genieязыки, написанные для системыGObject.Да
Haskellgtk2hsДа
FreeBASICGTK+tobac2Частичная поддержка до 2.22: Поддерживается также GTK3
Free Pascal(header) integrated into the core distributionGTK 2.16 с частичной поддержкой поздних версий
Javajava-gnomeЧастичная поддержка до 2.20 (недоступна на Windows)
JavaScriptseed/GJSДа
LualgobПоддерживает все версии, начиная с 2.16
Lispcl-cffi-gtk
LuaLuaGtkЧастичная поддержка до 2.16
Node.jsnode-gtkДа
OCamlLablGTKЧастичная поддержка до 2.16
Perlperl-Gtk3Да
PHPPHP-GTKЧастичная поддержка до 2.20
PureBasicGtk2Да
PythonGObject-интроспекция черезPyGI, ранееPyGTKДа
RRGtk2Частичная поддержка до 2.12
Rubyruby-gtk2Да
SmalltalkSmalltalk GTKGNU Smalltalk,Smalltalk YX,Squeak
TclGnoclДа
Valaязыки, написанные для системыGObject.Да
The GTK toolkit

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

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

Внешний вид

[править |править код]

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

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

[править |править код]

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

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

Ниже предоставлен неполный (так как 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+

Приложения, использующие 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», проходившем в Дублине[16]. Первый набросок плана разработки был опубликован 9 апреля 2009[17].

10 февраля 2011 года состоялся релиз GTK+ 3.0.0.

Пример программы

[править |править код]

Простая программа «Здравствуй, мир!» на GTK+ вLinux

/* Подключаем библиотеку GTK+ */#include<gtk/gtk.h>intmain(intargc,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();return0;}

Чтобы скомпилировать пример, нужно выполнить команду:

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`

См. также

[править |править код]

Интерфейсы для других языков программирования

[править |править код]

Примечания

[править |править код]
  1. См. файлAUTHORS в архиве с исходными кодамиGTK+.
  2. 4.18.2 — 2025.
  3. http://directory.fsf.org/wiki/gtk+
  4. The gtk Open Source Project on Open Hub: Languages Page — 2006.
  5. Free Software Directory
  6. Overview of GTK+ and its Libraries (англ.)
  7. Проект GTK+ объявил о переименовании в GTK  (неопр.). Дата обращения: 10 апреля 2019. Архивировано 8 февраля 2019 года.
  8. 12GTK+ 2.18.0 released (англ.). Дата обращения: 23 сентября 2009. Архивировано изоригинала 23 августа 2011 года.
  9. gtk 4.0.0  (неопр.). Дата обращения: 27 октября 2021. Архивировано 28 октября 2021 года.
  10. gtk 4.2.0  (неопр.). Дата обращения: 27 октября 2021. Архивировано 27 октября 2021 года.
  11. gtk 4.4.0  (неопр.). Дата обращения: 27 октября 2021. Архивировано 24 августа 2021 года.
  12. gtk 4.6.0  (неопр.). Дата обращения: 31 марта 2022. Архивировано 23 января 2022 года.
  13. GTK tutorial  (неопр.). Дата обращения: 9 августа 2011. Архивировано изоригинала 22 августа 2011 года.
  14. Go-GTK  (неопр.). mattn.github.io. Дата обращения: 20 ноября 2016. Архивировано 27 ноября 2016 года.
  15. GtkSharp — Mono  (неопр.). Дата обращения: 7 мая 2010. Архивировано 26 января 2021 года.
  16. Анонс «GTK+ Theming Hackfest»  (неопр.). Дата обращения: 25 апреля 2009. Архивировано 17 июля 2011 года.
  17. План работ Gtk+ 3.0  (неопр.). Дата обращения: 25 апреля 2009. Архивировано 12 апреля 2009 года.

Ссылки

[править |править код]
GTK+:

Перейти к шаблону «GNOME»
Core Applications[англ.]
Приложения
Графика
Игры
Интернет
Мультимедиа
Офис
Разработка
Система
Утилиты
Компоненты
Platform
Architecture
Интерфейс пользователя
Basic
Компоненты
freedesktop.org
Сообщество
Люди
Перейти к шаблону «Инструментарии виджетов»
Инструментарии (наборы)элементов графического интерфейса
Низко-
уровневые
Высоко-
уровневые
Amiga OS
Mac OS и
macOS
Windows
UNIX, подX
Кросс-
платфор-
менные
На основе Flash
На основе XML,
AJAX или SVG
На основе Java
На основе
C или C++
На основе Common Lisp
На основе Pascal
На основе Python
На основе Objective C
Источник —https://ru.wikipedia.org/w/index.php?title=GTK&oldid=141982845
Категории:
Скрытые категории: