Le but de cet ensemble de fonctions est de fournir un ensemble de routines qui permette la réalisation d'une interface graphique réutilisable directement avec différents environnements graphiques.

Actuellement, elle existe sous GEM et sous X-Window ; elle est en cours de réalisation sous Windows et sous MacOS.

Le principe de fonctionnement a été choisi assez proche de celui de l'AES et de la VDI. Il est supposé dans la suite que vous avez de bonnes connaissances de la programmation de la VDI.

La bibliothèque contient des routines pour la gestion des fenêtres et la gestion des boîtes de dialogue, si possible de façon la plus automatisée possible. Pour la partie dessin, le principe est celui de la VDI.

Dans tout ce qui suit, la description des fonctions est faite avec les conventions du langage C.

Sommaire

  1. Généralités
  2. Initialisation de la bibliothèque
  3. Gestion des fenêtres
  4. Gestion des boîtes de dialogue au niveau de l'objet
  5. Gestion générique des boîtes de dialogue
  6. Paramétrage de la bibliothèque
  7. Terminer un programme
Les versions GEM et X-Window, et la coordination du projet, ont été réalisées par Emmanuel CURIS. La version Windows est réalisée par Christophe CURIS. La version MacOS est réalisée par Ioannis NICOLIS. En cas de problème, n'hésitez pas à contacter le responsable du projet : curis@lure.u-psud.fr

Généralités

Dans sa forme actuelle, la bibliothèque se présente comme un ensemble de fichiers C à recompiler ; ces fichiers sont à ajouter aux fichiers de votre programme.

Pour pouvoir utiliser la bibliothèque, il faut inclure un seul fichier, qui s'appelle Bib_sys.h, où sys représente le système que vous utilisez, soit actuellement :

Bib_X.h       Version X-Window de la bibliothèque (X11R6, peut-être R5)
Bib_GEM.h     Version GEM (AES, VDI) de la bibliothèque

Ce fichier se charge d'inclure les différents fichiers système nécessaires (par exemple aes.h sous TOS, X11/X.h sous X-Window,...) ; il inclut aussi tous les fichiers de déclaration des fonctions de la bibliothèque (fichiers sys_*.h). Le dossier contenant ces fichiers doit donc être indiqué parmi les différents dossier de recherche des fichiers d'inclusion.

La bibliothèque définit le type boolean, qui peut prendre les valeurs VRAI (1) ou FAUX (0), mais aussi quelques valeurs spéciales pour indiquer des actions particulières - qui seront détaillées dans la suite.

La bibliothèque utilise trois entités de base (structures) pour travailler avec l'interface graphique : la fenêtre (structure Fenetre), l'arbre (structure Arbre, décrivant une boîte de dialogue) et la station graphique (structure Station_VDI). Une fenêtre regroupe les caractéristiques de la fenêtre dans le système considéré, les fonctions à utiliser pour traiter ce qui se passe dans une fenêtre et divers paramètres pour ce traitement. Un arbre regroupe un ensemble d'objets ordonnés (agencement calqué sur celui de l'AES), les informations pour l'utiliser dans l'environnement utilisé, les fonctions de gestion de la boîte de dialogue et divers paramètres pour faciliter le traitement.

Lors du développement du programme, il peut être intéressant (surtout sous environnement de type UNIX) de définir le symbole _DEVELOPPE_, ce qui entraîne l'affichage de messages de diagnostic en cas de problème.

Notes sur la version X-Window

Pour permettre un codage simple des accents, qui peut varier d'une machine UNIX à une autre (bien que généralement le ISO-latin-1 soit utilisé), la bibliothèque utilise pour ses messages une série de définitions de la forme :

#define e_AIGU "é"
#define E_AIGU "É"
Ces définitions se trouvent dans le fichier latin_1.h, pour le jeu ISO-Latin-1 ; si vous voulez un autre type de codage, il suffit d'inclure avant le fichier Bib_X.h un fichier qui redéfinisse ces codes (la vérification est faite sur l'existence ou non du symbole e_AIGU).

Pour utiliser ces codes dans vos programmes, il suffit de remplacer une chaîne de la forme "éléphant" par la séquence e_AIGU"l"e_AIGU"phant".


Bien qu'X-Window n'existe pas que pour unix, la version actuelle de la bibliothèque est très orientée unix. Cela joue principalement pour la gestion du sélecteur de fichiers, mais aussi dans la détection des événements (utilisation de timers pour la détection des doubles clics).

Si quelqu'un réalise une adaptation sous un autre type de X-Window, en particulier sous VMS, merci de me le faire savoir.