**GTK+** (GIMP Toolkit) je višeplatformski vidžet tulkit za kreiranje grafičkog korisničkog okruženja. Predstavlja najpopularniji tulkit za X Window Sistem pored Nokijinog Qt interfejsa. Prvobitno je kreiran za potrebe grafičkog editora GIMP 1997 godine.

Licenciran je pod LGPL licencom i deo je GNU projekta, koji ima za cilj stvaranje operativnog sistema potpuno zasnovanog na slobodnom softveru.

Dizajn
------

GTK+ je objektno orijentisani vidžet tulkit napisan na programskom jeziku C. Objektna orijentacija je postignuta korišćenjem GLib objektnog sistema (GObject). Iako GTK+ primarno cilja na X Window sisteme, takođe podržava i druge platforme uključujući i Microsoft Windows, DirectFB i Mac OS X.

Može se i konfigurisati tako da se menja izgled iscrtanih vidžeta, što se postiže korišćenjem različitih ugrađenih mehanizama za prikaz. Postoji nekoliko ovakvih mehanizama koji pokušavaju da emuliraju izgled maternjih vidžeta na korišćenoj platformi.

#### Veze sa programskim jezicima

Biblioteka napisana na jednom programskom jeziku se može koristiti u drugom programskom jeziku ukoliku su napisane odgovarajuće jezičke veze: GTK+ poseduje veze za mnoge jezike.

Lista veza:

| Jezik
  | Naziv
  | Zvanično podržan
  |
| --- | --- | --- |
| C | GTK+
  | maternji (veze nisu potrebne)
  |
| C++ | gtkmm | Da
  |
| Vala | vala | Da
  |
| Ruby | ruby-gtk2 | Da
  |
| Python | PyGTK | Da
  |
| Java | java-gnome | Da (nije dostupan za Microsoft Windows)
  |
| .NET | Gtk# | Da
  |
| PHP | PHP-GTK | Da
  |
| Perl | Gtk2-Perl | Da
  |
| Ada | GtkAda
  | Ne
  |
| D | gtkD | Ne |
| Fortran | gtk-fortran
  | Ne
  |
| Common Lisp | CL-GTK2
  | Ne
  |
| Haskell | gtk2hs
  | Ne
  |
| Lua |  | Ne
  |
| Ocaml | LablGTK
  | Ne
  |
| Pascal |  | Ne
  |
| Pike |  | Ne
  |
| JavaScript | GJS | Ne
  |
| Smalltalk | Smalltalk YX | Ne
  |
| Tcl | Gnocl
  | Ne
  |
| Euphoria |  | Ne
  |

Istorijat
---------

GTK+ je originalno dizajniran i korišćen u GIMP grafičkom editoru kao zamena za Motif tulkit. Trenutna verzija GTK+ 2 je uspešno nasledila prvobitnu GTK+ 1, uz uvođenje novih karakteristika: napredni rendering teksta korišćenjem Pango biblioteke, novi mehanizam za teme, kompletna tranzicija na Unikod korišćenjem UTF-8 stringova i fleksibilnijeg API-ja. Ipak, GTK+ 2 nije kompatibilan sa GTK+ 1, i aplikacije se moraju portovati. Od verzije 2.8, GTK+ 2 zavisi i od Cairo biblioteke za rendering vektorske grafike.

Primer koda
-----------

GTK+ program na C programskom jeziku koji iscrtava prozor sa naslovom "Pozdrav svete" i labelu sa sličnim tekstom:

```
 #include <gtk/gtk.h>
 int main (int argc, char \*argv[])
 {
 GtkWidget \*window;
 GtkWidget \*label;
 gtk\_init (&argc, &argv);
 /\* kreiranje glavnog prozora \*/
 window = gtk\_window\_new (GTK\_WINDOW\_TOPLEVEL);
 /\* dodeljivanje naslova \*/
 gtk\_window\_set\_title (GTK\_WINDOW (window), "Pozdrav svete");
 /\* Povezivanje destroy signala prozora sa gtk\_main\_quit
 \* Kada se započne uništavanje prozora dobijamo obaveštenje i
 \* zaustavljamo glavnu GTK+ petlju
 \*/
 g\_signal\_connect (window, "destroy", G\_CALLBACK (gtk\_main\_quit), NULL);
 /\* Kreiranje ""Pozdrav svete" labele \*/
 label = gtk\_label\_new ("Pozdrav svete");
 /\* i njeno postavljanje na glavni prozor \*/
 gtk\_container\_add (GTK\_CONTAINER (window), label);
 /\* obezbeđivanje da je sve (prozor i labela) vidljivo \*/
 gtk\_widget\_show\_all (window);
 /\* pokretanje glavne petlje i njeno izvršavanje do stopiranja aplikacije \*/
 gtk\_main ();
 return 0;
 }

```

Upotreba
--------

Skrinšot GIMP-a 2.4. GTK+ je odgovoran za upravljanje interfejs komponenti programa, uključujući menije, tastere, polja za unos i sl.
Okruženja koja koriste GTK+
* GNOME je zanovan na GTK+, što iznači da GNOME programi koriste GTK+
* Xfce je zasnovan na GTK+, iako mnoge njegove aplikacije ne zavise od mnogo biblioteka
* LXDE je zasnovan na GTK+
* ROX Desktop
* GPE Palmtop Environment
* Maemo do verzije 5 je zasnovan na GTK+ dok će naredne verzije koristiti Qt
* Access Linux Platform naslednik Palm OS-a
* Sugar obrazovna platforma koristi GTK+ i PyGTK
* Moblin
* KDE je zasnovan na Qt-u, ali ima integraciju sa GTK+ programima (od verzije 4.2).

Ova desktop okruženja nisu potrebna za izvršavanje GTK+ programa. Ako su instalirane sve potrebne biblioteke, GTK+ program se može izvršavati na svakom desktop okruženju ili menadžeru prozora zasnovanom na X11, uključujući i Mac OS X. GTK+ se može izvršavati i pod Microsoft Windows-om, gde ga i koriste neke popularne kros-platformske aplikacije kao što su Pidgin i GIMP. wxWidgets, kros-platformski GUI tulkit, koristi GTK+ za Unix sisteme.

Menadžeri prozora
Sledeći menadžeri prozora koriste GTK+:

* Aewm
* AfterStep
* Amaterus
* Fluxbox
* FVWM
* FVWM1
* IceWM
* Metacity
* Mutter
* Wmg
* Xfwm

### Aplikacije

Neke od značajnijih aplikacija koje koriste GTK+:

* AbiWord - Vord procesor
* Anjuta - open-sors IDE
* CinePaint - grafički editor
* Ekiga - aplikacija za VoIP i video konferencije
* Evolution
* GIMP - grafički editor
* Gnumeric - Tablični procesor
* Chromium - Veb brouzer koga razvija Google
* Inkscape - editor za SVG Vektorsku grafiku
* K-3D - 3D modeliranje
* Marionnet - Interaktivni mrežni simulator
* Midori - Veb brouzer
* MonoDevelop - open-sors IDE
* Nero Linux - menadžer optičkih diskova
* Pidgin - program za razmenu instant poruka
* VMware Player - softver za virtuelizaciju
* Wireshark - analizator paketa

Bibliography
------------

* Krause, Andrew (April 23, 2007), *Foundations of GTK+ Development* (1st izd.), Apress, ISBN 978-1-59059-793-4
* Wright, Peter (May 15, 2000), *Beginning GTK+ and GNOME* (1st izd.), Peer Information, ISBN 978-1-86100-381-2
* Logan, Syd (September 6, 2001), *Gtk+ Programming in C* (1st izd.), Prentice Hall, ISBN 978-0-13-014264-1

Povezano
--------

* Qt

Spoljašnje veze
---------------

* GTK+ Projekt
* Zvanični GTK+ 2.x Tutorijal Arhivirano 2010-06-17 na Wayback Machine-u
* GTK+ Priručnik Arhivirano 2010-06-05 na Wayback Machine-u
* Lista GTK+ aplikacija