GTK

GTK
Oryginalni autorzy Spencera Kimballa , Petera Mattisa
Deweloperzy Projekt GNOME , eXperimental Computing Facility (XCF)
Pierwsze wydanie 14 kwietnia 1998 ; 24 lata temu ( 14.04.1998 )
Wersja stabilna
4.8.3 / 22 grudnia 2022 r . ; 2 miesiące temu ( 2022-12-22 )
Wersja podglądu
4.9.2 / 26 grudnia 2022 r . ; 2 miesiące temu ( 2022-12-26 )
Magazyn
Napisane w C , CSS
System operacyjny Linux , uniksopodobny , macOS , Windows
Typ Zestaw narzędzi widżetów
Licencja LGPLv2.1+
Strona internetowa gtk .org

GTK (wcześniej GTK+ ) to darmowy wieloplatformowy zestaw narzędzi typu open source do tworzenia graficznych interfejsów użytkownika (GUI). Jest licencjonowany zgodnie z warunkami Mniejszej Powszechnej Licencji Publicznej GNU , co pozwala na korzystanie z niego zarówno darmowemu , jak i prawnie zastrzeżonemu oprogramowaniu . Jest to jeden z najpopularniejszych zestawów narzędzi do systemów okienkowych Wayland i X11 .

Zespół GTK regularnie wydaje nowe wersje. GTK 4 i GTK 3 są utrzymywane, podczas gdy GTK 2 jest wycofany z eksploatacji . GTK1 jest niezależnie utrzymywany przez projekt CinePaint .

Architektura oprogramowania

Zestaw narzędzi GTK
Uproszczona architektura oprogramowania GTK . Pango , GDK , ATK , GIO , Cairo i GLib
GDK zawiera backendy dla X11 , Wayland , Broadway ( HTTP ), Quartz i GDI i polega na Cairo do renderowania. Jego nowy SceneGraph jest w toku.

Biblioteka GTK zawiera zestaw graficznych elementów sterujących ( widżetów ); wersja 3.22.16 zawiera 186 aktywnych i 36 przestarzałych widżetów. GTK to zorientowany obiektowo zestaw narzędzi widżetów napisany w języku programowania C ; używa GObject , czyli systemu obiektowego GLib , do orientacji obiektowej. Podczas gdy GTK jest przeznaczony głównie dla systemów okienkowych opartych na X11 i Wayland , działa na innych platformach, w tym Microsoft Windows (połączony z Windows API ) i macOS (powiązany z Quartz ). Istnieje również zaplecze HTML5 o nazwie Broadway .

GTK można skonfigurować tak, aby zmieniał wygląd rysowanych widżetów; odbywa się to przy użyciu różnych silników wyświetlania. Istnieje kilka silników wyświetlania, które próbują naśladować wygląd natywnych widżetów na używanej platformie.

Począwszy od wersji 2.8, wydanej w 2005 roku, GTK zaczęło używać Cairo do renderowania większości widżetów graficznych elementów sterujących . Od wersji GTK 3.0 całe renderowanie odbywa się przy użyciu Cairo.

26 stycznia 2018 r. na DevConf.cz Matthias Clasen przedstawił przegląd obecnego stanu rozwoju GTK 4, w tym ogólne wyjaśnienie, jak działa renderowanie i wprowadzanie danych w GTK 3, jakie zmiany są wprowadzane w GTK 4 (>3,90 ), i dlaczego. 6 lutego 2019 roku ogłoszono, że GTK 4 usunie „+” z nazwy projektu.

Zestaw rysunkowy GTK (GDK)

GDK działa jako opakowanie wokół funkcji niskiego poziomu zapewnianych przez podstawowe systemy okienkowe i graficzne.

GDK znajduje się w katalogu /gdk .

Zestaw wykresów scen GTK (GSK)

GSK to interfejs API renderowania i wykresów scen dla GTK. GSK znajduje się pomiędzy graficznymi elementami sterującymi (widżetami) a renderowaniem. GSK został ostatecznie włączony do wersji GTK 3.90 wydanej w marcu 2017 r.

GSK znajduje się w katalogu /gsk .

GtkInspector

GtkInspector został wprowadzony w wersji 3.14. GtkInspector można wywołać tylko po zainstalowaniu pakietu programistycznego libgtk-3-dev / gtk+-devel [ permanent dead link ] .

Projektanci GUI

Istnieje kilku projektantów GUI dla GTK. Następujące projekty są aktywne od lipca 2011:

GtkBuilder

GtkBuilder umożliwia projektowanie interfejsów użytkownika bez pisania kodu. Interfejs jest opisany w Extensible Markup Language (XML), który jest następnie ładowany w czasie wykonywania, a obiekty tworzone automatycznie. Glade Interface Designer umożliwia tworzenie interfejsu użytkownika w , w jaki widzisz to, co dostajesz ( WYSIWYG ). Opis interfejsu użytkownika jest niezależny od używanego języka programowania.

Wiązania językowe

Powiązania językowe są dostępne do używania GTK z języków innych niż C, w tym C++ , Genie , JavaScript , Perl , Python , Vala i inne .

GtkSharp, którego nie należy mylić z Gtk#, obsługuje GTK 3.

Gtk#

Gtk#
Deweloperzy Xamarin
Pierwsze wydanie 12 marca 2004 ; 18 lat temu ( 12.03.2004 )
Wersja stabilna
2.12.41 / 22 września 2016 ; 6 lat temu ( 2016-09-22 )
Wersja podglądu
2.99.3 (dla GTK3) / 6 czerwca 2014 ; 8 lat temu ( 06.06.2014 )
Magazyn
Napisane w C# , XML , Perl , C
System operacyjny Windows , macOS , Linux
Typ Zestaw narzędzi widżetów
Licencja Mniejsza Powszechna Licencja Publiczna GNU
Strona internetowa mono-project .com /GtkSharp

Gtk# to zestaw powiązań .NET Framework dla zestawu narzędzi graficznego interfejsu użytkownika (GUI) GTK i różnych bibliotek GNOME . Biblioteka ułatwia budowanie graficznych aplikacji GNOME przy użyciu Mono lub dowolnego innego zgodnego środowiska uruchomieniowego języka wspólnego (CLR). Gtk# to system sterowany zdarzeniami, jak każda inna nowoczesna biblioteka okienkowa, w której każdy widżet umożliwia kojarzenie metod obsługi, które są wywoływane, gdy wystąpią określone zdarzenia. [ potrzebne źródło ]

Aplikacje zbudowane przy użyciu Gtk# będą działać na wielu platformach, w tym Linux , Windows i macOS . Pakiety Mono dla Windows zawierają GTK, Gtk# i natywny motyw, dzięki któremu aplikacje wyglądają jak natywne aplikacje Windows. Począwszy od Mono 1.9, uruchamianie aplikacji Gtk# w systemie macOS nie wymaga już uruchamiania X11 .

Glade Interface Designer może być używany z powiązaniami Glade# do łatwego projektowania aplikacji GUI. Projektant GUI o imieniu Stetic jest zintegrowany ze zintegrowanym środowiskiem programistycznym (IDE) MonoDevelop .

Oprócz obsługi standardowego stosu narzędzi programistycznych GTK/GNOME, zestaw gtk-dotnet.dll zapewnia pomost do korzystania z funkcji dostępnych w stosie .NET. W tym momencie obejmuje to funkcjonalność używania System.Drawing do rysowania na widgecie. [ potrzebne źródło ]

Od września 2020 r. obsługa Gtk # dla Gtk3 pozostaje w fazie podglądu, a rozwidlone projekty, takie jak GtkSharp , zostały utworzone w celu zapewnienia pełnej obsługi Gtk3 dla C # i innych języków CLI. Brak wydanej wersji Gtk # z obsługą Gtk3 był wymieniany jako powód usunięcia Banshee w Ubuntu 12.04.

Rozwój

GTK jest rozwijany głównie przez The GNOME Project , który rozwija również platformę programistyczną GNOME i środowisko graficzne GNOME.

Rozwój GTK jest luźno zarządzany. Dyskusja toczy się głównie na kilku publicznych listach mailingowych. Deweloperzy i użytkownicy GNOME zbierają się na dorocznej Europejskiej Konferencji Użytkowników i Programistów GNOME GUADEC , aby omówić obecny stan i przyszły kierunek rozwoju GNOME. GNOME zawiera standardy i programy z freedesktop.org , aby lepiej współpracować z innymi pulpitami. [ potrzebne źródło ]

GTK jest napisany głównie w C . Dostępnych jest wiele powiązań językowych .

W dniu 1 września 2016 r. post na blogu rozwojowym GTK wskazywał między innymi na przyszły schemat numeracji GTK. GTK wersja 3.22, wydana jesienią 2016 roku, miała być ostatnią wersją 3.x, chociaż wersja 3.24 pojawiła się jesienią 2018 roku z opóźnieniem GTK 4. Rozwój GTK 4 wykorzystywał nazwy wersji 3.90, 3.92 itd. aż do pierwsza stabilna wersja GTK 4.0 została wydana w grudniu 2020 r. Pomimo pierwszej stabilnej wersji GTK 4, niektóre aplikacje korzystające z GTK nadal polegają na GTK 2. Na przykład od stycznia 2022 r. GIMP jest nadal przenoszony do GTK 3.

Buduj automatyzację

GTK (oraz GNOME, GLib itp.) wcześniej wykorzystywało system kompilacji GNU (o nazwie Autotools) jako wybrany system automatyzacji kompilacji .

Od 14 sierpnia 2017 główna gałąź GTK jest budowana za pomocą Meson , a pliki systemowe kompilacji Autotools zostały usunięte.

Krytyka

Najczęstszą krytyką GTK jest brak kompatybilności wstecznej w głównych aktualizacjach, zwłaszcza w interfejsie programowania aplikacji (API) i motywach.

Przerwy kompatybilności między mniejszymi wydaniami podczas cyklu rozwoju GTK 3.x zostały wyjaśnione przez Benjamina Otte jako spowodowane silną presją na innowacje, takie jak zapewnienie funkcji, których oczekują współcześni użytkownicy i obsługa coraz bardziej wpływowego protokołu serwera wyświetlania Wayland . Wraz z wydaniem GTK 4 presja związana z potrzebą innowacji zostanie uwolniona, a równowaga między stabilnością a innowacjami przechyli się w stronę stabilności. Podobnie ostatnie zmiany w motywach mają na celu ulepszenie i ustabilizowanie tej części interfejsu API, co oznacza, że ​​część inwestycji teraz powinna zwrócić się później.

  • Dirk Hohndel, programista Subsurface i członek Intel Open-Source Technology Center, skrytykował programistów GTK za to, że są agresywni i ignorują większość próśb społeczności.
  • Hong Jen Yee, twórca LXDE (której wersja GTK została usunięta i wszystkie wysiłki skupiły się na porcie Qt ), wyraził pogardę dla wersji 3 radykalnych zmian API zestawu narzędzi GTK i zwiększonego zużycia pamięci oraz przeportował Menedżera plików PCMan (PCManFM) do Qt . PCManFM jest rozwijany jednocześnie z GTK i backendem Qt.
  • Odtwarzacz muzyki Audacious został przeniesiony do Qt w wersji 3.6. Powody podane przez programistów obejmują przejście do dekoracji okien po stronie klienta, które, jak twierdzą, powodują, że aplikacja wygląda „ GNOME -y i nie na miejscu”.
  • Wireshark przeszedł na Qt, ponieważ nie miał dobrych doświadczeń z wieloplatformową obsługą GTK.

Używać

Wsparcie GTK dla Wayland , wymaga dostosowania aplikacji również do Wayland
Zrzut ekranu GIMP 2.8 - GTK jest odpowiedzialny za zarządzanie komponentami interfejsu programu, w tym menu, przyciskami i polami wprowadzania.

Aplikacje

Niektóre godne uwagi aplikacje, które używają GTK jako zestawu narzędzi widżetów, obejmują:

Środowiska pulpitu

Kilka środowisk graficznych wykorzystuje GTK jako zestaw narzędzi widżetów.

Aktualny

Nieaktywny

Różnorodny

Programy GTK mogą być uruchamiane w środowiskach graficznych opartych na X11 i Wayland lub menedżerach okien, nawet tych, które nie są wykonane z GTK, pod warunkiem zainstalowania potrzebnych bibliotek; dotyczy to również macOS , jeśli zainstalowano aplikację X11.app . GTK można również uruchomić w systemie Microsoft Windows , gdzie jest używany przez niektóre popularne aplikacje wieloplatformowe, takie jak Pidgin i GIMP. wxWidgets , wieloplatformowy zestaw narzędzi GUI, domyślnie używa GTK w systemie Linux. Inne porty to DirectFB (używany na przykład przez instalator Debiana ) i ncurses .

Menedżery okien

Następujące menedżery okien używają GTK:

GtkSourceView

Do podświetlania składni służy GtkSourceView, „widget edycji kodu źródłowego”. GtkSourceView jest utrzymywany przez GNOME oddzielnie od GTK jako biblioteka: gtksourceview . W planach jest zmiana nazwy na gsv.

GtkSpell

GtkSpell to biblioteka niezależna od GTK. GtkSpell zależy od GTK i Enchant . Enchant to opakowanie dla ispell, hunspell itp., rzeczywistego silnika/oprogramowania do sprawdzania pisowni . GtkSpell używa widżetu GtkTextView firmy GTK do wyróżniania błędnie napisanych słów i oferowania wymiany.

Przykład

Dokumentacja jest dostępna tutaj:

Poniższy kod przedstawia graficzny program GTK hello -world w języku programowania C. Ten program ma okno z tytułem "Witaj, świecie!" i etykietę z podobnym tekstem.


 


 
   

     
     

    
      

    
     

    
      

    

      

    
     

    


     

    
    


     

    
        0

    

       

    
       
 // helloworld.c  #include  <gtk/gtk.h>  /* Wywołanie zwrotne, które zostanie wywołane, gdy aplikacja zostanie aktywowana */  static  void  aktywuj_callback  (  GApplication  *  app  ,  gpointer  user_data  )  {  GtkWidget  *  window  ;  GtkWidget  *  etykieta  ;  /* Utwórz główne okno najwyższego poziomu */  window  =  gtk_window_new  ();  /* Nadaj mu tytuł */  gtk_window_set_title  (  GTK_WINDOW  (  okno  ),  "Witaj, świecie!"  );  /* Ustawienie domyślnego rozmiaru okna */  gtk_window_set_default_size  (  GTK_WINDOW  (  window  ),  200  ,  100  );  /* Przypisz zmienną „etykieta” do nowej etykiety GTK,  * z tekstem „Witaj, świecie!” */   label  =  gtk_label_new  (  "Witaj, świecie!"  );  /* Umieść etykietę w głównym oknie */  gtk_window_set_child  (  GTK_WINDOW  (  okno  ),  label  );  /* Poinformuj aplikację o oknie.  * Proces aplikacji będzie działał, dopóki wszystkie  * okna nie zostaną zamknięte */  gtk_application_add_window  (  GTK_APPLICATION  (  aplikacja  ),  GTK_WINDOW  (  okno  ));  /* Upewnij się, że wszystko, okno i etykieta, są widoczne */  gtk_widget_show  (  okno  );  }  int  main  (  int  argc  ,  char  *  argv  [])  {  /* Utwórz naszą aplikację testową */  GtkApplication  *  application  =  gtk_application_new  (  "org.wikipedia.gtktest"  ,  );  /* Podłącz nasz handler do wywołania zwrotnego "activate", które zostanie wywołane  * gdy aplikacja zostanie aktywowana przez użytkownika, np. przy pierwszym uruchomieniu */  g_signal_connect  (  application  ,  "activate"  ,  G_CALLBACK  (  aktywuj_callback  ),  NULL  );  /* Uruchom aplikację i zwróć jej status */  return  g_application_run  (  G_APPLICATION  (  application  ),  argc  ,  argv  );  } 

Wymaga najpierw zainstalowania bibliotek w Debianie lub pochodnych: $ sudo apt-get install libgtk-4-dev

Używając pkg-config w powłoce Unix , ten kod można skompilować za pomocą następującego polecenia: $ cc -Wall $(pkg-config --cflags --libs gtk4) helloworld.c -o helloworld

Wywołaj program: $ ./helloworld

Historia

Linuks

GTK został pierwotnie zaprojektowany i używany w programie GNU Image Manipulation Program (GIMP) jako zamiennik zestawu narzędzi Motif ; w pewnym momencie Peter Mattis rozczarował się Motifem i zaczął pisać własny zestaw narzędzi GUI o nazwie GIMP Toolkit iz powodzeniem zastąpił Motif wydaniem GIMP 0.60. W końcu GTK został ponownie napisany, aby był zorientowany obiektowo i został przemianowany na GTK +. Zostało to po raz pierwszy użyte w wersji 0.99 GIMP-a. GTK został następnie przyjęty do konserwacji przez Fundację GNOME , która używa go w środowisku graficznym GNOME.

Seria wydań GTK 2.0.0 wprowadziła nowe funkcje, które obejmują ulepszone renderowanie tekstu za pomocą Pango , nowy silnik motywów , ulepszoną dostępność za pomocą zestawu narzędzi ułatwień dostępu , przejście do Unicode przy użyciu ciągów znaków UTF-8 oraz bardziej elastyczne API. Począwszy od wersji 2.8, GTK 2 zależy od Cairo do renderowania grafiki wektorowej.

Wersja GTK 3.0.0 zawierała poprawioną obsługę urządzeń wejściowych, obsługę motywów napisanych za pomocą składni podobnej do CSS oraz możliwość otrzymywania informacji o innych otwartych aplikacjach GTK.

„+” został usunięty, powracając do zwykłego „GTK” w lutym 2019 r. Podczas Hackathonu .

System operacyjny Mac

Z Quartz -backend GTK jest dostępny w macOS .

Okna

  • Po GTK 2.24.10 i 3.6.4 Rozwój systemu Windows z instalatorem został zamknięty przez Gnome. Instalacja MSYS2 w systemie Windows to dobry sposób na użycie rzeczywistego GTK.
  • GTK 2.24.10 i 3.6.4 są dostępne w Internecie, ale zawierają wiele błędów i są ograniczone w stosunku do aktualnych wersji.
  • Wersja dla 64-bitowego systemu Windows jest przygotowywana przez Toma Schoonjansa z 2.24.33 (aktualnie jak Linux) i 3.24.24 (aktualnie jak Linux) od stycznia 2021 roku.
  • Aktualizacja Fall Creators Update systemu Windows 10 obejmuje podsystem Windows dla systemu Linux (WSL). Dzięki dystrybucjom Linuksa, takim jak Ubuntu lub Debian, dostępnym w Microsoft Store i serwerowi X, takiemu jak Xming lub VcXsvr, tysiące programów, takich jak GTK 2 lub 3, może działać z obsługą X lub terminali.

OpenVMS

HP stwierdził, że ich celem było połączenie potrzebnych zmian OpenVMS ze strumieniem rozwoju GTK w wersji 1.3, jednak nigdy się to nie zmaterializowało. Najnowsza wersja GTK dla OpenVMS to wersja 1.2.10.

GTK 4

Jedną z kardynalnych nowości wdrożonych w cyklu rozwoju GTK 4 (tj. GTK 3.92 itp.) było usunięcie opcji dostosowywania po stronie użytkownika (jak indywidualne skróty klawiaturowe, które można było ustawić w GTK+ 2), delegowanie funkcjonalności do obiektów pomocniczych zamiast kodowania ich w klasach podstawowych dostarczonych przez GTK.

  • obsługa zdarzeń z programów obsługi sygnałów opisana przez GtkWidget jest delegowana do kontrolerów zdarzeń
  • renderowanie jest delegowane do obiektów GtkSnapshot
  • mechanizm układu z GtkWidget jest delegowany do GtkLayoutManager

W 2018-Jan-26 na DevConf.cz Matthias Clasen przedstawił przegląd ówczesnego stanu rozwoju GTK 4, w tym ogólne wyjaśnienie, jak działało renderowanie i wprowadzanie danych w GTK 3, jakie zmiany były wprowadzane w GTK 4, oraz przyczyny tych zmian. Podano również przykłady rzeczy, które stały się możliwe dzięki GTK 4.

Wydania

Legenda:
Stara wersja
Starsza wersja, nadal utrzymywana
Ostatnia wersja
Najnowsza wersja podglądu
Przyszłe wydanie
Seria wydawnicza Pierwsze wydanie Główne ulepszenia Najnowsza wersja pomocnicza
Stara wersja, nie jest już obsługiwana: 1.0 1998-04-13 Pierwsza stabilna wersja 1.0.6
Stara wersja, nie jest już obsługiwana: 1.2 1999-02-25 Nowe widżety :
  • GtkFontSelector
  • GtkPacker
  • GtkItemFactory
  • GtkCTree
  • GtkInvisible
  • GtkCalendar
  • GtkLayout
  • GtkPlug
  • GtkSocket
1.2.10
Stara wersja, nie jest już obsługiwana: 2.0 2002-03-11 GOobiekt

Ogólne wsparcie dla UTF-8

2.0.9
Stara wersja, nie jest już obsługiwana: 2.2 2002-12-22 Wsparcie wielogłowicowe 2.2.4
Stara wersja, nie jest już obsługiwana: 2.4 2004-03-16 Nowe widżety:
  • GtkFileChooser
  • GtkComboBox
  • GtkComboBoxEntry
  • GtkExpander
  • GtkFontButton
  • GtkColorButton
2.4.14
Stara wersja, nie jest już obsługiwana: 2.6 2004-12-16 Nowe widżety:
  • GtkIconView
  • GtkO dialogu
  • GtkCellView

Ostatni obsługujący Windows 98 / Me

2.6.10
Stara wersja, nie jest już obsługiwana: 2.8 2005-08-13 Większość widżetów jest renderowana przez Cairo 2.8.20
Stara wersja, nie jest już obsługiwana: 2.10 2006-07-03 Nowe widżety:
  • GtkStatusIcon
  • GtkAssistant
  • GtkLinkButton
  • GtkRecentChooser

Obsługa drukowania: GtkPrintOperation

2.10.14
Stara wersja, nie jest już obsługiwana: 2.12 2007-09-14 GtkBuilder 2.12.12
Stara wersja, nie jest już obsługiwana: 2.14 2008-09-04 Obsługa ładowania plików JPEG 2000 2.14.7
Stara wersja, nie jest już obsługiwana: 2.16 2009-03-13 Nowy widżet: GtkOrientable

Ostrzeżenie o Caps Lock przy wpisywaniu hasła

Ulepszenia GtkScale, GtkStatusIcon, GtkFileChooser

2.16.6
Stara wersja, nie jest już obsługiwana: 2.18 2009-09-23 Nowy widżet: GtkInfoBar

Ulepszenie wyboru pliku, drukowania

Aby usunąć większość niezbędnego IPC między aplikacją X11 a serwerem X11, GDK został przepisany (głównie przez Alexandra Larssona) tak, aby używał „okien po stronie klienta”, tj. GdkWindow, które musi mieć każdy widżet, należy teraz do klienta

2.18.9
Stara wersja, nie jest już obsługiwana: 2.20 2010-03-23 Nowe widżety:
  • GtkSpinner
  • GtkToolPalette
  • GtkOffscreenWindow

Ulepszenia w wyborze plików, obsłudze klawiatury, GDK

Dane introspekcji są teraz zawarte w GTK

2.20.1
Stara wersja, nie jest już obsługiwana: 2.22 2010-09-23 GdkPixbuf przeniesiony do osobnego modułu

Większość rysunków GDK opiera się na Kairze

Wiele danych wewnętrznych jest teraz prywatnych i można je zapieczętować w ramach przygotowań do GTK 3

2.22.1
Stara wersja, nie jest już obsługiwana: 2.24 2011-01-30 Nowy widżet: GtkComboBoxText, który wcześniej był niestandardowym widżetem dostarczanym z Gtkmm

Zaplecze drukowania CUPS może wysyłać zadania drukowania w formacie PDF

GtkBuilder zyskał obsługę znaczników tekstowych i przycisków narzędzi menu oraz dodano wiele poprawek adnotacji introspekcji

Migracja z GTK+ 2.x do GTK+ 3


2.24.32 (08.01.2018)
Stara wersja, nie jest już obsługiwana: 3.0 2011-02-10 Rozwój i projekt wydania GTK 3 zestawu narzędzi rozpoczęto w lutym 2009 podczas GTK Theming Hackfest, który odbył się w Dublinie.
  • Pierwszy szkic planu rozwoju został wydany 9 kwietnia 2009

Ukończono głównie Projekt Ridley

  • próba konsolidacji kilku bibliotek, które były zewnętrzne w stosunku do GTK+
  • w tym libgnome , libgnomeui , libgnomeprint22 , libgnomeprintui22 , libglade , libgnomecanvas , libegg , libeel , gtkglext i libsexy

Cały rendering odbywa się za pomocą Cairo

GDK stał się bardziej niezależny od X11

XInput2, interfejs API motywu jest oparty na kaskadowych arkuszach stylów (CSS), pogarszając możliwą do osiągnięcia wydajność dla częstotliwości odświeżania 60 Hz

3.0.12
Stara wersja, nie jest już obsługiwana: 3.2 2011-09-25 Nowe widżety:
  • GtkLockButton
  • GtkNakładka

Nowe okno wyboru czcionek

Nowe eksperymentalne backendy:

3.2.4
Stara wersja, nie jest już obsługiwana: 3.4 2012-03-26 Obsługa menu w GtkApplication

Nowy wybór kolorów

Dodano obsługę urządzeń dotykowych

Dodano obsługę płynnego przewijania

GtkScrolledWindow wykona przewijanie kinetyczne za pomocą urządzeń dotykowych

ulepszono obsługę systemu macOS

Jest to pierwsza wersja GTK 3, która dobrze działa w systemie Windows

Backend Wayland został zaktualizowany do aktualnej wersji Wayland

Przyciski obrotu otrzymały nowy wygląd

Dostępność: obsługa dostępności widoku drzewa została przepisana

Pełniejsza obsługa motywów CSS

3.4.4
Stara wersja, nie jest już obsługiwana: 3.6 2012-09-24 Nowe widżety:
  • GtkSearchEntry
  • GtkMenuButton
  • GtkLevelBar

Pionowe przyciski obrotowe

Animacje CSS, rozmycie cieni

Obsługa przenikania i przejść w motywach

3.6.5
Stara wersja, nie jest już obsługiwana: 3.8 2013-03-25 Stabilna obsługa Wayland 1.0

Wsparcie dla serwera broadwayd

Ulepszone motywy

Lepsze zarządzanie geometrią

Ulepszenia dotykowe

Wsparcie z menedżerem okien dla protokołu synchronizacji ramek

Dodano GdkFrameClock

3.8.9
Stara wersja, nie jest już obsługiwana: 3.10 2013-09-23 Nowe widżety:
  • GtkHeaderBar
  • Pasek boczny GtkPlaces
  • GtkStack
  • GtkStackSwitcher
  • GtkRevealer
  • GtkSearchBar
  • GtkListBox

Wsparcie dla Waylanda 1.2

  • maksymalizacja
  • animowane kursory
  • wiele monitorów
  • ustawienia
  • niestandardowe powierzchnie
  • synchronizacja ramek

Dodany:

  • dekoracje po stronie klienta
  • skalowana obsługa wyjścia na ekranach o wysokiej rozdzielczości
  • tryb precyzyjnej regulacji przewijania

REMOVED:

  • obsługa protokołu Motif DND
  • obsługa wielu ekranów na wyświetlacz
  • gdk_window_get_display
  • gtk_widget_push_composite_child

Odrywane pozycje menu oraz wiele ustawień GTK

Nowoczesny model rysunku GTK

3.10.9
Stara wersja, nie jest już obsługiwana: 3.12 2014-03-25 Dekoracje po stronie klienta

Wsparcie dla Waylanda 1.5

Nowy widżet: GtkPopover (alternatywa dla menu i okien dialogowych)

3.12.2
Stara wersja, nie jest już obsługiwana: 3.14 2014-09-22 Wprowadzono GtkInspector (kopia gtkparasite).

Ulepszona obsługa gestów / multi-touch połączona

Przestarzałe:

  • GtkMisc
  • Wyrównanie Gtk
  • GtkArrow
  • GdkColor
  • Regiony stylu
  • obsługa plików .icon
  • gdk_window_flush
  • rysowanie poza farbą początku/końca

Większość widżetów została przekonwertowana, aby wewnętrznie używać gestów

Wayland obsługuje tryb klasyczny GNOME Shell

3.14.15
Stara wersja, nie jest już obsługiwana: 3.16 2015-03-22 GDK obsługuje renderowanie okien przy użyciu OpenGL dla X11 i Wayland przy użyciu libepoxy

Nowe widżety:

  • GtkGLArea
  • Pasek boczny GtkStack
  • GtkModelButton
  • GtkPopoverMenu

Zmieniono przewijanie ( pasek przewijania jest domyślnie ukryty)

Eksperymentalny backend Mir

3.16.7
Stara wersja, nie jest już obsługiwana: 3.18 2015-09-23 Dodaj infrastrukturę węzła CSS

Więcej odświeżenia projektu selektora plików i lepsze wyszukiwanie selektora plików

Zrezygnowano z obsługi systemu Windows XP

Obsługa modelu dla listy i pola przepływu

Kinetyczne przewijanie touchpada

Gesty touchpada (Wayland)

narzędzie gtk-builder-tool

Okna tylko wyjściowe

3.18.9
Stara wersja, nie jest już obsługiwana: 3.20 2016-03-21 Dalsza integracja węzłów CSS

Przeciągnij i upuść w dół do GDK

Nowy widżet: GtkShortcutsWindow (pokazuje skróty klawiaturowe i gesty aplikacji)

3.20.10
Stara wersja, nie jest już obsługiwana: 3.22 2016-09-21 Ostatnie wydanie 3.x

Obsługa tabletów Wayland została połączona, obsługa tabletów graficznych jest uważana za kompletną

GTK 3.22 będzie równie stabilne (a przez to „nudne”) jak GTK 2


od 3 lat 3.22.29
Starsza wersja, ale nadal utrzymywana: 3.24 2018-09-03 3.22 miała być ostatnią wersją serii GTK 3 Seria

Uderzenia zależności – wymagają:

  • libepoksy 1.4
  • pango 1.41

Nowe funkcje wyboru czcionek:

  • zezwalaj na ustawianie funkcji czcionek OpenType
  • pokaż przykłady funkcji czcionek OpenType
  • pozwalają na wybór wariantów czcionek OpenType
  • poziomy wsparcia szczegółów do wyboru

Nowe funkcje emotikonów:

  • obsługuje wyskakujące okienko zakończenia dla Emoji
  • upuść skrót Ctrl-Shift-e

Inne nowe interfejsy API: gdk_window_move_to_rect

Wayland: użyj anonimowej pamięci współdzielonej we FreeBSD

Backportowane kontrolery zdarzeń z GTK 4:

  • GtkEventControllerScroll
  • GtkEventControllerMotion
  • GtkEventControllerKey
  • GtkGestureStylus

Wycofaj kilka interfejsów API, które zniknęły w GTK 4:

  • łańcuchy ostrości w GtkContainer
  • czułość steppera w GtkRange







3.23.0 3.23.1 3.23.2 3.23.3 3.24.0 ... 3.24.5 3.24.14 ...

3.24.29

Stara wersja, nie jest już obsługiwana: 3.90 2017-03-31 Zestaw GTK Scene Graph Kit (GSK) został połączony

Usuń wszelkie interfejsy API oznaczone jako przestarzałe

Ciężki rozwój

  • zepsuć API i ABI

Nowy renderer Vulkan rozszerza stary renderer Kairu

3.89.1




3,89,2 3,89,4 3,89,5 3,90

Stara wersja, nie jest już obsługiwana: 3.92 2017-10-18 Ponieważ GNOME 3.26 zostało wydane już 13 września 2017 r., nie było oparte na GTK 3.92.

Autotools GNU zostało zastąpione przez Meson .

3.91.0



3.91.1 3.91.2 3.92.1

Stara wersja, nie jest już obsługiwana: 3.94 2018-06-26 3,93
  • Usunięto GdkScreen, GdkVisual
  • GdkDeviceManager zastąpiony przez GdkSeat
  • Obsługa schowka została przeniesiona z GTK do GDK
  • GdkEvent jest konwertowany na nieprzezroczysty obiekt GObject
  • renderer GL w GSK jest zasadniczo ukończony i jest teraz na równi z rendererem Vulkan
  • użycie GdkPixbuf w API jest ograniczone
    • , a obiekt GskTexture zostaje przeniesiony do GDK jako GdkTexture, aby zająć jego miejsce
  • backend Wayland implementuje teraz protokół dekoracji po stronie serwera KDE
  • Broadway zostaje przeniesiony do GSK.

Zmieniono nazwę GdkWindow na GdkSurface

Nowa abstrakcja dla zawartości do rysowania: GdkPaintable

Obsługiwane jest wyświetlanie multimediów za pomocą:

  • GtkVideo
  • GtkMediaFile
  • GtkMediaStream
  • GtkMediaControls

3,93 3,94,0
Stara wersja, nie jest już obsługiwana: 3.96 2019-05-07 Polecenie uproszczenia gtk4-builder-tool zyskało opcję --3to4 do konwersji plików GTK3 ui na GTK4; chociaż w przypadku menu AMTK, paski narzędzi lub inne obiekty, takie jak GtkShortcutsWindow, są tworzone programowo (nie za pomocą pliku *.ui), ale za pomocą wygodnych interfejsów API.

GtkWidget może teraz używać GtkLayoutManager do alokacji rozmiaru

  • menedżerowie układu mogą opcjonalnie używać elementów podrzędnych układu przechowujących właściwości układu
  • GtkBinLayout, GtkBoxLayout, GtkGridLayout, GtkFixedLayout i GtkCustomLayout są obecnie dostępne
  • więcej implementacji menedżera układu pojawi się w przyszłości

Obsługa fokusu została przepisana, a generowanie zdarzeń zmiany fokusu zostało ujednolicone ze zdarzeniami przecinania

Zdarzenia zostały uproszczone i służą tylko do wprowadzania danych:

  • zdarzenia ekspozycji zostały zastąpione sygnałem GdkSurface::render
  • configure zdarzenia zostały zastąpione sygnałem GdkSurface::size-changed
  • map zdarzenia zostały zastąpione właściwością GdkSurface::mapped
  • gdk_event_handler_set został zastąpiony sygnałem GdkSurface::event
  • kluczowe zdarzenia nie zawierają już ciągu znaków
  • zdarzenia dotyczące niezmapowanych widżetów są ignorowane
3.96.0
Stara wersja, nie jest już obsługiwana: 3.98 2020-02-10
  • Ulepszenia w wydajności
  • Przeciągnij i upuść refaktoryzację
  • Przesuwanie GDK w kierunku Wayland
  • Usunięcia
    • GtkMenu, GtkToolbar i podobne klasy zostały zastąpione przez GMenu.
  • Wzbogacenie
    • Selektor emotikonów
    • Widżety tekstowe mają teraz stosy cofania
    • Nowy menedżer układu
3,98,5
Stara wersja, nie jest już obsługiwana: 3.99.0 2020-07-31
  • Wprowadzono następcę Accessibility Toolkit (ATK) . Nowe podejście zaimplementuje WAI-ARIA (World Wide Web Consortium (W3C) Accessibility Initiative – Accessible Rich Internet Applications).
  • Zaktualizowano nagłówki, aby używały standardowych typów C zamiast typów GLib
  • Nowe widżety
  • Poprawki i ulepszenia
3,99,4
Stara wersja, nie jest już obsługiwana: 4.0 2020-12-16 4.0.2
Stara wersja, nie jest już obsługiwana: 4.2 2021-03-30
Stara wersja, nie jest już obsługiwana: 4.4 2021-08-23
Stara wersja, nie jest już obsługiwana: 4.6 2021-12-30
Aktualna stabilna wersja: 4.8 2021-12-30

Zobacz też

  • Dekoracja po stronie klienta
  • Lista zestawów narzędzi widżetów
  • GDK – zestaw do rysowania GIMP znajduje się pomiędzy biblioteką xlib a biblioteką GTK, obsługując podstawowe renderowanie, takie jak prymitywy rysunkowe, grafika rastrowa (mapy bitowe), kursory, czcionki, a także zdarzenia w oknie oraz funkcja przeciągania i upuszczania
  • gtkmm – powiązania C++ dla GTK
  • Qt – wieloplatformowy framework i zestaw narzędzi
  • Xojo – wieloplatformowe narzędzie programistyczne i framework
  • Enlightenment Foundation Libraries (EFL) - zestaw narzędzi widżetów napisany dla menedżera okien Enlightenment
  • FLTK – lekki, wieloplatformowy, nienatywny zestaw narzędzi do widżetów
  • Zestaw narzędzi FOX — szybki, wieloplatformowy zestaw narzędzi typu open source widżetów
  • IUP – wieloplatformowy zestaw narzędzi do budowania natywnych graficznych interfejsów użytkownika
  • Ostateczny ++
  • Biblioteka komponentów wizualnych (VCL)
  • Vala – zorientowany obiektowo język programowania z samoobsługowym kompilatorem, który generuje kod C i wykorzystuje system GObject.
  • wxWidgets — wieloplatformowy zestaw narzędzi GUI, którego celem jest bezpośrednie wykorzystanie natywnego graficznego interfejsu API każdej platformy, gdy tylko jest to możliwe.

Bibliografia

Linki zewnętrzne