Ingénierie des Interfaces Homme-Machine - TD 4



A. Boîte de saisie

1. Ecrire à l'aide des widgets toplevel, label, entry et button un script Tcl qui permette d'afficher une boîte de dialogue avec un message, une zone de texte et les boutons OK et Annuler. Lorsque l'on clique OK, le script affiche le texte entré dans la zone de saisie.

2. Modifier le script de la question 1 pour en faire une procédure qui utilise les commandes d'interaction modale de Tk (grab et tkwait) afin que la procédure retourne comme valeur le texte entré dans la zone de saisie, ou la chaîne vide si l'utilisateur clique Annuler.

3. Utiliser la commande bind pour faire en sorte que la touche Return ait le même effet que de cliquer sur le bouton OK. Utiliser les commandes bind et bindtags pour faire en sorte que le bouton OK ne soit pas actif quand la zone de saisie de texte est vide.



B. Saisie de tracés et de texte

1. Utiliser le widget canvas pour faire une zone de saisie de tracés permettant d'utiliser la souris comme un stylo électronique. Au fur et à mesure de la saisie de tracé, créer des items de type ligne pour chaque déplacement de la souris. A la fin du tracé (relâchement du bouton), remplacer ces items par un seul item polyligne.

2. Modifier le script de la question 1 pour permettre le déplacement d'une trace lorsque l'on clique dessus. Afin de fournir un bon feed-back à l'utilisateur, faire en sorte que la trace sous le curseur soit mise en évidence, par exemple en la rendant plus épaisse lorsque le curseur est dessus.

3. Ajouter au script de la question 2 la possibilité d'entrer du texte librement au clavier : un click sur le canvas crée un item texte vide et positionne le point d'insertion dessus ; un click sur un item texte existant positionne le point d'insertion dans cet item à la position de la souris. Lorsque l'on tape des caractères, ceux-ci s'insèrent au point d'insertion.

4. Utiliser les fonctions MarkIsLine et MarkIsFlick du fichier marks.tcl pour permettre de détruire un item texte en le rayant horizontalement.

5. Ecrire une nouvelle version du script en utilisant des machines à états au lieu des liaisons explicites d'événements avec "bind".