Programmation GTK/Bien débuter
Installation
modifierLa première chose à faire est, bien sûr, de récupérer les sources de GTK+ et de les installer. Vous pouvez en obtenir la dernière version :
- Linux sur ftp://ftp.gnome.org/pub/gnome/sources/gtk+/. GTK+ utilise autoconf de GNU pour se configurer. Lorsque vous aurez décompressé l'archive TAR, tapez ./configure --help pour consulter la liste des options.
- Windows sur http://sourceforge.net/userapps/mediawiki/alex-sh/index.php?title=Downloads.
D'autres sources d'informations se trouvent sur http://www.gtk.org/.
Premier programme
modifierPour commencer notre introduction à GTK+, nous débuterons avec le programme le plus simple qui soit. Celui-ci créera une fenêtre de 200x200 pixels et ne pourra se terminer qu'en le tuant à partir du shell.
#include <gtk/gtk.h>
int main (int argc, char *argv[])
{
GtkWidget *window;
gtk_init (&argc, &argv);
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_show (window);
gtk_main ();
return 0;
}
Vous pouvez compiler le programme ci-dessus à l'aide de la commande :
gcc base.c -o base `pkg-config --cflags --libs gtk+-2.0`
Il s'agit bien du caractère ` et non pas '.
Les explications concernant les options inhabituelles de compilation seront abordées dans Compilation de Bonjour tout le monde.
Tous les programmes incluront évidemment le fichier gtk/gtk.h qui déclare les variables, fonctions, structures, etc. qui seront utilisées par votre application GTK.
La ligne :
gtk_init (&argc, &argv);
appelle la fonction gtk_init(gint *argc, gchar ***argv) qui sera appelée dans toutes les applications GTK+. Cette fonction configure certaines choses pour nous, comme l'aspect visuel et les couleurs par défaut, puis appelle gdk_init(gint *argc, gchar ***argv). Cette dernière initialise la bibliothèque pour qu'elle puisse être utilisée, configure les gestionnaires de signaux par défaut et vérifie les paramètres passés à notre application via la ligne de commande en recherchant l'un des suivants :
* --display * --debug-level * --no-xshm * --sync * --show-events * --no-show-events
Elle les supprime alors de la liste des paramètres, en laissant tout ce qu'elle ne reconnaît pas pour que notre application l'analyse ou l'ignore. Ceci crée un ensemble de paramètres standards acceptés par toutes les applications GTK+.
Les deux lignes de code suivantes créent et affichent une fenêtre.
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
gtk_widget_show (window);
Le paramètre GTK_WINDOW_TOPLEVEL précise que l'on veut que la fenêtre créée suive l'aspect et le placement définis par le gestionnaire de fenêtres. Plutôt que de créer une fenêtre de 0x0, une fenêtre sans fenêtre fille est de 200x200 par défaut : on peut ainsi la manipuler facilement.
La fonction gtk_widget_show() informe GTK que l'on a configuré le widget et qu'il peut l'afficher.
La ligne suivante lance la boucle principale de traitement de GTK.
gtk_main ();
gtk_main() est un autre appel que vous verrez dans toute application GTK. Lorsque le contrôle atteint ce point, GTK+ se met en attente d'événements X (clic sur un bouton, ou appui d'une touche, par exemple), de délais écoulés (timeouts) ou d'entrées-sorties fichier. Dans notre exemple simple, cependant, les événements sont ignorés.