=head1 NOM Tk::option - Utilisation de la base de données option dans Perl/Tk =head1 SYNOPSIS I<$widget>-EB(B=>I, B<-class>=>I); I<$widget>-EB; I<$widget>-EB(I=>I ?,I?); I<$widget>-EB; I<$widget>-EB(I I); I<$widget>-EB(I ?,I?); =head1 DESCRIPTION La base de données option (connue également sous le nom de I ou de I) est un ensemble de règles destinées à appliquer aux widgets les options par défaut. Les utilisateurs et les administrateurs système peuvent se servir de ces règles pour personnaliser l'apparence des applications sans changer une ligne de code des applications ; par exemple, un utilisateur peut mettre en place des couleurs d'avant et d'arrière-plan personnalisées, ou bien un site peut utiliser des polices associées aux préférences visuelles ou de langage. D'autres gestionnaires de fenêtre (et leur implémentation) ont implémenté cette base de données de manière différente, mais la plupart des gestionnaires de fenêtre basés sur Xt utilisent le fichier I<.Xdefaults> ou l'utilitaire I pour gérer les préférences utilisateur ; certains utilisent les deux, et/ou implémentent un ensemble plus complexe de base de données pour le site, l'utilisateur et les applications. Consultez la documentation de votre site sur ces sujets, ou la propriété B de votre gestionnaire de fenêtre. B Pour la plupart des applications, la base de données d'option "fonctionne, tout simplement". Les méthodes B sont faites pour les applications qui ont besoin de faire des choses inusitées, comme ajouter de nouvelles règles ou tester la valeur par défaut d'une option. Même dans de tels cas, l'application doit fournir de quoi gérer les préférences des utilisateurs. Ne codez pas d'options de widget "en dur" sauf si vous avez une excellente raison. Tous les utilisateurs ont leur propre goût et tous sont différents. Ils choisissent une police d'une taille spéciale et ont souvent dépensé beaucoup de temps pour trouver un ensemble de couleurs qu'ils vont aimer toute leur vie. Si vous respectez leurs choix ils aimeront encore davantage travailler avec vos applications. Ne détruisez jamais le 'look and feel' d'un bureau personnel. B Tous les widgets d'une application sont identifiés hiérarchiquement par un I, partant de B et passant par chaque widget utilisé pour arriver au point final. Les éléments du chemin sont les I, un peu comme les éléments d'un chemin de fichier partant du répertoire racine vers un fichier. Dans la base de données d'option, les règles sont des motifs qui sont comparés à un I de widget pour déterminer le défaut à appliquer. Lors de la création d'un widget, l'option B peut être utilisée pour assigner le nom du widget et ainsi créer un chemin distinct pour les widgets de l'application. Si l'option B n'est pas donnée, Perl/Tk assigne un nom par défaut basé sur le type de widget ; le nom par défaut d'une B est le B. Ces défauts sont corrects pour la plupart des widgets, aussi ne pensez pas que vous devez créer un nom rempli de sens pour chaque widget que vous créez. Un widget doit avoir un nom distinct afin de permettre à l'utilisateur d'adapter ses options indépendamment des autres widgets de l'application. Par exemple, pour créer un widget B avec des options spéciales propres à lui, donnez-lui un nom tel que : $text = $mw->Text(Name => 'importantText'); Vous pouvez alors adapter les attributs du widget avec une règle de la base de données d'option telle que : *importantText*foreground: red L'attribut de I identifie des groupes de widgets, habituellement à l'intérieur d'une application mais aussi pour grouper des widgets similaires entre différentes applications. Typiquement, on assigne une classe à un B ou une B, ainsi la classe s'appliquera à tous les enfants du widget. Pour étendre l'exemple, nous pouvons être encore plus spécifique à propos du widget importantText en donnant une classe à sa 'frame' $frame = $mw->Frame(-class => 'Urgent'); $text = $frame->Text(Name => 'importantText'); Alors le motif de ressource peut être spécifié ainsi : *Urgent*importantText*foreground: red De la même manière, le motif C<*Urgent*background: cyan> s'appliquera à tous les widgets de la 'frame'. =head1 MÉTHODES =over 4 =item I<$widget>-EB(B<-name>=EI, B<-class>=EI); Identifie un nouveau widget avec I et/ou I. B spécifie l'élément de chemin pour le widget ; les noms commencent en général par une minuscule. B<-class> spécifie la classe pour le widget et ses enfants ; les classes commencent généralement par une majuscule. Si ce n'est pas spécifié, Perl/Tk assigne un nom par défaut unique à chaque widget. Seuls les widgets B ont une classe par défaut, créée en mettant en majuscule la première lettre du nom de l'application. =item I<$widget>-EB; La méthode B renvoie le I du widget, qui identifie de manière unique le widget au sein de l'application. =item I<$widget>-EB(I=EI ?, I?); La méthode B ajoute une nouvelle option à la base de données. I contient l'option en train d'être spécifiée, et consiste en noms et/ou classes séparés par des astérisques ou des points, dans le format X usuel. I contient une chaîne à associer au I ; c'est la valeur qui sera renvoyée lors d'un appel à la méthode B. Si I est spécifiée, elle indique le niveau de priorité pour cette option (voir ci-dessous pour les valeurs autorisées) ; la valeur par défaut est B. Cette méthode renvoie toujours une chaîne vide. =item I<$widget>->B; La méthode B efface la base de données d'option. Les options par défaut (la propriété du B ou le fichier B<.Xdefaults>) seront rechargées automatiquement la prochaine fois qu'une option sera ajoutée à la base de données ou lui sera enlevée. Cette méthode renvoie toujours une chaîne vide. =item I<$widget>-EB(I); La méthode B renvoie la valeur de l'option spécifiée pour I<$widget> sous I et I. Pour rechercher l'option, B compare les motifs de la base de données de ressource pour trouver le I du I<$widget> accolé à la classe du I<$widget> (ou son parent si I<$widget> n'a pas de classe spécifiée). La classe et le nom du widget sont des options initialisées lors de la création du widget (ceci n'a pas de relation avec la classe dans le sens de 'bless') ; le nom de B est le B et sa classe est (par défaut) dérivée du nom du script. Si plusieurs entrées de la base de données d'option correspondent au I du I<$widget>, I, et I, alors la méthode renvoie celui qui a été créé avec le plus haut niveau de I. S'il existe plusieurs entrées correspondantes au même niveau de priorité, alors il renvoie l'entrée la I de la base de données d'option. S'il n'y a pas d'entrée en correspondance, alors une chaîne vide est renvoyée. =item I<$widget>-EB(I?,I?); La méthode B lit I, qui doit avoir le format standard d'une base de donnée de ressources X telle que B<.Xdefaults>, et ajoute toutes les options spécifiées dans ce fichier à la base de données d'option. Si I est spécifiée, cela indique le niveau de priorité où entrer les options ; la valeur par défaut de I est B. L'argument I des méthodes B est normalement spécifié symboliquement en utilisant une des valeurs suivantes : =over 8 =item B Niveau 20. Utilisé pour des valeurs par défaut codées en dur dans les widgets. =item B Niveau 40. Utilisés pour des options spécifiées dans un fichier de démarrage spécifique à une application. =item B Niveau 60. Utilisé pour les options spécifiées dans un fichier de valeurs par défaut spécifique à l'utilisateur, tel que B<.Xdefaults>, une base de donnée de ressources chargée dans le serveur X, ou un fichier d'initialisation spécifique à l'utilisateur. =item B Niveau 80. Utilisé pour les options spécifiées interactivement après que l'application ait démarré. C'est la valeur par défaut si I n'est pas spécifié. =back Tous les mots-clés ci-dessus peuvent être abrégés. De plus, les priorités peuvent être spécifiées numériquement en utilisant les entiers de 0 à 100, inclusivement. La forme numérique est probablement une mauvaise idée excepté pour une nouvelle priorité autre que celles énumérées ci-dessus. =back =head1 BUGS Le schéma de priorité utilisé par Tk n'est pas identique à celui utilisé par les routines Xlib habituelles. En particulier il suppose que l'ordre des entrées est défini, mais des commandes utilisateur comme B peuvent changer l'ordre. =head1 VOIR AUSSI Tk::Xrm =head1 MOTS-CLÉS database, option, priority, retrieve =head1 TRADUCTION Jean-Pierre Vidal jeanpierre.vidal@free.fr =head1 RELECTURE Aucune relecture pour le moment.