Le fichier app-defaults


Le mécanisme de gestion des ressources d'une application permet de personnaliser les widgets sans avoir a recompiler. Les ressources peuvent être spécifiées à plusieurs endroits: sur la ligne de commande, dans le fichier $HOME/.Xdefaults de l'utilisateur, dans un fichier utilisateur dédié à l'application (par exemple dans le répertoire $HOME/.app-defaults), ou encore dans un fichier de ressources par defaut (dans le répertoire /usr/lib/app-defaults).

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).


michel.buffa@essi.fr