Ircam - Centre Georges-Pompidou Équipe Analyse/Synthèse

previous up next
Suivant: Syntaxe Plan: Utilisation des Resources dans Précédent: Utilisation des Resources dans
Break

Généralités

Les widgets et les applications peuvent déclarer toutes leurs variables comme resources. Dans la pratique, seules celles ayant besoin de valeurs entrées par l'utilisateur seront définies en resources (comme les configurations de fenêtres par exemple).
La bibliothèque Xt permet de définir les resources en utilisant une structure XtResource déclarée comme suit:

typedef struct {
    String resource_name;       /* specifiee par le symbole XmN   */
    String resource_class;      /* specifiee par le symbole XmC   */
    String resource_type;       /* type de la variable actuelle   */
    Cardinal resource_size;     /* taille determinee par sizeof() */
    Cardinal resource_offset;   /* determinee par XtOffsetOf()    */
    String default_type;        /* valeur immediate ou fonction   */
    XtPointer default_address;  /* adr. de la valeur par defaut   */
} XtResource, *XtResourceList;

Pour utiliser des resources dans des widgets existants, il suffit d'écrire un fichier de resources.
Normalement, ce fichier se trouve dans le répertoire /usr/lib/X11/app-defaults et a pour nom le même que l'argument classname de XtVaAppInitialize(). Par convention, ce nom est le même que celui de l'application, avec la première lettre en majuscule. Si l'application commence par X, les deux premières lettres seront en majuscules. Par exemple pour xclock, ce serait XClock.

La gestion des resources s'effectuent en plusieurs étapes :

  1. Au démarrage de l'application, par un appel XtAppInitialize, la bibliothèque Xt lit les fichiers de resources, que ce soit .Xdefaults ou un fichier utilisateur tel que xspect.ad (en utilisant le programme xrdb). Puis, Xt les fusionne dans une seule base interne au programme qui sera utilisée à chaque création de widget.
  2. Si aucun fichier de resources n'est utilisé (c.-à-d. qu'on ne s'est pas servi de xrdb avant de lancer le programme), alors la base de resources est remplie par les resources codées en ``dur'' : c'est le champ fallback_resources (pointeur sur un tableau XtResourceList).
  3. Quand on crée un widget, l'appel à XtVaCreateManagedWidget() lit la base de resources et affecte automatiquement les resources des widgets aux valeurs contenues dans la base.

Note:

Break previous up next
Suivant: Syntaxe Plan: Utilisation des Resources dans Précédent: Utilisation des Resources dans