Travaux Pratiques Interfaces Graphiques Master 1

TP2, introduction à la programmation X




But du TP

A travers deux programmes de manipulation de fenêtres, ce TP vise à faire un survol des possibilités du langage Xlib. L'objectif est de comprendre la structure d'un programme X et le fonctionnement des requêtes liées à la gestion d'évènements.



Un programme Xlib réalise en général les opérations suivantes :
Tous les clients X sont construits selon ces principes. On pourra étudier l'exemple suivant du cours window.c, qui ouvre une fenêtre affichant un message lors d'un clic dans la fenêtre. Ainsi que le programme dessine.c  qui ouvre une fenêtre affichant des figures géométriques simples.

Les programmes suivants seront écrits en utilisant ces deux premiers programmes ainsi que la documentation de référence de Xlib qui se trouve ici.
Pour la compilation penser à faire l'édition de liens avec l'option -lX11 :
%gcc -o window window.c -lX11


Une pile de fenêtres

Le programme fen1.c affiche une fenêtre principale et un ensemble de fenêtres-filles. La position des fenêtres-filles les unes par rapport aux autres est donnée par l'ordre de la pile des fenêtres-filles. Par exemple la position de trois fenêtres-filles A, B et C dans une fenêtre racine, où A se trouve au dernier plan et C au premier plan est décrite par la pile (A, B, C).

1) Dans un premier temps créer et ouvrir une fenêtre principale fenetre d'arrière-plan blanc. Créer un tableau de fenêtres-filles  sousfenetre[i], disposées en cascade sur la fenêtre principale, i.e., se chevauchant deux à deux. Afficher les fenêtres-filles.

2) Associer aux boutons de la souris les actions suivantes :
3) Associer les actions suivantes aux touches du clavier :
Indications :
- Pour la position des fenêtres-filles utiliser les requêtes XLowerWindow et XRaiseWindow,
- Utiliser les requêtes XCirculateSubwindowsUp et XCirculateSubwindowsDown pour le défilement dans la pile de fenêtres.
- La fonction XLookupString traduit un évènement du clavier.
- Pour la boucle de traitement des évènements s'inspirer de l'exemple window.c

Coloration et évènements

1) Créer et afficher une fenêtre principale, contenant une grille de fenêtres-filles de couleur de fond blanc et de couleur de bordure noire.

2) La fenêtre principale contient une zone de texte "Position de la sous-fenêtre " affichant les coordonnées (x , y) de la position de la fenêtre de la grille sous laquelle se trouve le pointeur de la souris.

3) Lorsque le pointeur de la souris passe au-dessus d'une fenêtre de la grille, la couleur de fond de la fenêtre devient noir. Lorsque le pointeur quitte la zone de la fenêtre, la fenêtre reprend sa couleur d'origine.

4) [Pour ceux qui ont déjà fini ] Adapter le programme precédent afin de réaliser un jeu de Taquin. Dans une grille 4x4 composée de fenêtres-filles, on représente la case vide par une fenêtre de fond blanc et les cases pleines par des fenêtres de fond noir. Le déplacement des cases pleines dans la grille est simulé par les recolorations induites par les mouvements du pointeur.