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