next up previous
Next: Utilisation dans Xspect Up: Généralités Previous: Actions

Translations

La table des translations permet de déterminer à quels widgets les actions sont destinés et lesquels vont les déclencher.
Bien sur, la librairie Xt comporte les fonctions pour charger cette table : ce sont XtParseTranslationTable, XtAugmentTranslation, et XtOverrideTranslation.
Fragment de code montrant la déclaration des tranlations :

    static char defaultTranslations[]=
           ``<Btn1Down> : set()\n\
             <Btn2Down>, <Btn2Up> : quit()'';

    XtTranslations myTranslations;
    ...

    myTranslation = XtParseTranslationTable(defaultTranslation);
    XtOverrideTranslations(farewell,myTranslations);

On remarquera que la table des translations (defaultTranslations) est définie en tant que chaîne de caractères et peut donc se trouver dans un fichier de resources. L'utilisation du fichier de resources est avantageux au départ car il permet de modifier cette table sans devoir recompiler tout le programme.
En pratique, certaines parties de la table des translations seront codées en ``dur'' dans le programme pour définir certains comportements qui ne seront pas modifiables par l'utilisateur. En revanche, d'autres parties de la table des translations seront insérées dans un fichier de resources pour permettre à l'utilisateur de personaliser les comportements du logiciel à sa manière.

Voici un exemple montrant une partie du fichier de resources d'une application où l'on définit une table de translations :

*XmPrimitive.baseTranslations:\
    <Expose>:  RedrawSmallPicture()

On notera que puisque les fichiers de resources sont des chaînes de caractères, nous n'avons pas besoin de guillemets. Néanmoins, pour les tables de translations comportants plusieurs lignes, nous devons terminer chaque ligne par \n\.
La resource affectée ici est baseTranslations (nouveau dans R5). Cette resource a le même nom pour tous les widgets. Comme le fichier de resources est constitué exclusivement de chaînes de caractères, Xt affecte donc la table des translations avec les données du fichier de resources en passant par un convertisseur de resuurce. Ce convertisseur appelle la fonction XtParseTranslationTable() pour nous quand nous spécifions les translations dans un fichier de resources.



Gauthier Lebrun
Thu Apr 17 17:36:31 MET DST 1997