Tutoriál: první program v GTK s použitím glade XML
GTK je dnes jedním z nejčastěji používaných nástrojů pro vytváření grafických aplikací pod Linuxem. My se podíváme na úplně nejzákladnější program, který snad usnadní bolestné první kroky s GTK.
Preferovaný způsob tvorby grafických rozhraní je pomocí kreslícího nástroje Glade. Ten jako výstup vytvoří XML soubor s příponou glade. Tento soubor následně otevřeme ve svém C kódu a načteme z něj veškerou grafiku.
/* tutorial.c */ #include <gtk/gtk.h> #include <glade/glade-init.h> #include <glade/glade-xml.h> void destroy_handler (GtkWidget *ignored, gpointer happily_ignored) { gtk_main_quit(); } int main( int argc, char *argv[]) { GtkWidget *window; GladeXML *xml; gtk_init(&argc, &argv); glade_init(); xml = glade_xml_new("tutorial.glade", "window1", NULL); window = glade_xml_get_widget (xml, "window1"); gtk_signal_connect (GTK_OBJECT (window), "destroy", GTK_SIGNAL_FUNC (destroy_handler), NULL); gtk_widget_show(window); gtk_main(); return 0; }
Kód je dost samopopisný. Nejdříve vložíme hlavičkové soubory. Následuje definice handleru, který se zavolá při události destroy (zavření okna). V hlavní funkci main je inicializováno gtk a také glade. Pak už načteme samotný glade XML soubor a vytáhmeme si z něj jeden widget - window, tedy hlavní okno. Propojíme událost destroy s handlerem. Zobrazíme okno a nakonec spustíme hlavní nekonečnou smyčku. Ta je ukončena až při volání funkce gtk_main_quit.
Kompilace
Program můžeme zkompilovat buď přímo:
gcc -Wall -pedantic -o tutorial tutorial.c `pkg-config --libs --cflags gtk+-2.0 libglade-2.0`
a nebo pomocí Makefilu (příkaz make):
CC = gcc CFLAGS = -Wall -pedantic LIBS = `pkg-config --libs --cflags gtk+-2.0 libglade-2.0` all: tutorial tutorial: tutorial.c $(CC) $(CFLAGS) $@.c $(LIBS) -o $@ clean: -rm tutorial