PHP-GTK
- 1 year ago
- 0
- 0
GTK (ранее GTK+ ; сокращение от GIMP ToolKit ) — кроссплатформенная библиотека элементов интерфейса (фреймворк), имеет простой в использовании API , наряду с Qt является одной из двух наиболее популярных на сегодняшний день библиотек для Wayland и X Window System .
Будучи изначально частью графического редактора GIMP , она развилась в отдельный проект и приобрела заметную популярность. GTK — свободное ПО , распространяемое на условиях GNU LGPL , позволяющей создавать как свободное , так и проприетарное программное обеспечение с использованием библиотеки. GTK является официальной библиотекой для создания графического интерфейса проекта GNU .
Номер версии | Дата выхода версии | Значительные изменения | Последняя минорная версия |
---|---|---|---|
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 |
26 марта 2012 года |
Поддержка сенсорных дисплеев, в том числе мультитач,
поддержка режима плавной прокрутки, улучшена поддержка Windows, MacOS X, расширен API для формирования визуальных тем |
||
24 сентября 2012 года |
Новые виджеты: GtkSearchEntry, GtkMenuButton, GtkLevelBar.
Кнопки ввода чисел GtkSpinButton теперь могут быть расположены вертикально. Поддержка CSS-анимации, использования размытых теней. |
||
13 мая 2013 года |
Поддержка Wayland 1.0, переработка GDK-бэкенда Broadway, улучшены темы оформления и управление геометрией.
Добавлена поддержка всплывающих окон, проведена обширная работа по увеличению производительности |
||
23 сентября 2013 года |
Новые виджеты (GtkHeaderBar, GtkPlacesSidebar, GtkStack, GtkStackSwitcher, GtkRevealer, GtkSearchBar, GtkListBox).
Поддержка Wayland 1.2 (maximization, animated cursors, multiple monitors, settings, custom surfaces and frame synchronization) |
||
25 марта 2014 года | Поддержка Wayland 1.5; Новые виджеты (Popover, GtkActionBar, GtkFlowBox). Улучшена поддержка глобального меню в OS X . | ||
22 сентября 2014 года | Поддержка Wayland 1.6; Интеграция интерактивного отладчика GtkInspector. Прекращена поддержка виджетов GdkColor, GtkMisc, GtkArrow, GtkStatusIcon, GtkNumerableIcon, GtkThemingEngine. | ||
22 марта 2015 года | GDK встроена поддержка отрисовки окон через OpenGL для X11 и Wayland через libepoxy с использованием GLX или EGL, новые виджеты (GtkGLArea, GtkStackSidebar, GtkModelButton, GtkPopoverMenu), Экспериментальная поддержка Mir . | ||
22 ноября 2015 года | Обновился дизайн выбора файла, Удалена поддержка Windows XP | ||
21 марта 2016 года | Реализована система узлов CSS (CSS nodes), новый виджет | (недоступная ссылка) | |
20 сентября 2016 года | Добавлен API GtkPadController для обработки жестов с планшетов, новый виджет GtkShortcutLabel, интегрирована технология Flatpak | ||
16 декабря 2020 года | |||
30 марта 2021 года | |||
23 августа 2021 года | |||
30 декабря 2021 года |
GTK+ написана на языке Си , но тем не менее, является объектно-ориентированной . Одной из причин для выбора Си в качестве языка было желание легко строить интерфейсы для других языков программирования . В результате под GTK+ можно писать на следующих языках программирования:
Язык | Название | Поддержка |
---|---|---|
Ada | GtkAda | Частичная поддержка до 2.18 |
C | GTK+ | Встроена |
C++ | gtkmm | Да |
C#
и другие языки
программирования платформы .NET |
Частичная поддержка до 2.20 | |
D | Поддержка GTK2 была gtkD-1.7.4, после - GTK3 (плюс Cairo , , , GStreamer ) | |
Erlang | Частичная поддержка до 2.16 | |
Fortran | gtk-fortran | Частичная поддержка до 2.24 / 3.0 |
Go | go-gtk | Частичная поддержка (33%) |
GOB | языки, написанные для системы GObject . | Да |
языки, написанные для системы GObject . | Да | |
Haskell | gtk2hs | Да |
FreeBASIC | GTK+tobac2 | Частичная поддержка до 2.22: Поддерживается также GTK3 |
Free Pascal | (header) integrated into the core distribution | GTK 2.16 с частичной поддержкой поздних версий |
Java | Частичная поддержка до 2.20 (недоступна на Windows) | |
JavaScript | / | Да |
Lua | lgob | Поддерживает все версии, начиная с 2.16 |
Lisp | ||
Lua | LuaGtk | Частичная поддержка до 2.16 |
Node.js | node-gtk | Да |
OCaml | LablGTK | Частичная поддержка до 2.16 |
Perl | perl-Gtk3 | Да |
PHP | PHP-GTK | Частичная поддержка до 2.20 |
PureBasic | Gtk2 | Да |
Python | GObject -интроспекция через , ранее PyGTK | Да |
R | Частичная поддержка до 2.12 | |
Ruby | Да | |
Smalltalk | Smalltalk GTK | , , Squeak |
Tcl | Gnocl | Да |
Vala | языки, написанные для системы GObject . | Да |
Собственно GTK+ состоит из двух компонентов: GTK и GDK . Первый содержит набор элементов пользовательского интерфейса, или « виджетов » (таких, как кнопка , список, поле для ввода текста и т. п. ) для различных задач. GDK отвечает за вывод на экран и может использовать для этого X Window System , Wayland , Linux Framebuffer , WinAPI или функции Mac OS X . Начиная с версии 2.8, GDK во многом (но не полностью) заменена на систему отрисовки векторной графики Cairo .
Помимо Cairo, GTK+ зависит от трёх библиотек — GLib , Pango и ATK , — которые разрабатываются вместе с GTK+, но могут использоваться и отдельно.
Внешний вид графических интерфейсов , созданных с использованием GTK+, может конфигурироваться пользователем и/или программистом. При этом настраиваются не только цвета и шрифты, но и способ отображения различных элементов. Достигается это за счёт использования « движков » для вывода на экран. Путём подключения другого движка можно кардинальным образом менять внешний вид программ. Например, некоторые движки могут использовать псевдо трёхмерный вид, другие — более «плоский» и т. п.
На основе GTK+ построены рабочие окружения GNOME и Xfce . Программы, использующие GTK+, могут выполняться в других окружениях, например в KDE и LXQt . Кроме того, GTK+ может работать и на операционных системах семейств Microsoft Windows и Mac OS X .
Также GTK+ выбран в качестве основной библиотеки построения пользовательских интерфейсов для Mono (порта Microsoft.NET для Linux).
Ниже предоставлен неполный (так как GTK слишком популярен) список проектов с использованием GTK:
В 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`