Année scolaire 2003-2004
La bibliothèque GTK
Bourg-en-Bresse
Première année
1 Introduction
GTK (The Gimp Toolkit) est une librairie permettant de gérer une interface graphique. Initialement destinée au monde unix et à
X-Window, celle-ci a été portée sous Windows. De nombreux couplages avec des langages ont été faits (comme Perl ou Python).
Des outils de développement d'interface graphique rapide existent. Glade, par exemple permet de générer automatiquement du code
pour le C, Perl ou Python. De nombreux logiciels libres sont construits sur la base de GTK (Gimp, le projet Gnome, Glade, Gnumeric,
Abiword,. . .).
1.1 Mise en ÷uvre sous linux
La dernière version de GTK (GTK+ 2.0) fonctionne avec l'outil pkg-config. Si GTK est bien installé, la commande suivante doit
fonctionner :
$ pkg-config --cflags gtk+-2.0
De même, l'option --libs vous donne les options à inclure pour que les librairies nécessaires à l'édition des liens d'un programme
utilisant GTK fonctionne :
$ pkg-config --libs gtk+-2.0
Ainsi, le Makefile d'un programme utilsant GTK sera du type :
default: programme
programme: programme.o
gcc -Wall -g programme.c -o programme ‘pkg-config --cflags --libs gtk+-2.0‘
Ici, comme il n'y a qu'un code source, on peut compiler et faire l'édition des liens dans la même ligne de commande, d'où la présence
des deux options --cflags et --libs.
1.2 Mise en ÷uvre sous Windows
Vous devez d'abord installer toutes les librairies, ainsi qu'un compilateur adéquate. Je recommande MinGW et l'environnement MSYS
qui fournissent un environnement GNU assez complet.
Le Makefile ressemblera beaucoup à celui sous linux, la seule différence étant que les options -fnative-struct et/ou
-mms-bitfields doivent être activées.
Attention : Les versions des librairies sont différentes pour MinGW, Cygwin où d'autres compilateurs, veillez à bien lire la
documentation.
1.3 Widgets, signaux et évènements
GTK est une librairie d'interfaçage graphique. C'est une surcouche de Glib et GDK. L'interface est composée de Widgets (exemples :
une fenêtre, un bouton, un menu,. . .). Ces objets communiquent avec l'extérieur grâce à des signaux (gérés par Glib). Lorsque
l'utilisateur clique sur un bouton par exemple, le signal correspondant va être émis. Ce signal, s'il n'est pas connecté ne va avoir
aucune influence. Pour le connecter, il faut utiliser la fonction g_signal_connect :
gulong g_signal_connect( gpointer *object,
const gchar *name,
GCallback func,
gpointer func_data );
Le premier argument est l'objet concerné, le deuxième est le nom du signal, le troisième est le pointeur sur la fonction qui doit être
appelée. Le dernier argument concerne des données eventuelles passées à la fonction.
La fonction qui doit être appelée est du type :
void callback_func( GtkWidget *widget,
gpointer callback_data );
Les signaux qui sont liés à l'interfaçage graphique sont appelés évènements (events), ils sont gérés par GDK. En voici la liste :
2/20 15 décembre 2004 Eric Guérin