GTK: відмінності між версіями
[неперевірена версія] | [неперевірена версія] |
мНемає опису редагування |
м заміна застарілого тегу source |
||
Рядок 185: | Рядок 185: | ||
Класичний приклад програми «[[Hello world!|Привіт, світе!]]» ({{lang-en|«Hello, world!»}}) на мові [[C (мова програмування)|С]] з використанням GTK+: |
Класичний приклад програми «[[Hello world!|Привіт, світе!]]» ({{lang-en|«Hello, world!»}}) на мові [[C (мова програмування)|С]] з використанням GTK+: |
||
< |
<syntaxhighlight lang="c"> |
||
#include <config.h> |
#include <config.h> |
||
#include <gtk/gtk.h> |
#include <gtk/gtk.h> |
||
Рядок 235: | Рядок 235: | ||
return 0; |
return 0; |
||
} |
} |
||
</syntaxhighlight> |
|||
</source> |
|||
== Майбутня розробка == |
== Майбутня розробка == |
Версія за 12:57, 12 травня 2020
Тип | Widget toolkit |
---|---|
Розробники | GNOME Foundation |
Стабільний випуск | 3.20 (21 березня 2016 ) |
Платформа | кросплатформова програма |
Операційна система | Крос-платформовий |
Мова програмування | C, CSS[2] |
Ліцензія | GNU Lesser General Public License |
Онлайн-документація | docs.gtk.org |
Репозиторій | gitlab.gnome.org/GNOME/gtk |
Вебсайт | www.gtk.org |
GTK+ (від The GIMP ToolKit) — кросплатформовий набір інструментів для створення графічних інтерфейсів користувача. Разом із Qt є одним із найпопулярніших інструментів для 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.
Мови програмування
GTK+ написана на мові програмування С, і використовує систему об'єктів GObject, що робить її об'єктно-орієнтованою. Платформа GNOME забезпечує міжмовне зв'язування для наступних мов:
- C++ (gtkmm)
- Fortran (gtk-fortran)
- Perl (Gtk2-perl)
- Ruby (ruby-gtk2)
- Python (PyGTK)
- Java (java-gnome) (не доступна Microsoft Windows)
- C# (Gtk#)
- PHP (PHP-GTK)
Іншими розробниками були написані біндінґи для багатьох інших мов програмування (Ada, D, Haskell, Ocaml, Pascal, Pike, Tcl, Euphoria[en] та усіх мов .NET). GTK server[3] забезпечує GTK+ інтерфейсом міжпроцесорної взаємодії, що дозволяє використовувати його у будь-якій мові програмування, котра підтримує механізм введення-виведення (I/O), включно із сценаріями shell. Повний перелік біндінґів можна знайти на сайті проекту.[4].
На відміну від 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[5]. Робота над 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 | 1.2.10 | 2 квітня 2001 | ? |
2.0.x | 2.0.9 | 20 листопада 2002 | ? |
2.2.x | 2.2.4 | 4 вересня 2003 | ? |
2.4.x | 2.4.14 | 3 грудня 2004 | ? |
2.6.x | 2.6.10 | 18 серпня 2005 | ? |
2.8.x | 2.8.20 | 2 липня 2006 | Інтеграція Cairo |
2.10.x | 2.10.14 | 16 липня 2007 | GtkPrint — підтримка друку |
2.12.x | 2.12.11 | 12 березня 2008 | GtkBuilder — заміна libglade |
2.14.x | 2.14.3 | 24 вересня 2008 | Перелік новинок |
3.0 | 10 лютого 2011 | Перелік новинок | |
3.2 | 26 вересня 2011 | Перелік новинок | |
3.4 | 26 березня 2012 | Перелік новинок | |
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.[6]
Див. також
Виноски
- ↑ http://directory.fsf.org/wiki/gtk+
- ↑ The GTK+ Open Source Project on Open Hub: Languages Page
- ↑ GTK-server (англ.).
- ↑ Language bindings (англ.). Архів оригіналу за 2 квітня 2011.
- ↑ GTK+ 3.0
- ↑ ProjectRidley — GNOME Live!. Архів оригіналу за 1 березень 2011. Процитовано 17 серпень 2008.
Посилання
- Домашня сторінка GTK+
- GTK+ Planet
- Foundations of GTK+ Development, книга для розробників
- Curses надбудова для GTK+
- GTK+ dev-cpp пакунок і runtime для Windows
Українські ресурси
|