GTK (biblioteka programów)

GTK

Logo GTK
Wersja demonstracyjna Gtk3
gtk3-demo pokazuje kontrolki
Podstawowe dane

deweloper Zespół GTK
Rok wydania 1998
Aktualna  wersja 4.4
( 23 sierpnia 2021 )
system operacyjny Unix , Linux , macOS (beta), Windows
język programowania C.
Kategoria Zestaw narzędzi GUI
Licencja LGPL ( wolne oprogramowanie )
niemieckojęzyczny tak
www.gtk.org
Image
Fabryka widżetów GTK3

GTK (dawniej GTK + , GIMP Toolkit ) to darmowy zestaw narzędzi GUI na licencji LGPL . GTK zawiera wiele kontrolek , których można używać do tworzenia graficznych interfejsów użytkownika (GUI) dla oprogramowania.

Biblioteka została początkowo opracowana przez Petera Mattisa, Spencera Kimballa i Josha MacDonalda w celu stworzenia interfejsu użytkownika dla programu graficznego GIMP oprócz Motif . Tymczasem GTK jest używany przez środowiska graficzne Gnome , Xfce , LXDE , Cinnamon , Pantheon i Budgie , a także przez wiele innych aplikacji i dlatego jest, obok Qt , najbardziej udanym zestawem narzędzi GUI dla systemu X Window .

Historia i rozwój

Image
Stare logo

GTK jest napisany w języku programowania C. Pierwsza wersja GTK+ pojawiła się w kwietniu 1998 roku. GTK+ zawierała szereg procedur pomocniczych do rozwiązywania podstawowych zadań programistycznych, takich jak przechowywanie różnych danych. Są one bardzo czasochłonne dla programisty, zwłaszcza przy wielokrotnym opracowywaniu programów. Pierwsze wersje GTK+ zawierały struktury danych dla list połączonych , drzew binarnych lub „rosnących” ciągów. Dodatkowo opracowano system z GTK+ do programowania obiektowego w C. Narzędzia te okazały się również przydatne w programach bez graficznego interfejsu użytkownika i dlatego zostały później przeniesione do oddzielnej biblioteki, biblioteki funkcji C GLib . System obiektowy został zlecony do biblioteki GObject , a metody rysowania niskopoziomowego do biblioteki GDK (GTK + Drawing Kit). Ta ostatnia umożliwia identyczne działanie GTK+ na różnych platformach, w tym Windows , X Window System i macOS .

GTK + 2

Wersja GTK+2 otrzymała nowe, ulepszone funkcje renderowania tekstu za pomocą biblioteki Pango , nowy silnik motywów , bardziej elastyczne API oraz nowy typ biblioteki ( ATK ) w celu poprawy dostępności zestawu narzędzi dla osób niepełnosprawnych, za pomocą oprogramowania Reading można zaadresować narzędzia powiększające i alternatywne urządzenia wejściowe. GTK + 2 nie jest kompatybilny z GTK + 1, więc istniejące aplikacje musiały zostać przeniesione.

Od wersji 2.8 GTK+ korzysta z biblioteki wektorowej Cairo , która wykorzystuje akcelerację sprzętową do renderowania, gdy tylko jest to możliwe . GTK + 2.24.33 to ostatnia wersja serii 2.x.

GTK + 3

Wersja 3.0 została wydana 10 lutego 2011 r. Wiele funkcji sklasyfikowanych jako przestarzałe zostało usuniętych, a istniejące interfejsy zostały ulepszone. GTK + 3 nie jest wstecznie kompatybilny z GTK + 2.x. Jednak biblioteki obu wersji mogą być instalowane równolegle.

GTK + 3.0 zawiera między innymi nowy interfejs do rysowania widżetów, który jest teraz całkowicie oparty na Cairo , silnik motywów oparty na CSS , który umożliwia również animowane przejścia między stanami, ulepszone opcje układu, nowy widżet przełącznika suwaka , klasę aplikacji , obsługa wielu urządzeń wskazujących (wielopunktowych) i ikon symbolicznych, które mogą zmieniać kolor w zależności od stanu. Struktury wewnętrzne zostały oddzielone od interfejsu publicznego i ukryte, dzięki czemu w przyszłości łatwiej będzie wprowadzać zmiany bez konieczności psucia interfejsu. Ponadto kilka backendów GDK jest obsługiwanych jednocześnie w tej samej bibliotece. Do tej pory potrzebne były do ​​tego różne biblioteki.

GTK + 3.2 wprowadziło dwa nowe backendy: jeden dla serwera wyświetlania Wayland i backend HTML5 o nazwie Broadway , dzięki któremu aplikacje GTK + mogą być obsługiwane zdalnie w przeglądarce za pośrednictwem sieci.

GTK + 3.4 obsługuje wielodotykowe i płynne przewijanie, a także jest dostępny dla systemu Windows.

GTK + 3.6 obsługuje animację CSS i rozmywa cienie. Wersja 3.6.4 to ostatnia oficjalna wersja dla 32-bitowego i 64-bitowego systemu Windows.

GTK + 3.8 natywnie wspiera Waylanda w ważnych częściach.

GTK + 3.10 eksperymentalnie obsługuje Waylanda i poprawia wyświetlanie monitorów o wysokiej rozdzielczości.

GTK + 3.12 wprowadza popover. Te komiczne dymki mogą służyć jako pomoc. Poprawiono obsługę Waylanda.

GTK + 3.14 obsługuje gesty wielodotykowe.

GTK + 3.16 obsługuje renderowanie okien przez OpenGL . Nowy element kontrolny GtkGLArea umożliwił również integrację obiektów 3D bezpośrednio z interfejsami programu.

GTK + 3.18 oficjalnie wspiera Waylanda, następcę X Window System, jako podstawę Gnome 3.18.

GTK + 3.20 integruje sprawdzanie pisowni z gspell i poprawia motywy CSS.

GTK + 3.22 to ostatnia stabilna wersja GTK + 3 i będzie utrzymywana jako wersja LTS przez trzy lata. Głównymi cechami tej wersji są nowe portale Flatpak ułatwiające instalację oprogramowania.

GTK + 3.24 zostało ogłoszone w czerwcu 2018 na jesień 2018 jako ostatnia wersja GTK + 3, ponieważ GTK 4.0 zostało opóźnione. Obecnie w 2021 roku jest tu 3.24.28. Wersja 3.24 jest teraz również utrzymywana jako długoterminowa wersja LTS.

GTK 4.0 jest przygotowywany z niestabilną serią 3.9x. W marcu 2017 w wersji 3.90 dodano zestaw Scene Graph Kit (GSK). Implementuje wykres sceny i dba o syntezę obrazu. W lutym 2019 ogłoszono, że GTK 4.0 usunie znak plus („+”) z nazwy.

GTK 4

W GTK 4 Wayland i Vulkan są coraz lepiej obsługiwane . Wprowadzono również większą dostępność. Gnome 40 to skoordynowany odpowiednik po stronie Linuksa. Fedora 34 będzie pierwszym głównym wariantem Linuksa, który GTK 4 z Gnome 40 wprowadzi w kwietniu 2021 roku.

GTK 4.0 zostało oficjalnie uruchomione 16 grudnia 2020 roku. Najważniejsze to ulepszenia w rendererze OpenGL i nowy renderer Vulkan z szybszą obsługą GPU, a także lepszą obsługą macOS i Windows między innymi.

GTK 4.2 zostało wprowadzone 30 marca 2021 r. z nowym rendererem OpenGL NGL jako domyślnym.

System operacyjny Mac

GTK może być używany w systemie macOS za pośrednictwem backendu Quartz , portu systemu X Window . Dzięki GTK 4.0 znacznie poprawiono obsługę systemu macOS.

Okna

  • Po GTK 2.24.10 i 3.6.4 rozwój Windowsa z instalatorem w Gnome został przerwany. Zaleca się zainstalowanie systemu pakietów MSYS2 z Gnome w systemie Windows. MSYS2 obsługuje już GTK 4.
  • GTK 2.24.10 i 3.6.4 są nadal dostępne w sieci, ale mają więcej błędów niż obecne wersje w Linuksie.
  • W 64-bitowym systemie Windows (stan na styczeń 2021 r.) 2.24.33 (obecnie jak Linux) i 3.24.24 (obecnie jak Linux) są teraz dostępne dzięki pracy Toma Schoonjansa.
  • Wraz z aktualizacją Windows 10 Fall Creators Update , GTK 3 jest teraz również dostępne w WSL. Instrukcje dotyczące instalowania programów z systemem Windows są dostępne w Społeczności GTK. GTK 4 jest dostępny dla wersji 20H2 i 21H1 w WSL, w zależności od wybranej dystrybucji Linuksa.

Przykład programowania

Klasycznym sposobem programowania za pomocą GTK jest najpierw zdefiniowanie właściwości użytych elementów graficznych, a następnie pogrupowanie ich i powiązanie z określonymi funkcjami obsługi zdarzeń (jednym możliwym zdarzeniem byłoby na przykład kliknięcie przycisku ). Istnieją jednak również narzędzia do projektowania graficznego powierzchni GTK, takie jak Glade czy Stetic zawarte w MonoDevelop , które mogą zaoszczędzić pierwsze dwa kroki, rozszerzyć GTK o możliwości prototypowania i umożliwić wprowadzanie zmian na powierzchni programu bez Konieczność zmiany kodu źródłowego oprogramowania.

Image
Prezentacja tego programu

Typowy program hello world, który wyświetla okno po prawej stronie, mógłby wyglądać mniej więcej tak:

#include <gtk/gtk.h>

/* Rückruffunktion - aufgerufen, wenn die Schaltfläche geklickt wurde */
void on_button_clicked (GtkButton *button, gpointer data)
{
  g_print ("Knopf '%s' geklickt!\n", gtk_button_get_label (button));
  gtk_main_quit (); /* Beendet das Programm */
}

int main (int argc, char *argv[])
{
  GtkWidget *window;
  GtkWidget *button;

  /* GTK+ initialisieren */
  gtk_init (&argc, &argv);

  /* Hauptfenster erstellen, Titel setzen, Rahmenabstand setzen */
  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_title (GTK_WINDOW (window), "Hallo Welt!");
  gtk_container_set_border_width (GTK_CONTAINER (window), 10);

  /* Schaltfläche erstellen und dem Fenster hinzufügen */
  button = gtk_button_new_with_label ("Hallo Wikipedia!");
  gtk_container_add (GTK_CONTAINER (window), button);

  /* Signale mit Rückruffunktionen verbinden */
  g_signal_connect (window, "destroy", G_CALLBACK (gtk_main_quit), NULL);
  g_signal_connect (button, "clicked", G_CALLBACK (on_button_clicked), NULL);

  /* Fenster und all seine Unterelemente anzeigen */
  gtk_widget_show_all (window);

  /* Haupt-Ereignisschleife starten */
  gtk_main ();

  return 0;
}


Najpierw w głównej procedurze tworzone jest nowe okno, a jego tytuł i odległość ramki od wewnętrznych elementów są ustawiane. Następnie tworzony jest przycisk z odpowiednią etykietą i wstawiany do okna. Okno jest zawsze również kontenerem , czyli elementem, który może zawierać inne elementy sterujące ( widżety ).

Który następnie niszczy - signal , który dla widżetu okna. B. generowane po kliknięciu przycisku "Zamknij", połączonego z funkcją GTK gtk_main_quit , która kończy działanie programu. Utworzony wcześniej przycisk jest również połączony z funkcją zwrotną o nazwie on_button_clicked , która została zaimplementowana powyżej. Aby połączyć sygnały z funkcjami zwrotnymi, bezpośrednio używane są funkcje GLib , których przedrostek nazwy to g_ zamiast gtk_ .

Ponieważ wszystkie kontrolki są początkowo niewidoczne, muszą być widoczne, pojedynczo lub wszystkie razem, wywołując gtk_widget_show_all . Po wywołaniu gtk_main uruchamiana jest główna pętla zdarzeń , która czeka na zdarzenia, a następnie rozdziela je na odpowiednie sygnały.

Funkcja, która jest wykonywana po kliknięciu przycisku, pokazuje przykładowo, w jaki sposób można uzyskać dostęp do wywołującego elementu sterującego, odczytując etykietę przycisku i wyświetlając ją na standardowym wyjściu. Program zostaje wtedy zakończony. Drugi parametr dane funkcji zwrotnej może zawierać dowolne dane, które zostały określone podczas nawiązywania połączenia. Jednak w tym przykładzie jest tam przekazywana tylko wartość NULL , czyli nic.

Przykładowy program jest gcc gtkhello.c -o gtkhello `pkg-config gtk+-3.0 --cflags --libs`kompilowany po wywołaniu z folderu, w którym znajduje się plik.

Połączenia z innymi językami programowania

Ponieważ GTK jest czystą biblioteką C, można ją łatwo połączyć z wieloma innymi językami programowania. W przypadku języków programowania obiektowego GObjects nie są używane , obiekty GTK mogą być tam zwykle używane jak natywne obiekty języka programowania. Język programowania Vala wykorzystuje GObject bezpośrednio jako system obiektowy i dlatego nie wymaga biblioteki wykonawczej do połączenia językowego.

Image
język programowania Nazwa połączenia Przykłady programów
C++ gtkmm Inkscape , Solang, GParted , GNote
pyton PyGTK (do GTK 2.24.0) OpenShot, gPodder, Ubuntu Tweak
PyGObject (z GTK 3.0.0) Pitivi, Lollypop, GNOME Music, Meld
C# ( mono ) GTK # Tomboy , F-Spot , Banshee , Pinta , MonoDevelop , gbrainy
Wala - Shotwell , Geary, Corebird, Elementary OS , libunity
JavaScript Gjs Gnome Shell , Mapy GNOME, Polari
Dostępne, ale rzadziej używane:
Ada GtkAda
Wspólne seplenienie cl-gtk2
D. gtkD Tilix
FreeBASIC PolanaToBac Data2App, GTK + tytoń
Fortran gtk-fortran
Udać się Go-GTK
Haskell Gtk2Hs
Jawa java-gnom Podział GNOME
Julia Gtk.jl
Cel C CoreGTK
OCaml EtykietaGTK
Pascal LCL Łazarz
Perła gtk2-perl slimrat, odot, migawka
PHP PHP-GTK Pakiet testowy Phoronix
Rubin Ruby-GNOME2 Aleksandria
Rdza Gtk-rs menedżer systemu
Tcl Gnokl

Styl graficzny

Wygląd zestawu narzędzi można w dużej mierze konfigurować przez użytkownika. Do wyboru są różne motywy .

Przejrzysty wygląd

Image
Przykład dla Clearlooks 2.20

Od 2005 do 2014 roku GTK używało Clearlooks jako motywu.

Adwaita

Image
Przykład dla Adwaita

Adwaita to nowy standardowy temat GTK od połowy 2014 roku .

Środowiska korzystające z GTK

Środowiska graficzne Gnome , Cinnamon , MATE , Xfce , LXDE , Pantheon z Elementary OS i pulpit ROX same w sobie są oparte na GTK, co oznacza, że ​​ich menedżery okien używają GTK podczas rysowania elementów okna, a powiązane programy zostały opracowane za pomocą GTK.

GTK nie ogranicza się tylko do tych komputerów; każdy program GTK można uruchomić w dowolnym innym środowisku graficznym, takim jak KDE lub CDE , o ile biblioteki GTK są zainstalowane w systemie. W celu usprawnienia integracji optycznej w desktopach opartych na Qt (np. KDE) istnieją m.in.: gtk-qt. GTK jest również dostępne dla systemów Windows i macOS (native / X11), umożliwiając pisanie aplikacji, które można stosunkowo łatwo przenieść między Unix, Windows i macOS .

Zobacz też

literatura

linki internetowe

Wikibooks: GTK with Builder  - materiały do ​​nauki i nauczania

Indywidualne dowody

  1. ^ Projekt GTK+: Zespół. Źródło 16 października 2011 .
  2. a b Indeks /Public/gimp/gtk/v1.0. Źródło 11 sierpnia 2014 .
  3. Michael Larabel: Wydano GTK 4.4 z ciągłymi ulepszeniami NGL, domyślnie inspektor . 23 sierpnia 2021 r.
  4. Projekt Open Source gtk na stronie Open Hub: Języki . W: Otwórz centrum . (dostęp 18 lipca 2018 r.).
  5. ^ B Emmanuele Bassi: zmiany nazwy do projektu "GTK". W: Lista mailingowa Gnome . 6 lutego 2019, dostęp 7 lutego 2019 .
  6. https://ftp.fau.de/gnome/sources/gtk+/2.24/gtk+-2.24.33.news
  7. Wydano GTK + 3.0.0. Źródło 16 października 2011 .
  8. Wiele zaplecza dla GTK +. Źródło 16 października 2011 .
  9. Demonstracja backendu HTML5 Broadway. Źródło 16 października 2011 .
  10. https://www.heise.de/newsticker/meldung/GTK-3-4-mit-Multitouch-und-Windows-Unterstuetzung-1484971.html
  11. https://www.heise.de/newsticker/meldung/Neue-Versionen-von-GTK-GLib-und-Clutter-1716414.html
  12. heise online: Gtk + 3.8 zapewnia wsparcie dla Waylanda. Źródło 4 grudnia 2020 .
  13. heise online: Gtk + 3.10 z ulepszoną obsługą Wayland. Źródło 4 grudnia 2020 .
  14. Thorsten Leemhuis: Oglądane: Gnom 3.12. Źródło 4 grudnia 2020 .
  15. Dr Oliver Diedrich: Linux. Źródło 4 grudnia 2020 .
  16. heise online: GUADEC: Wsparcie Wayland dla Gnome. Źródło 4 grudnia 2020 .
  17. Informacje o wydaniu GNOME 3.16. Źródło 4 grudnia 2020 .
  18. heise online: Pulpit Linux: Nowy Gnome wyświetla komunikaty na górze. Źródło 4 grudnia 2020 .
  19. heise online: Linux desktop Gnome 3.18 wydany z obsługą Dysku Google. Źródło 4 grudnia 2020 .
  20. heise online: Zestaw narzędzi GUI GTK + 3.20 poprawia motywy CSS. Źródło 4 grudnia 2020 .
  21. heise online: zestaw narzędzi GUI GTK + 3.22 przynosi portale Flatpak. Źródło 4 grudnia 2020 .
  22. https://www.phoronix.com/scan.php?page=news_item&px=GTK-3.24-Coming-This-Fall
  23. https://www.heise.de/news/Gnome-Toolkit-fuer-GUI-GTK-4-0-erscheint-nach-4-Jahren-und-ist-grunderneuert-4990565.html
  24. https://www.computerbase.de/2021-03/gnome-40-release-candidate-erschienen/
  25. https://www.phoronix.com/scan.php?page=news_item&px=GTK-4.0-Wydanie
  26. https://www.phoronix.com/scan.php?page=news_item&px=GTK-4.2-Wydany
  27. Projekty / GTK / OSX - GNOME Wiki! Źródło 4 grudnia 2020 .
  28. https://www.gtk.org/download/macos.php
  29. https://www.gtk.org/download/windows.php
  30. https://packages.msys2.org/base/mingw-w64-gtk4
  31. GTK + dla środowiska wykonawczego Windows. Dostęp 4 grudnia 2020 r .
  32. ^ GTK+. Źródło 4 grudnia 2020 .
  33. Tom Schoonjans: tschoonj / GTK-for-Windows-Runtime-Environment-Installer. 2 grudnia 2020, dostęp 4 grudnia 2020 .
  34. Podsystem Windows dla Linux: Instalacja WSL i konfiguracja Gnome pod Windows 10. Pobrano 4 grudnia 2020 .
  35. a b [OGŁOSZENIE] PyGTK 2.24.0. 8 kwietnia 2011, udostępniono 15 października 2011 .
  36. cl-gtk2 w CLiki. Źródło 1 kwietnia 2015 .
  37. gtkD. Źródło 15 października 2011 .
  38. GladeToBac. Źródło 15 października 2011 .
  39. Data2App. Źródło 15 października 2011 .
  40. GTK + tytoń. Źródło 15 października 2011 .
  41. gtk-Fortran. Źródło 15 października 2011 .
  42. ^ Go-GTK. Źródło 6 kwietnia 2012 .
  43. CoreGTK. Dostęp 27 marca 2020 r .
  44. gtk-perl. Źródło 1 lipca 2017 .
  45. Gtk-rs. Źródło 20 grudnia 2016 .
  46. menedżer systemu. Dostęp 11 grudnia 2020 r .
  47. Domyślny postęp motywu , 28 lutego 2005 r.
  48. Nowy domyślny motyw dla GTK+ , 13 czerwca 2014
  49. gtk-qt-engine. Źródło 17 listopada 2012 .