GTK, колишній GTK+, (від The GIMP ToolKit) — кросплатформовий набір інструментів для створення графічних інтерфейсів користувача. Разом із Qt є одним із найпопулярніших інструментів для Wayland та X Window System.
Тип | |
---|---|
Розробники | GNOME Foundation |
Стабільний випуск | 4.8 (6 вересня 2022 ) |
Платформа | кросплатформова програма |
Операційна система | Крос-платформовий |
Мова програмування | C |
Ліцензія | GNU Lesser General Public License |
Онлайн-документація | docs.gtk.org |
Репозиторій | gitlab.gnome.org/GNOME/gtk |
Вебсайт | www.gtk.org |
|
GTK було розроблено для GNU Image Manipulation Program (GIMP), растрового графічного редактора, у 1997 році Спенсером Кімбалом (Spencer Kimball) та Петером Матісом (Peter Mattis), членами (XCF) в UC Berkeley. GTK розвивається в рамках проєкту GNU і є вільним програмним забезпеченням. Код GTK розповсюджується під ліцензією LGPL, що дозволяє використовувати GTK не тільки для розробки вільного ПЗ, а й для створення власницьких програм, не вимагаючи від виробників закритих програм виплати роялті або купівлі спеціальної ліцензії.
До складу тулкіта входить повний набір віджетів, що дозволяють використовувати GTK для проєктів різного рівня і розміру. GTK спеціально спроєктований для підтримки не тільки C/, але й інших мов програмування, таких як Perl і Python, що в поєднанні з використанням візуального будівника інтерфейсу Glade дозволяє істотно спростити розробку і скоротити час написання графічних інтерфейсів. Організація виводу в GTK абстрагована від типу віконних систем, наприклад, поставляється бекенд, що забезпечує можливість роботи поверх дисплейного сервера Wayland, а також бекенд, котрий дозволяє здійснювати виведення бібліотеки GTK у вікні веббраузера (запустивши GTK-застосунок на одній машині, можна відкрити браузер на іншій машині і отримати доступ до інтерфейсу цієї програми).
Відтоді як GTK був розроблений в рамках проєкту GIMP, тулкіт використовується в різних проєктах, наприклад, GTK лежить в основі десктоп-оточень GNOME та Xfce, використовується в таких продуктах, як Firefox і OpenOffice/LibreOffice.
Мови програмування
GTK+ написана на мові програмування С, і використовує систему об'єктів , що робить її об'єктно-орієнтованою. Платформа GNOME забезпечує міжмовне зв'язування для мов:
- (gtkmm)
- Fortran (gtk-fortran)
- Perl (Gtk2-perl)
- Ruby (ruby-gtk2)
- Python (PyGTK)
- Java () (не доступна Microsoft Windows)
- C# ()
- PHP ()
Іншими розробниками були написані біндінґи для багатьох інших мов програмування (Ada, D, Haskell, Ocaml, Pascal, , Tcl, [en] та усіх мов .NET). GTK server забезпечує GTK+ інтерфейсом міжпроцесорної взаємодії, що дозволяє використовувати його у будь-якій мові програмування, котра підтримує механізм введення-виведення (I/O), включно із сценаріями shell. Повний перелік біндінґів можна знайти на сайті проєкту.
На відміну від 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 X v10.4 та вище, нині знаходиться у стадії розробки).
Випуски
GTK+ 2
GTK+ 2 переважає своїми можливостями GTK+ 1. Серед нових можливостей вдосконалене відображення тексту за допомогою Pango, нова система жупанів, вдосконалена доступність за допомогою Accessibility Toolkit, повний перехід на Unicode використовуючи рядки UTF-8 та гнучкіше API. Між тим, GTK+ 2 втратила сумісність з GTK+ 1, і програмісти повинні переписати програмне забезпечення під нову версію бібліотеки.
Починаючи з версії 2.8, GTK+ 2 вимагає бібліотеку Cairo для відображення векторної графіки у GTK+ 2.
GTK+ 3
10 лютого 2011 відбувся реліз GTK+ 3.0.0. Робота над GTK+ 3 починалася як «велика чистка» і тривала протягом кількох років.
Нововведення:
- Відображенням всього тепер займається Cairo. GDK більше не є обгорткою застарілих X11 drawing API. Це дозволило видалити кілька X11-орієнтованих концепцій (GCs, colormaps, pixmaps). Більшу частину роботи зробив Benjamin Otte з RedHat.
- Підтримка сучасних пристроїв введення. Раніше цим нехтували (мало з основних розробників користуються «екзотичними» пристроями введення). З приходом GTK+ 3 з'явилася підтримка декількох покажчиків, клавіатур тощо.
- Нові API для тем зі знайомим синтаксисом CSS для налаштування і інші вдосконалення, наприклад, анімована зміна станів.
- Гнучкіше керування геометрією.
- Підтримка кількох бекендів . З 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> /* * Запускаємо головний цикл програми */ static void on_destroy (GtkWidget * widget, gpointer data) { gtk_main_quit (); } int main (int argc, 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 (); return 0; }
Майбутня розробка
Project Ridley має намір консолідувати розробку низки бібліотек, котрі є частиною GTK+, серед них: libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel та gtkglext.
Див. також
Виноски
- http://directory.fsf.org/wiki/gtk+
- (англ.). Архів оригіналу за 27 серпня 2008. Процитовано 16 серпня 2008.
- Language bindings (англ.). оригіналу за 2 квітня 2011.
- . Архів оригіналу за 4 березня 2016. Процитовано 6 травня 2022.
- . Архів оригіналу за 1 березня 2011. Процитовано 17 серпня 2008.
Посилання
- Домашня сторінка GTK+
- Foundations of GTK+ Development [ 14 вересня 2008 у Wayback Machine.], книга для розробників
Українські ресурси
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
GTK kolishnij GTK vid The GIMP ToolKit krosplatformovij nabir instrumentiv dlya stvorennya grafichnih interfejsiv koristuvacha Razom iz Qt ye odnim iz najpopulyarnishih instrumentiv dlya Wayland ta X Window System GTKTipRozrobniki GNOME FoundationStabilnij vipusk 4 8 6 veresnya 2022 20 misyaciv tomu 2022 09 06 Platforma krosplatformova programaOperacijna sistema Kros platformovijMova programuvannya CLicenziya GNU Lesser General Public LicenseOnlajn dokumentaciya docs gtk orgRepozitorij gitlab gnome org GNOME gtkVebsajt www gtk org Mediafajli u Vikishovishi GTK bulo rozrobleno dlya GNU Image Manipulation Program GIMP rastrovogo grafichnogo redaktora u 1997 roci Spenserom Kimbalom Spencer Kimball ta Peterom Matisom Peter Mattis chlenami XCF v UC Berkeley GTK rozvivayetsya v ramkah proyektu GNU i ye vilnim programnim zabezpechennyam Kod GTK rozpovsyudzhuyetsya pid licenziyeyu LGPL sho dozvolyaye vikoristovuvati GTK ne tilki dlya rozrobki vilnogo PZ a j dlya stvorennya vlasnickih program ne vimagayuchi vid virobnikiv zakritih program viplati royalti abo kupivli specialnoyi licenziyi Do skladu tulkita vhodit povnij nabir vidzhetiv sho dozvolyayut vikoristovuvati GTK dlya proyektiv riznogo rivnya i rozmiru GTK specialno sproyektovanij dlya pidtrimki ne tilki C C ale j inshih mov programuvannya takih yak Perl i Python sho v poyednanni z vikoristannyam vizualnogo budivnika interfejsu Glade dozvolyaye istotno sprostiti rozrobku i skorotiti chas napisannya grafichnih interfejsiv Organizaciya vivodu v GTK abstragovana vid tipu vikonnih sistem napriklad postavlyayetsya bekend sho zabezpechuye mozhlivist roboti poverh displejnogo servera Wayland a takozh bekend kotrij dozvolyaye zdijsnyuvati vivedennya biblioteki GTK u vikni vebbrauzera zapustivshi GTK zastosunok na odnij mashini mozhna vidkriti brauzer na inshij mashini i otrimati dostup do interfejsu ciyeyi programi Vidtodi yak GTK buv rozroblenij v ramkah proyektu GIMP tulkit vikoristovuyetsya v riznih proyektah napriklad GTK lezhit v osnovi desktop otochen GNOME ta Xfce vikoristovuyetsya v takih produktah yak Firefox i OpenOffice LibreOffice Movi programuvannyaThe GTK toolkit GTK napisana na movi programuvannya S i vikoristovuye sistemu ob yektiv sho robit yiyi ob yektno oriyentovanoyu Platforma GNOME zabezpechuye mizhmovne zv yazuvannya dlya mov C gtkmm Fortran gtk fortran Perl Gtk2 perl Ruby ruby gtk2 Python PyGTK Java ne dostupna Microsoft Windows C PHP Inshimi rozrobnikami buli napisani bindingi dlya bagatoh inshih mov programuvannya Ada D Haskell Ocaml Pascal Tcl en ta usih mov NET GTK server zabezpechuye GTK interfejsom mizhprocesornoyi vzayemodiyi sho dozvolyaye vikoristovuvati jogo u bud yakij movi programuvannya kotra pidtrimuye mehanizm vvedennya vivedennya I O vklyuchno iz scenariyami shell Povnij perelik bindingiv mozhna znajti na sajti proyektu Na vidminu vid Qt GTK ne bazuyetsya na inshih Xt podibnih naborah vidzhetiv Ce nadaye yij gnuchkosti i dozvolyaye vikoristovuvati GTK na inshih sistemah Odnak bez ciyeyi zalezhnosti GTK nemaye dostupu do bazi resursiv X Window System tradicijnogo sposobu nalashtuvannya programnogo zabezpechennya X11 Zovnishnij viglyadKincevij koristuvach mozhe nalashtuvati zovnishnij viglyad grafichnih elementiv za dopomogoyu sistemi zhupaniv sho ce Isnuyut zhupani kotri imituyut viglyad elementiv grafichnih interfejsiv takih operacijnih sistem yak Windows 95 Motif Qt NEXTSTEP ta bagatoh inshih PlatformiGTK spochatku priznachalas dlya X Window System i voni j po nini zalishayetsya yiyi osnovnoyu platformoyu Inshimi pidtrimuvanimi programnimi platformami ye Microsoft Windows Windows 2000 ta vishe DirectFB ta Quartz Mac OS X v10 4 ta vishe nini znahoditsya u stadiyi rozrobki VipuskiGTK 2 GTK 2 perevazhaye svoyimi mozhlivostyami GTK 1 Sered novih mozhlivostej vdoskonalene vidobrazhennya tekstu za dopomogoyu Pango nova sistema zhupaniv vdoskonalena dostupnist za dopomogoyu Accessibility Toolkit povnij perehid na Unicode vikoristovuyuchi ryadki UTF 8 ta gnuchkishe API Mizh tim GTK 2 vtratila sumisnist z GTK 1 i programisti povinni perepisati programne zabezpechennya pid novu versiyu biblioteki Pochinayuchi z versiyi 2 8 GTK 2 vimagaye biblioteku Cairo dlya vidobrazhennya vektornoyi grafiki u GTK 2 GTK 3 10 lyutogo 2011 vidbuvsya reliz GTK 3 0 0 Robota nad GTK 3 pochinalasya yak velika chistka i trivala protyagom kilkoh rokiv Novovvedennya Vidobrazhennyam vsogo teper zajmayetsya Cairo GDK bilshe ne ye obgortkoyu zastarilih X11 drawing API Ce dozvolilo vidaliti kilka X11 oriyentovanih koncepcij GCs colormaps pixmaps Bilshu chastinu roboti zrobiv Benjamin Otte z RedHat Pidtrimka suchasnih pristroyiv vvedennya Ranishe cim nehtuvali malo z osnovnih rozrobnikiv koristuyutsya ekzotichnimi pristroyami vvedennya Z prihodom GTK 3 z yavilasya pidtrimka dekilkoh pokazhchikiv klaviatur tosho Novi API dlya tem zi znajomim sintaksisom CSS dlya nalashtuvannya i inshi vdoskonalennya napriklad animovana zmina staniv Gnuchkishe keruvannya geometriyeyu Pidtrimka kilkoh bekendiv Z GTK 2 x potribno bulo perezbirati programi dlya yihnoyi roboti z riznimi bekendami GDK bo voni buli realizovani okremimi bibliotekami U GTK 3 yih mozhna vbuduvati v odnu biblioteku i vibirati pid chas vikonannya Ce polegshit perehid z X11 na Wayland abo z Quartz na X11 Legka pidtrimka zastosunkiv Z integraciyeyu D Bus v GIO stalo mozhlivim dodati klas yakij obroblyaye veliku kilkist aspektiv integraciyi platformi stvorennya programnogo zabezpechennya takih yak vidstezhennya vidkritih vikon zabezpechennya unikalnosti eksport dij tosho Ce vse v stadiyi rozrobki i bude rozshireno v majbutnomu Istoriya vipuskiv Linijka vipuskiv Ostannya Minor versiya Data vihodu Osnovni zmini 1 0 x 1 0 1 2 x 25 lipnya 2020 u Wayback Machine 1 2 10 2 kvitnya 2001 2 0 x 27 veresnya 2020 u Wayback Machine 2 0 9 20 listopada 2002 2 2 x 27 veresnya 2020 u Wayback Machine 2 2 4 4 veresnya 2003 2 4 x 27 veresnya 2020 u Wayback Machine 2 4 14 3 grudnya 2004 2 6 x 28 zhovtnya 2020 u Wayback Machine 2 6 10 18 serpnya 2005 2 8 x 28 zhovtnya 2020 u Wayback Machine 2 8 20 2 lipnya 2006 Integraciya Cairo 2 10 x 22 veresnya 2020 u Wayback Machine 2 10 14 16 lipnya 2007 GtkPrint pidtrimka druku 2 12 x 28 veresnya 2020 u Wayback Machine 2 12 11 12 bereznya 2008 GtkBuilder zamina libglade 2 14 x 19 zhovtnya 2020 u Wayback Machine 2 14 3 24 veresnya 2008 Perelik novinok 15 lyutogo 2011 u Wayback Machine 3 0 10 lyutogo 2011 Perelik novinok 10 veresnya 2008 u Wayback Machine 3 2 26 veresnya 2011 Perelik novinok 28 bereznya 2012 u Wayback Machine 3 4 26 bereznya 2012 Perelik novinok 10 veresnya 2008 u Wayback Machine 3 6 3 8 25 bereznya 2013 3 10 23 veresnya 2013 3 12 25 bereznya 2014 mozhlivist roboti poverh displejnogo servera Wayland 3 14 22 veresnya 2014 pidtrimka multitach dovedena do praktichnogo zastosuvannya integrovanij vlasnij interaktivnij znevadzhuvach GtkInspector 3 16 22 bereznya 2015 mozhlivist risuvati cherez OpenGL bez zovnishnih nadbudov 3 18 22 veresnya 2015 3 20 21 bereznya 2016Priklad Privit svite Klasichnij priklad programi Privit svite angl Hello world na movi S z vikoristannyam GTK include lt config h gt include lt gtk gtk h gt Zapuskayemo golovnij cikl programi static void on destroy GtkWidget widget gpointer data gtk main quit int main int argc char argv GtkWidget window GtkWidget label gtk init amp argc amp argv stvoryuyemo golovne vikno window gtk window new GTK WINDOW TOPLEVEL zadayemo granicyu dlya vikna rozmirom 20 pikseliv gtk container set border width GTK CONTAINER window 20 zadayemo viknu zagolovok gtk window set title GTK WINDOW window PACKAGE VERSION zadayemo rozmiri vikna gtk window set default size GTK WINDOW window 200 50 Pid yednuyemo podiyu destroy golovnogo vikna do nashoyi funkciyi on destroy g signal connect G OBJECT window destroy G CALLBACK on destroy NULL stvoryuyemo mitku Privit svite label gtk label new Hello World i dodayemo yiyi do golovnogo vikna gtk container add GTK CONTAINER window label vidobraziti usi vidzheti gtk widget show all window zapuskayemo golovnij cikl gtk main return 0 Majbutnya rozrobkaProject Ridley maye namir konsoliduvati rozrobku nizki bibliotek kotri ye chastinoyu GTK sered nih libgnome libgnomeui libgnomeprint22 libgnomeprintui22 libglade libgnomecanvas libegg libeel ta gtkglext Div takozhwxWidgets Qt Motif FLTK FOX toolkitVinoskihttp directory fsf org wiki gtk angl Arhiv originalu za 27 serpnya 2008 Procitovano 16 serpnya 2008 Language bindings angl originalu za 2 kvitnya 2011 Arhiv originalu za 4 bereznya 2016 Procitovano 6 travnya 2022 Arhiv originalu za 1 bereznya 2011 Procitovano 17 serpnya 2008 PosilannyaDomashnya storinka GTK Foundations of GTK Development 14 veresnya 2008 u Wayback Machine kniga dlya rozrobnikiv Ukrayinski resursi