Відмінності між версіями «GTK»

81 байт додано ,  3 роки тому
м
{{Бібліотеки віджетів}}
м ({{Бібліотеки віджетів}})
| latest_release_date = {{release date|2016|3|21}}
| latest_preview_version =
| latest_preview_date =
| programming language = [[C (мова програмування)|C]]
| operating_system = [[Крос-платформовий]]
| website = {{url|http://www.gtk.org}}
}}
'''GTK+''' (від ''The '''G'''IMP '''T'''ool'''K'''it'')  — кросплатформовий набір [[інструмент]]ів для створення [[Графічний інтерфейс користувача|графічних інтерфейсів користувача]]. Разом із [[Qt]] є одним із найпопулярніших інструментів для [[X Window System]].
 
GTK+ було розроблено для [[GIMP|GNU Image Manipulation Program]] (GIMP), [[растрова графіка|растрового]] графічного редактора, у [[1997]] році Спенсером Кімбалом (Spencer Kimball) та Петером Матісом (Peter Mattis), членами [[eXperimental Computing Facility]] (XCF) в [[Університет Каліфорнії, Берклі|UC Berkeley]]. GTK+ розвивається в рамках [[Проект GNU|проекту GNU]] і є [[вільне програмне забезпечення|вільним програмним забезпеченням]]. [[сирцевий код|Код]] GTK+ розповсюджується під ліцензією [[LGPL]], що дозволяє використовувати GTK+ не тільки для розробки вільного ПЗ, а й для створення власницьких програм, не вимагаючи від виробників закритих програм виплати роялті або купівлі спеціальної ліцензії.
 
До складу тулкіта входить повний набір [[віджет]]ів, що дозволяють використовувати GTK+ для проектів різного рівня і розміру. GTK+ спеціально спроектований для підтримки не тільки C/[[C++]], але й інших мов програмування, таких як [[Perl]] і [[Python]], що в поєднанні з використанням візуального будівника інтерфейсу [[Glade]] дозволяє істотно спростити розробку і скоротити час написання графічних інтерфейсів. Організація виводу в GTK+ абстрагована від типу віконних систем, наприклад, поставляється бекенд, що забезпечує можливість роботи поверх дисплейного сервера [[Wayland]], а також бекенд, котрий дозволяє здійснювати виведення бібліотеки GTK+ у вікні [[веб-браузер]]а (запустивши GTK-застосунок на одній машині, можна відкрити браузер на іншій машині і отримати доступ до інтерфейсу цієї програми).
 
== Мови програмування ==
GTK+ написана на [[С (мова програмування)|мові програмування С]], і використовує систему об'єктів [[GObject]], що робить її [[Об’єктноОб'єктно-орієнтоване програмування|об'єктно-орієнтованою]]. Платформа [[GNOME]] забезпечує біндінґи для наступних мов:
* [[C++]] ([[gtkmm]])
* [[Фортран|Fortran]] (gtk-fortran)
* [[Perl]] ([[Gtk2-perl]])
* [[Ruby]] ([[Ruby-gnome2|ruby-gtk2]])
* [[Python]] ([[PyGTK]])
* [[Java]] ([[java-gnome]]) (не доступна Microsoft Windows)
* [[C Sharp|C#]] ([[Gtk Sharp|Gtk#]])
* [[PHP]] ([[PHP-GTK]])
 
Іншими розробниками були написані біндінґи для багатьох інших [[мова програмування|мов програмування]] ([[Ada]], [[D (мова програмування)|D]], [[Haskell]], [[Ocaml]], [[Pascal]], [[Pike]], [[Tcl]], [[Euphoria]] та усіх мов [[.NET Framework|.NET]]). [http://www.gtk-server.org/ GTK-server] забезпечує GTK+ інтерфейсом [[Взаємодія між процесами|міжпроцесорної взаємодії]], що дозволяє використовувати його у будь якій мові програмування, котра підтримує механізм [[введення-виведення]] (I/O), включно із сценаріями [[shell]]. Повний перелік біндінґів можна знайти на веб-сторінці [http://www.gtk.org/language-bindings.html GTK+  — Language bindings].
 
На відміну від [[Qt]], GTK+ не базується на інших [[Xt]]-подібних наборах віджетів. Це надає їй гнучкості і дозволяє використовувати GTK+ на інших системах. Однак, без цієї залежності, GTK+ немає доступу до бази ресурсів [[X Window System]], традиційного способу налаштування програмного забезпечення [[X11]].
 
== Випуски ==
 
=== GTK+ 2 ===
GTK+ 2 переважає своїми можливостями GTK+ 1. Серед нових можливостей вдосконалене відображення тексту за допомогою Pango, нова система жупанів, вдосконалена доступність за допомогою Accessibility Toolkit, повний перехід на [[Unicode]] використовуючи рядки [[UTF-8]] та гнучкіше [[API]]. Між тим, GTK+ 2 втратила сумісність з GTK+ 1, і програмісти повинні переписати програмне забезпечення під нову версію бібліотеки.
[[10 лютого]] [[2011]] відбувся реліз GTK+ 3.0.0<ref>[http://www.linux.org.ru/news/gnome/5895164?lastmod=1297377695708|Вышел GTK+ 3.0]</ref>. Робота над 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 стало можливим додати клас, який обробляє велику кількість аспектів інтеграції платформи створення програмного забезпечення, таких як відстеження відкритих вікон, забезпечення унікальності, експорт дій тощо. Це все в стадії розробки і буде розширено в майбутньому.
 
|style="white-space: nowrap;"| 2.10.14
|style="white-space: nowrap;"| [[16 липня]] [[2007]]
|style="white-space: nowrap;"| GtkPrint &nbsp;— підтримка друку
|-
![http://ftp.gnome.org/pub/gnome/sources/gtk+/2.12/ 2.12.x]
|style="white-space: nowrap;"| 2.12.11
|style="white-space: nowrap;"| [[12 березня]] [[2008]]
|style="white-space: nowrap;"| GtkBuilder &nbsp;— заміна [[libglade]]
|-
![http://ftp.gnome.org/pub/gnome/sources/gtk+/2.14/ 2.14.x]
|-
! 3.0
|style="white-space: nowrap;"|
|style="white-space: nowrap;"| [[10 лютого]] [[2011]]
|style="white-space: nowrap;"| [http://mail.gnome.org/archives/gtk-devel-list/2008-September/msg00024.html Перелік новинок]
|-
! 3.2
|style="white-space: nowrap;"|
|style="white-space: nowrap;"| 26 вересня 2011
|style="white-space: nowrap;"| [https://mail.gnome.org/archives/gtk-list/2012-March/msg00045.html Перелік новинок]
|-
! 3.4
|style="white-space: nowrap;"|
|style="white-space: nowrap;"| 26 березня 2012
|style="white-space: nowrap;"| [http://mail.gnome.org/archives/gtk-devel-list/2008-September/msg00024.html Перелік новинок]
|-
! 3.6
|style="white-space: nowrap;"|
|style="white-space: nowrap;"|
|style="white-space: nowrap;"|
|-
! 3.8
|style="white-space: nowrap;"|
|style="white-space: nowrap;"| 25 березня 2013
|style="white-space: nowrap;"|
|-
! 3.10
|style="white-space: nowrap;"|
|style="white-space: nowrap;"| 23 вересня 2013
|style="white-space: nowrap;"|
|-
! 3.12
|style="white-space: nowrap;"|
|style="white-space: nowrap;"| 25 березня 2014
|style="white-space: nowrap;"| можливість роботи поверх дисплейного сервера [[Wayland]]
|-
! 3.14
|style="white-space: nowrap;"|
|style="white-space: nowrap;"| 22 вересня 2014
|style="white-space: nowrap;"| підтримка [[мультитач]] доведена до практичного застосування; інтегрований власний інтерактивний [[зневаджувач]] [[GtkInspector]]
|-
! 3.16
|style="white-space: nowrap;"|
|style="white-space: nowrap;"| 22 березня 2015
|style="white-space: nowrap;"| можливість рисувати через [[OpenGL]] без зовнішніх надбудов
|-
! 3.18
|style="white-space: nowrap;"|
|style="white-space: nowrap;"| 22 вересня 2015
|style="white-space: nowrap;"|
|-
! 3.20
|style="white-space: nowrap;"|
|style="white-space: nowrap;"| 21 березня 2016
|style="white-space: nowrap;"|
|}
 
 
== Майбутня розробка ==
''Project Ridley'' має намір консолідувати розробку низки бібліотек, котрі є частиною GTK+, серед них: libgnome, libgnomeui, libgnomeprint22, libgnomeprintui22, libglade, libgnomecanvas, libegg, libeel та gtkglext.<ref>[http://live.gnome.org/ProjectRidley ProjectRidley &nbsp;— GNOME Live!<!-- Bot generated title -->]</ref>
 
== Див. також ==
* [http://docs.linux.org.ua/GTK Посібник по програмуванню на GTK+]
* [http://buffer-overflow.org.ua/category/gtk/ Уроки по програмуванню на GTK+]
 
{{Бібліотеки віджетів}}
 
[[Категорія:GTK]]