next up previous
Next: XWindow Up: Référence rapide sur WindowTools Previous: Référence rapide sur WindowTools

WindowTools

Windowtools est un progicielgif destiné à faciliter la construction d'interfaces graphiques pour les programmes écrits en Simula. Windowtools utilise X, un protocole d'interaction graphique largement répandu dans le monde UNIX qui normalise l'encodage des actions de l'usager comme le "clickage" d'une souris ou l'appui sur une touche du clavier et qui fournit aussi un certain nombre de primitives graphiques pour le dessin de lignes, de rectangles et de cercles de diverses couleurs. Par contre, ce que X ne fait pas, c'est implanter (imposer ?) le comportement des éléments graphiques. Si on veut avoir des fenêtres d'édition de texte ou des menus déroulants, il faut ajouter une couche de logiciel entre X et l'usager. Dans la parlance de X, cette couche est appelée un "Toolkit" et Motif en est l'exemple le plus connu. Si la programmation graphique a été normalisée et simplifiée par l'emploi de X et de Motif, elle reste relativement complexe à cause du grand nombre de paramètres et d'objets fournis afin de répondre au plus grande nombre d'applications.

Windowtools est un "toolkit" comme Motif dont l'objectif est de faciliter le plus possible la création d'interface du style Mac/Windows. Pour ce faire, Windowtools utilise la programmation par objet. Le comportement par défaut des objets implantés est celui auquel les usagers modernes sont habitués: nous avons sacrifié la flexibilité à la simplicité. Dans la majorité des cas, les objets fournis peuvent être utilisés tels quels et il est donc possible de mettre en oeuvre une interface GUIgif professionnelle avec peu d'efforts. Effectivement, pour faire apparaître une fenêtre affichant ``Hello World'' à l'écran, il suffit d'une dizaine de lignes avec WindowTools au lieu de plusieurs pages avec X (c.f helloworld gif).

Windowtools est l'oeuvre de B. Kirkerud qui a travaillé dessus depuis plusieurs années. En 1995, ce logiciel a été installé au DIRO et il a servi pour les TP de ift1020. Entre temps, il a subit une première révision par J. Vaucher. Durant l'été 1995, Charles De Léan (sous la direction du prof. Vaucher) a soumis Windowtools à une phase de vérification intensive, d'extension et de réécriture.

Le document quit suit vise les programmeurs qui se servent de WindowTools pour créer des interfaces graphiques. Son but est de présenter rapidement les differéntes classes (ainsi que leurs fonctions) qui peuvent leur être utiles. Un développeur éventuel pourrait avoir besoin de plus d'information, voir à lire le code source. Pour d'autres informations, vous pouvez explorer le site ftp ftp.ifi.uio.no dans le rpertoire /pub/simulatools. Mais de façon plus simple, vous pouvez explorer le répertoire  vaucher/simulatools sur le réseau JSP.

Windowtools contient une grande varieté de classes. La majorité d'entre elles sont des classes de fenêtres dont nous discuterons plus loin. Sinon, il y a quelques classes à part. La plus importante d'entre elles est XDisplay. C'est la classe d'un objet qui gère les messages (venant du clavier ou de la souris par exemple) et les ressources (fontes et curseurs par exemple). Il ne doit y avoir qu'un seule instance de cet objet dans le programme. Cette instance sera mentionné dans ce document sous le nom de ``display''. Pour s'assurer de l'unicité d'un tel objet, nous introduisons deux fenêtres spéciales qui seront les fenêtres principales dans le programme. Ces fenêtres créent le display, et donc, il faut en faire une et une seule (c.f MainWindow gif et SimpleWindow gif) au tout début du programme.

Les ressources, gérées par le display, sont définies par plusieurs classes. Les fontes sont définies par XFont (c.f gif), les curseurs le sont par la classe Cursor (c.f gif), les bitmaps et pixmaps (très utiles pour simuler de la couleur) par Bitmap et PixMap (c.f gif), et les requêtes d'alarmes ainsi que les messages internes, par alarm_request et own_event (c.f gif).

Chaque fenêtre possède un objet très utile pour ses fonctions graphiques. C'est le contexte graphique (graphic context), défini par la classe XGraphicalContext. C'est un objet contenant des paramètres servant aux fonctions graphiques. Ces paramètres peuvent être modifiés par plusieurs fonctions (c.f gif).

Passons maintenant aux fenêtres. On peut dire qu'il existe trois types de fenêtres :

Les classes utiles pour fabriquer les fenêtres de WindowTools ne sont pas toutes décrites ici. Certaines classes ont été volontairement omises car elles ne risquent pas d'être utiles à un programmeur. Ces classes omises sont

Voici la hiérarchie des fenêtres dont nous discuterons.

Hiérarchie des classes de fenêtres

XWindow 
  |---MainWindow 
  |     |---SideWindow 
  |     |     |---GraphPage 
  |     |     |---PopupWindow 
  |     |     |     |---PopupMenu 
  |     |---SimpleWindow  
  |---Subwindow 
        |---Button  
        |     |---FancyButton
        |     |---MenuButton
        |---DrawWindow 
        |     |---GraphWindow 
        |---InputWindow 
        |     |---ItemWindow  
        |     |     |---BoolItemWindow 
        |     |     |---CharItemWindow 
        |     |     |---IntItemWindow 
        |     |     |---ReallItemWindow 
        |     |     |---TextItemWindow 
        |     |---ListWindow 
        |           |---SelectionListWindow
        |---MessageWindow 
        |---ParameterList 
        |---ParameterMenu 
        |---ParameterWindow 
        |     |---BoolParameter 
        |     |---CharParameter 
        |     |---IntParameter 
        |     |---RealParameter 
        |     |---TextParameter 
        |---PromptWindow 
        |---RadioPanel 
        |---ScrollWindow 
              |---MenuScrollWindow
                    |-DirectoryMenu


next up previous
Next: XWindow Up: Référence rapide sur WindowTools Previous: Référence rapide sur WindowTools

CARRIER Benoit
Sun Feb 18 21:57:20 EST 1996