GTK

GTK eli GIMP Toolkit (aikaisemmin GTK+) on useissa käyttöjärjestelmissä toimiva graafinen käyttöliittymäkirjasto. Se on Qt:n ohella suosituimpia X-ikkunointijärjestelmälle kehitettyjä käyttöliittymäkirjastoja. GTK on ohjelmoitu C-kielellä ja lisensoitu LGPL-lisenssillä. Nykyään se on GNU- projektin osa. Alun perin GTK kehitettiin GIMP-kuvankäsittelyohjelmaa varten. Nykyään GTK on käytössä useissa merkittävissä Unix/Linux-järjestelmien työpöytäympäristöissä. Esimerkiksi GNOME ja Xfce rakentuvat sen päälle. Myös kämmenmikrojen Maemo-kehitysalusta käyttää GTK:ta. Se on käytössä joissakin suosituissa käyttöjärjestelmäriippumattomissa ohjelmissa kuten Pidginissä. == Historia == GTK:n kehittivät alun perin Spencer Kimball, Peter Mattis ja Josh MacDonald vuonna 1997 GIMP-kuvankäsittelyohjelman käyttöön Unix- käyttöjärjestelmien (mm. Linuxin) X Window Systemissä. Aluksi projektin nimenä oli pelkästään GTK, mutta se muutettiin GTK+:ksi oliopohjaisten laajennosten myötä. GIMPin edeltävät versiot olivat käyttäneet kaupallista Motif-kirjastoa, johon Mattis ei ollut tyytyväinen.http://web.archive.org/web/19990417052141/http://www.linuxworld.com/linuxworld/lw-1999-01/lw-01-gimp.html Vähitellen GTK+:a alkoivat käyttää myös useat muut ohjelmistot, mukaan lukien samana vuonna alkunsa saanut GNOME-työpöytäympäristö. Ensimmäinen vakaa versio, GTK+ 1.0 julkaistiin huhtikuussa 1998. Se sisälsi GIMPin tarvitsemat peruskomponentit. Helmikuussa 1999 julkaistu 1.2-versio käsitti useita laajennuksia ja oli tarkoitettu pelkän GIMPin sijaan yleiseen käyttöön. Vuonna 2019 projektin nimi muuttui takaisin muotoon GTK. === GTK+ 2 === Seuraava versio, GTK+ 2.0 julkaistiin maaliskuussa 2002 yli kolmen vuoden kehitystyön jälkeen. Se sisälsi useita merkittäviä muutoksia ja rikkoi yhteensopivuuden aiempien versioiden kanssa. Uudistuksia olivat muun muassa tekstin renderöinnin siirtäminen Pango-kirjastolle, GObject-oliojärjestelmän eriyttäminen GLib-kirjastoon ja tuki Windows-alustalle. Tämän jälkeen projektissa siirryttiin nopeampaan julkaisuaikatauluun ja yhteensopivuuden säilyttäviin aiemman päälle rakentaviin päivityksiin. Uusia versioita on julkaistu vaihtelevin väliajoin noin kerran vuodessa. Viimeinen 2.x-sarjan versio oli tammikuussa 2011 julkaistu 2.24, jonka jälkeen kaikki uusi kehitys kohdennettiin 3.x-sarjaan. === GTK+ 3 === Pitkän vakaan kauden edetessä alkoi esiintyä keskustelua seuraavasta suuremmasta uudistuksesta, osittaisesta yhteensopivuuden rikkomisesta ja vanhentuneiden rajapintojen poistamisesta. Luonnos GTK+ 3:n kehityssuunnitelmasta julkaistiin huhtikuussa 2009 ja lopullinen versio 3.0 julkaistiin helmikuussa 2011. Ohjelmointiteknisten parannusten ja refaktoroinnin lisäksi muutoksia 2.x-sarjaan verrattuna ovat muun muassa nykyaikaistettu syötelaitteiden tuki, uusi CSS:ään perustuva teemajärjestelmä ja yksinomaan Cairoon perustuva renderöinti. === GTK 4 === GTK 4.0 on ensimmäinen pääjulkaisu, jossa on palattu aiempaan nimeen GTK (ei enää GTK+). GTK 4.0 on julkaistu joulukuussa 2020. === Tuleva kehitys === Jatkossa projektin suunnitelmissa on muun muassa asettelu- ja teemajärjestelmän laajentaminen sekä yhteensopivuuden kehittäminen Gnome 3:n kanssa. == Arkkitehtuuri == GTK perustuu neljään projektin kehittämään kirjastoon: * GLib on matalan tason kirjasto, joka sisältää yleisiä rajapintoja ja funktioita esimerkiksi tietorakenteiden ja säikeiden hallintaan sekä tapahtumien käsittelyyn. * Pango on tekstin renderöintiin tarkoitettu kirjasto, jossa on huomioitu erityisesti tuki eri kielille ja kirjoitusjärjestelmille. * Cairo on kirjasto kaksiulotteisen grafiikan tuottamiseen. * ATK on esteettömyyskäyttöliittymäkirjasto, jonka avulla ohjelmat voivat tukea esimerkiksi suurennosta ja vaihtoehtoisia syöttölaitteita. GTK on kirjoitettu C-kielellä käyttäen GLibin GObject- oliojärjestelmää. Sitä on mahdollista käyttää useimmilla suosituilla ohjelmointikielillä kuten esimerkiksi C++, Java, C sharp ja Python. GTK on pääasiassa kohdennettu X Window Systemille, mutta se toimii myös Windowsissa ja tuki Mac OS:n Quartzille on kehitteillä. Käyttöliittymän elementtien ulkoasua on GTK:ssa mahdollista vaihdella erilaisilla teemamoottoreilla sekä niille tehdyillä teemoilla. === Esimerkkiohjelma === Seuraava C-kielinen ohjelma luo GTK+ 2:ta käyttäen ikkunan, joka sisältää tekstin ”Hello, world!”. #include int main(int argc, char* argv[]) { /* Alustaa GTK:n. */ gtk_init(&argc;, &argv;); /* Luo uuden ikkunan ja asettaa sille otsikon. */ GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL); gtk_window_set_title(GTK_WINDOW(window), "Hello World"); /* Asettaa ikkunalle 60 pikseliä leveän marginaalin reunoille. */ gtk_container_set_border_width(GTK_CONTAINER(window), 60); /* Luo tekstin "Hello World" ja liittää sen ikkunaan. */ GtkWidget* label = gtk_label_new("Hello, world!"); gtk_container_add(GTK_CONTAINER(window), label); /* Yhdistää ikkunansulkemisviesti pääsilmukan lopettamiseen niin, että * ohjelma sammuu kun ikkuna suljetaan. */ g_signal_connect(window, "destroy", G_CALLBACK(gtk_main_quit), NULL); /* Näyttää ikkunan ja sen sisällön. */ gtk_widget_show_all(window); /* Siirtyy suorittamaan pääsilmukkaa. */ gtk_main(); return 0; } Esimerkkiohjelman voi kääntää GCC-kääntäjällä komennolla `gcc -Wall helloworld.c -o helloworld $(pkg-config --cflags --libs gtk+-2.0)` ja suorittaa tämän jälkeen `./helloworld` -komennolla. Lopputulos näkyy oheisessa kuvassa. == Käyttö == GTK:ta on käytetty pohjana monissa graafisissa ympäristöissä ja niiden ohjelmissa. Sitä käyttäviä työpöytäympäristöjä ovat muun muassa GNOME, Xfce ja ROX Desktop. Lisäksi se on käytössä esimerkiksi Nokian kämmentietokoneille suunnatussa Maemo- kehitysalustassa sekä OLPC-projektin Sugar-käyttöliittymässä. Käytössä olevan työpöydän tai alustan ei kuitenkaan tarvitse perustua GTK:hon, jotta sitä hyödyntäviä ohjelmia voisi käyttää; riittää, että järjestelmä sisältää tarvittavat kirjastotiedostot. Tästä syystä GTK onkin käytössä myös useissa monella käyttöjärjestelmällä toimivissa ohjelmissa. Yleisiä GTK:ta käyttäviä ohjelmia ovat muun muassa Abiword, Mozilla Firefoxin Linux-versio, GIMP, Inkscape ja Pidgin. == Katso myös == * Qt * Motif == Lähteet == * * === Viitteet === == Aiheesta muualla == * GTK:n viralliset sivut * GTK Linux.fi- wikissä === Käyttö ohjelmoinnissa === * GTK+ 2.0 -tutoriaali Luokka:GTK+ Luokka:Unix Luokka:Käyttöliittymäkirjastot Luokka:GNU