Chaque ressource d'un widget possède une valeur par défaut déterminée par sa classe. Il est cependant possible de modifier cette valeur par défaut et/ou rendre la ressource configurable par l'utilisateur.
Prenons l'exemple du bouton poussoir du cours précédent (le programme push.c).
#include <Xm/Xm.h>
#include <Xm/PushB.h>
/*--------------------------*/
main(int argc, char **argv)
/*--------------------------*/
{
Widget top_wid, button;
XtAppContext app;
void pushed_fn();
top_wid = XtVaAppInitialize(&app, "Push", NULL, 0,
&argc, argv, NULL, NULL);
button = XmCreatePushButton(top_wid, "Push_me", NULL, 0);
/* On dit à Xt de manager le bouton */
XtManageChild(button);
/* On attache un CallBack au bouton */
XtAddCallback(button, XmNactivateCallback, activateCB, NULL);
/* Affichage de la fenêtre principale (top_wid) et de tous ses enfants */
XtRealizeWidget(top_wid);
/* boucle de gestion des événements */
XtAppMainLoop(app);
}
/*----------------------------------------------*/
void activateCB(Widget w, XtPointer client_data,
XmPushButtonCallbackStruct *cbs)
/*----------------------------------------------*/
{
printf("Don't Push Me!!\n");
}
Dans ce programme, la chaîne de caractère affichée dans le bouton est égale à "Push_me", car par défaut, dans le cas d'un bouton poussoir, le label est égal au nom du widget. ATTENTION: ceci n'est vrai que dans le cas des widgets appartenant à la classe Label, et n'est pas vérifié en ce qui concerne les autres ressources de notre bouton poussoir.
Xt propose un système très pratique pour spécifier des valeurs par défaut aux ressources utilisées par les widgets d'une application: les fichiers de ressources par défaut, que l'on trouve dans le répertoire /usr/lib/X11/app-defaults (sous Unix).
Le fichier de ressources par défaut d'une application devra être égal au nom de la classe de l'application, deuxième paramètre de la fonction XtVaAppInitialize(). Dans notre exemple, le fichier devra s'appeler Push.
Par convention, la classe d'une application sera égale au nom de l'application, mais avec la première lettre en majuscule. Si l'application commence par un X, on capitalisera les deux premières lettres (voilà pourquoi le fichier de ressources de l'application xterm s'appelle XTerm).