GTK

Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено зGtk+)
Перейти до навігації Перейти до пошуку
GTK
ТипWidget toolkit
РозробникиGNOME Foundation
Стабільний випуск4.8 (6 вересня2022;2 роки тому(2022-09-06))
Платформакросплатформова програма
Операційна системаКрос-платформовий
Мова програмуванняC
ЛіцензіяGNU Lesser General Public License
Онлайн-документаціяdocs.gtk.org
Репозиторійgitlab.gnome.org/GNOME/gtk
Вебсайтwww.gtk.org

GTK,колишнійGTK+,(відTheGIMPToolKit) — кросплатформовий набірінструментівдля створенняграфічних інтерфейсів користувача.Разом ізQtє одним із найпопулярніших інструментів дляWaylandтаX Window System.

GTK було розроблено дляGNU Image Manipulation Program(GIMP),растровогографічного редактора, у1997році Спенсером Кімбалом (Spencer Kimball) та Петером Матісом (Peter Mattis), членамиeXperimental Computing Facility(XCF) вUC Berkeley.GTK розвивається в рамкахпроєкту GNUі євільним програмним забезпеченням.КодGTK розповсюджується під ліцензієюLGPL,що дозволяє використовувати GTK не тільки для розробки вільного ПЗ, а й для створення власницьких програм, не вимагаючи від виробників закритих програм виплати роялті або купівлі спеціальної ліцензії.

До складу тулкіта входить повний набірвіджетів,що дозволяють використовувати GTK для проєктів різного рівня і розміру. GTK спеціально спроєктований для підтримки не тільки C/C++,але й інших мов програмування, таких якPerlіPython,що в поєднанні з використанням візуального будівника інтерфейсуGladeдозволяє істотно спростити розробку і скоротити час написання графічних інтерфейсів. Організація виводу в GTK абстрагована від типу віконних систем, наприклад, поставляється бекенд, що забезпечує можливість роботи поверх дисплейного сервераWayland,а також бекенд, котрий дозволяє здійснювати виведення бібліотеки GTK у вікнівеббраузера(запустивши GTK-застосунок на одній машині, можна відкрити браузер на іншій машині і отримати доступ до інтерфейсу цієї програми).

Відтоді як GTK був розроблений в рамках проєктуGIMP,тулкіт використовується в різних проєктах, наприклад, GTK лежить в основі десктоп-оточеньGNOMEтаXfce,використовується в таких продуктах, якFirefoxіOpenOffice/LibreOffice.

Мови програмування

[ред.|ред. код]
The GTK toolkit

GTK+ написана намові програмування С,і використовує систему об'єктівGObject,що робить їїоб'єктно-орієнтованою.ПлатформаGNOMEзабезпечуєміжмовне зв'язуваннядля мов:

Іншими розробниками були написані біндінґи для багатьох іншихмов програмування(Ada,D,Haskell,Ocaml,Pascal,Pike,Tcl,Euphoria[en]та усіх мов.NET). GTK server[2]забезпечує GTK+ інтерфейсомміжпроцесорної взаємодії,що дозволяє використовувати його у будь-якій мові програмування, котра підтримує механізмвведення-виведення(I/O), включно із сценаріямиshell.Повний перелік біндінґів можна знайти на сайті проєкту[3].

На відміну відQt,GTK+ не базується на іншихXt-подібних наборах віджетів. Це надає їй гнучкості і дозволяє використовувати GTK+ на інших системах. Однак, без цієї залежності, GTK+ немає доступу до бази ресурсівX Window System,традиційного способу налаштування програмного забезпеченняX11.

Зовнішній вигляд

[ред.|ред. код]

Кінцевий користувач може налаштувати зовнішній вигляд графічних елементів за допомогою системи жупанів[що це?].Існують жупани, котрі імітують вигляд елементів графічних інтерфейсів таких операційних систем, якWindows 95,Motif,Qt,NEXTSTEP,та багатьох інших.

Платформи

[ред.|ред. код]

GTK+ спочатку призначалась дляX Window System,і вони й по нині залишається її основною платформою. Іншими підтримуваними програмними платформами єMicrosoft Windows(Windows 2000та вище),DirectFBтаQuartz(Mac OS Xv10.4 та вище, нині знаходиться у стадії розробки).

Випуски

[ред.|ред. код]

GTK+ 2 переважає своїми можливостями GTK+ 1. Серед нових можливостей вдосконалене відображення тексту за допомогоюPango,нова система жупанів, вдосконалена доступність за допомогою Accessibility Toolkit, повний перехід наUnicodeвикористовуючи рядкиUTF-8та гнучкішеAPI.Між тим, GTK+ 2 втратила сумісність з GTK+ 1, і програмісти повинні переписати програмне забезпечення під нову версію бібліотеки.

Починаючи з версії 2.8, GTK+ 2 вимагає бібліотекуCairoдля відображення векторної графіки у GTK+ 2.

10 лютого2011відбувся реліз GTK+ 3.0.0[4].Робота над GTK+ 3 починалася як «велика чистка» і тривала протягом кількох років.

Нововведення:

  • Відображенням всього тепер займаєтьсяCairo.GDK більше не є обгорткою застарілих X11 drawing API. Це дозволило видалити кілька X11-орієнтованих концепцій (GCs, colormaps, pixmaps). Більшу частину роботи зробив Benjamin Otte зRedHat.
  • Підтримка сучасних пристроїв введення. Раніше цим нехтували (мало з основних розробників користуються «екзотичними» пристроями введення). З приходом GTK+ 3 з'явилася підтримка декількох покажчиків, клавіатур тощо.
  • НовіAPIдля тем зі знайомим синтаксисомCSSдля налаштування і інші вдосконалення, наприклад, анімована зміна станів.
  • Гнучкіше керування геометрією.
  • Підтримка кількох бекендівGDK.З GTK+ 2.x потрібно було перезбирати програми для їхньої роботи з різними бекендами GDK, бо вони були реалізовані окремими бібліотеками. У GTK+ 3 їх можна вбудувати в одну бібліотеку і вибирати під час виконання. Це полегшить перехід зX11наWaylandабо з Quartz на X11.
  • Легка підтримказастосунків.З інтеграцієюD-Busв GIO стало можливим додати клас, який обробляє велику кількість аспектів інтеграції платформи створення програмного забезпечення, таких як відстеження відкритих вікон, забезпечення унікальності, експорт дій тощо. Це все в стадії розробки і буде розширено в майбутньому.

Історія випусків

[ред.|ред. код]
Лінійка випусків Остання Minor версія Дата виходу Основні зміни
1.0.x 1.0.? ? ?
1.2.x[Архівовано25 липня 2020 уWayback Machine.] 1.2.10 2 квітня2001 ?
2.0.x[Архівовано27 вересня 2020 уWayback Machine.] 2.0.9 20 листопада2002 ?
2.2.x[Архівовано27 вересня 2020 уWayback Machine.] 2.2.4 4 вересня2003 ?
2.4.x[Архівовано27 вересня 2020 уWayback Machine.] 2.4.14 3 грудня2004 ?
2.6.x[Архівовано28 жовтня 2020 уWayback Machine.] 2.6.10 18 серпня2005 ?
2.8.x[Архівовано28 жовтня 2020 уWayback Machine.] 2.8.20 2 липня2006 ІнтеграціяCairo
2.10.x[Архівовано22 вересня 2020 уWayback Machine.] 2.10.14 16 липня2007 GtkPrint — підтримка друку
2.12.x[Архівовано28 вересня 2020 уWayback Machine.] 2.12.11 12 березня2008 GtkBuilder — замінаlibglade
2.14.x[Архівовано19 жовтня 2020 уWayback Machine.] 2.14.3 24 вересня2008 Перелік новинок[Архівовано15 лютого 2011 уWayback Machine.]
3.0 10 лютого2011 Перелік новинок[Архівовано10 вересня 2008 уWayback Machine.]
3.2 26 вересня 2011 Перелік новинок[Архівовано28 березня 2012 уWayback Machine.]
3.4 26 березня 2012 Перелік новинок[Архівовано10 вересня 2008 уWayback Machine.]
3.6
3.8 25 березня 2013
3.10 23 вересня 2013
3.12 25 березня 2014 можливість роботи поверх дисплейного сервераWayland
3.14 22 вересня 2014 підтримкамультитачдоведена до практичного застосування; інтегрований власний інтерактивнийзневаджувачGtkInspector
3.16 22 березня 2015 можливість рисувати черезOpenGLбез зовнішніх надбудов
3.18 22 вересня 2015
3.20 21 березня 2016

Приклад «Привіт, світе!»

[ред.|ред. код]

Класичний приклад програми«Привіт, світе!»(англ.«Hello, world!») на мовіСз використанням GTK+:

#include<config.h>
#include<gtk/gtk.h>

/*
* Запускаємо головний цикл програми
*/
staticvoid
on_destroy(GtkWidget*widget,gpointerdata)
{
gtk_main_quit();
}

intmain(intargc,char*argv[])
{
GtkWidget*window;
GtkWidget*label;

gtk_init(&argc,&argv);

/* створюємо головне вікно */
window=gtk_window_new(GTK_WINDOW_TOPLEVEL);

/* задаємо границю для вікна розміром 20 пікселів */
gtk_container_set_border_width(GTK_CONTAINER(window),20);

/* задаємо вікну заголовок */
gtk_window_set_title(GTK_WINDOW(window),PACKAGE""VERSION);

/* задаємо розміри вікна */
gtk_window_set_default_size(GTK_WINDOW(window),200,50);

/* Під'єднуємо подію "destroy" головного вікна до нашої функції on_destroy */
g_signal_connect(G_OBJECT(window),"destroy",
G_CALLBACK(on_destroy),NULL);

/* створюємо мітку "Привіт, світе!" */
label=gtk_label_new("Hello, World");

/* і додаємо її до головного вікна */
gtk_container_add(GTK_CONTAINER(window),label);

/* відобразити усі віджети */
gtk_widget_show_all(window);

/* запускаємо головний цикл */
gtk_main();

return0;
}

Майбутня розробка

[ред.|ред. код]

Project Ridleyмає намір консолідувати розробку низки бібліотек, котрі є частиною GTK+, серед них: libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel та gtkglext[5].

Див. також

[ред.|ред. код]

Виноски

[ред.|ред. код]
  1. http://directory.fsf.org/wiki/gtk+
  2. GTK-server(англ.).Архіворигіналуза 27 серпня 2008.Процитовано 16 серпня 2008.
  3. Language bindings(англ.).Архіворигіналу за 2 квітня 2011.
  4. GTK+ 3.0.Архіворигіналуза 4 березня 2016.Процитовано 6 травня 2022.
  5. ProjectRidley — GNOME Live!.Архіворигіналуза 1 березня 2011.Процитовано 17 серпня 2008.

Посилання

[ред.|ред. код]

Українські ресурси

[ред.|ред. код]