Ouvrez vos fenêtres... sans attraper des boutons

par Anne Possoz, SIC-Logiciels, possoz@sic.epfl.ch

Table des matières


Introduction

Tcl et Tk constituent un environnement de programmation pour développer et utiliser des applications avec interface graphique, ces GUI [Graphical User Interface] qui font aujourd'hui partie de notre quotidien. Ainsi disparaît le souci de devoir écrire des appels compliqués aux librairies X ou Motif.

D'où vient la chose?

Tcl et Tk sont originaires de l'Université de Californie, Berkeley, grâce aux efforts de John Ousterhout.

D'où viennent les mots?

Tcl [Tool Command Language; prononcez tickle], est un langage de programmation de procédures (scripts) avec un interpréteur de commandes.
Tk [Toolkit; prononcez tee-kay] est la boîte à outils pour XWindow.

Comment?

Tcl est basé sur une librairie de commandes écrites en C, appelée le noyau Tcl.
Tk contient les extensions des facilités de base de Tcl pour construire les interfaces graphiques (GUI). On peut ainsi construire des applications graphiques (d'aspect Motif) à l'aide de scripts de haut niveau au lieu de code C contenant des appels de bas niveau.
Tcl seul n'aurait pas d'intérêt car ce ne serait qu'un autre langage de commande. Il est fait pour fonctionner avec d'autres applications qui auront leurs propres commandes Tcl en plus de celles du noyau proprement dit. Tk est certainement l'extension de Tcl la plus intéressante.

Avantages

Tcl est un puissant langage de programmation de scripts avec interpréteur de commandes. Sa force est aussi son extensibilité. Au noyau de commandes Tcl, l'utilisateur peut ajouter les commandes qu'il veut (écrites en C et compilées) et que Tcl interprétera.
L'ensemble Tcl/Tk permet un développement rapide. Beaucoup d'applications de fenêtrage peuvent être écrites entièrement comme des scripts Tcl/Tk (sans aucun code C), qui sont interprétées par wish [windowing shell]. Plus besoin d'apprendre les appels de bas niveau à Xt ou Motif, Tk contenant déjà des commandes qui permettent de construire des boutons, des menus, des figures géométriques, des barres de défilement, des fenêtres...
Comme il s'agit d'interpréteurs de commandes, on génère et exécute le code en même temps, visualisant immédiatement ce que l'on fait, pas à pas, ce qui simplifie grandement la construction des applications. Bien sûr, interprété veut aussi dire plus lent, mais la puissance des stations de travail actuelles le permet. Tcl est très fonctionnel pour faire communiquer entre elles des applications basées sur Tk, par l'intermédiaire de scripts Tcl.
Enfin, Tcl/Tk étant du domaine public, ces outils sont gratuits et en rapide développement comme tout ce qui est du domaine public. De plus, la communauté des utilisateurs met à disposition des codes basés sur Tcl/Tk et qui peuvent être d'un intérêt pour d'autres. J'en mentionnerai quelques uns, dont le plus utile pour les constructeurs d'applications graphiques est certainement XF.
Et si l'on pense à la portabilité, quel confort! On écrit son application sur n'importe quelle plate-forme et elle tournera sur toutes les autres plates-formes, pour autant que Tcl et Tk y soient disponibles.

Tcl et Tk à L'EPFL

Installation

Demandez au manager de votre station de faire un lien (ou mieux, une copie locale) entre /net/nestor/distribution/public/tcl/type_de_machine et /logiciels/public/tcl. La copie locale, au moins au niveau du serveur de département, est nettement préférable si on souhaite avoir un temps de réponse correct et ne pas surcharger le trafic nfs avec Nestor.

Utilisation

Ajoutez dans votre PATH /logiciels/public/tcl/bin et dans votre MANPATH /logiciels/public/tcl/man

Les premiers pas

Tcl

Invoquez tclsh (l'interpréteur de commandes de Tcl) qui va démarrer en mode interactif, lire des commandes Tcl depuis le standard input et les transmettre à l'interpréteur pour évaluation. Par exemple, la commande
expr 2 + 2
donnera 4 comme résultat et attendra une nouvelle commande.
=> 4
Chaque commande consiste en un ou plusieurs mots séparés par des blancs ou des tabulations. Le premier mot de chaque commande est son nom : le nom sélectionne une procédure C qui va exécuter la fonction de la commande. Les mots suivants sont les arguments qui sont passés à la procédure C; ils sont concaténés en une seule chaîne de caractères.
La commande Tcl rendra comme résultat une chaîne de caractère c'est-à-dire que dans notre exemple, 4 est une chaîne de caractères.
D'autres exemples simples:
expr 14.1*6
=> 84.6
qui illustre le mélange d'entiers et de flottants;
expr (3>4) || (6<=7)
=> 1
expr (3>4) & (6<=7)
=> 0
qui illustrent les opérateurs logiques ou (||) et et (&),
expr 3 << 2
=> 12
qui illustre l'opérateur de déplacement de bits vers la gauche (<<),
exit
pour sortir de tclsh.

Tk et wish

L'interpréteur de commandes de Tcl/Tk est l'application wish. Si vous invoquez wish au clavier puis tapez:
button .b -text ³Bonjour à tous!² ­command exit
pack .b
vous obtiendrez le résultat suivant:

et en cliquant sur Bonjour à tous! la fenêtre disparaîtra.
Ce qui a été fait est simple. On a passé une commande button avec comme arguments:
.b: le nom de la fenêtre
-text ³Bonjour à tous!²: le texte souhaité
-command exit: la commande à exécuter si on clique sur le bouton
Ensuite, la commande
pack .b: dit au packer, le manager géométrique, d'ajuster la fenêtre précédemment définie.

Scripts

Au lieu de taper les commandes interactivement, il est possible de faire un fichier de commandes (script). Reprenant l'exemple précédent, un fichier hello contenant les lignes:
#!/logiciels/public/tcl/wish -f
button .b -text ³Bonjour à tous!² -command exit
pack .b
donnera, si l'on exécute hello, le résultat suivant:

Quelques pas plus loin

Un nombre sans cesse croissant d'applications écrites en Tcl/Tk sont disponibles. Certaines peuvent intéresser plusieurs utilisateurs, d'autres sont plus exotiques ou à leurs premiers balbutiements. A ce jour, nous n'en avons sélectionné que quelques unes qui pourraient vous intéresser.

wtour

Pour faire un tour d'horizon des possibilités graphiques de Tk et des commandes correspondantes, une application de démonstration est disponible: wtour. Tapez simplement wtour au clavier, laissez-vous guider et admirez.
Ceux qui ont déjà écrit du code avec des appels aux routines de Xt ou Xm apprécieront la simplicité de ces quelques commandes.

Tkman

Chacun a ses habitudes pour lire les man-pages de unix. Mais pour certains, l'absence de facilité de recherche d'un mot dans un long man-page est une lacune. Ceci est résolu avec tkman qui offre aussi d'autres possibilités.
Pour appeler tkman, invoquez simplement la commande tkman. Un bref résumé des avantages qu'il peut procurer:
sélection possible des paths dans lesquels on veut faire la recherche; recherche de man avec complétion; par exemple tcl* donnera la liste de tous les mans qui commencent par tcl; possibilité de recherche d'un mot à travers le contenu d'un man-page; chaque man-page est en fait un document hypertext, ce qui fait qu'en cliquant 2 fois sur un mot qui correspond à un autre man, celui-ci sera directement ouvert.

XF

Pour ceux qui vont construire l'interface graphique d'une application et qui ont choisi d'utiliser Tcl/Tk, XF est l'outil qu'ils recherchent. C'est un constructeur d'interface graphique (GUIBuilder); un équivalent du domaine public d'outils tels que Architect (uimx), xdesigner, OpenInterface,... qui eux s'achètent.
Avec XF, il est possible de construire son application graphique sans devoir soi-même faire les appels à Tk. En effet, un grand nombre de boutons, fenêtres, menus, procédures, etc. sont déjà prédéfinis, et le rôle de l'utilisateur n'est plus que de faire les liens entre les différentes fenêtres, les positionner, définir les actions correspondant aux différents boutons, etc.

Sur la droite de la fenêtre XF, j'ai détaché, en haut, le menu Configuration et, en bas, le menu Programming.
XF est lui-même construit sur Tcl/Tk à l'aide de wish. Rappelant que les commandes sont ici interprétées, l'utilisateur visualise immédiatement ce qu'il construit et le teste en même temps. Construire une application graphique en Wysiwyg, quel confort!
Pour les débutants, il est certainement conseillé d'exécuter le Tutorial, sous le menu Help.

Autres

Il existe une foule d'autres applications basées sur Tcl/Tk. On pourra en trouver la liste par Mosaic (voir plus loin, sous documentation). A titre d'exemple, je pourrais citer: tknews, tkmail, tkWWW, etc. Ces applications ne sont pas aujourd'hui installées à l'EPFL.

Documentation

Les fichiers postscript

Dans le répertoire /logiciels/public/tcl/doc vous trouverez différents fichiers .ps. Ces fichiers sont gros! Faites attention si vous souhaitez les imprimer.
Les quatre fichiers book.px.ps sont les quatre parties (sous forme préliminaire) d'un livre qui doit sortir prochainement. Ce livre est écrit par John Ousterhout, l'auteur de Tcl/Tk, et explique Tcl et Tk en détail. Attention à respecter le Copyright au début du livre.
Le fichier xf-doc.ps contient la documentation de XF.

La documentation en ligne

Il est possible d'accéder à la documentation de Tcl et Tk: soit avec tkman ou votre outil favori soit directement sous le Help de XF

Mosaic

Bien sûr, vous devez consulter Mosaic (voir Flash Informatique de février) pour une information sans cesse remise à jour et avec accès aux autres serveurs. Tcl est mentionné dans la liste des logiciels de l'EPFL. Nous y ajouterons d'autres pointeurs. Et sur le serveur
http://www.sco.com/IXI/of_interest/tcl/Tcl.html
vous trouverez une multitude d'informations qui peuvent vous intéresser.

Conclusion

Vous venez d'approcher ce vaste univers qui gravite autour de Tcl/Tk. N'hésitez pas à me faire part de vos réactions et souhaits. On en reparlera sûrement.

Article paru dans le numéro 3-94 du Flash Informatique