• Aucun résultat trouvé

Op´ erations sur les boˆıtes de listes

Avec l’instruction :

listbox cheminBoˆıte?options?

la commande listbox cr´ee une nouvelle commande Tcl dont le nom est pr´ecis´ement cheminBoˆıte. Cette commande peut ˆetre compl´et´ee par des sous-commandes per- mettant d’effectuer diverses op´erations concernant la boˆıte. La forme g´en´erale est :

cheminBoˆıte op´eration?arg arg ...?

Les op´erations reconnues par les composantes de type listbox sont les suivantes : cheminBoˆıte activate index

Fixe l’´el´ement indiqu´e par l’argument index comme ´el´ement actif. Cet ´el´ement est soulign´e lorsque la boˆıte de liste est focalis´ee Si index est en dehors de l’intervalle des ´el´ements de la boˆıte de liste alors c’est l’´el´ement qui est activ´e `a la place.

cheminBoˆıte bbox index

Renvoie une liste de quatre nombres d´ecrivant la boˆıte qui d´elimite l’´el´ement d’indice index. Les deux premiers ´el´ements de cette liste sont l’abscisse et l’ordonn´ee (mesur´ees en pixels relativement `a la boˆıte elle-mˆeme) du coin sup´erieur gauche de la zone d’´ecran couverte par l’´el´ement et les deux derniers sont la largeur et la hauteur du widget. Cette boˆıte peut faire r´ef´erence `a une zone qui se trouve hors de la r´egion visible du champ de saisie. Si aucune partie de l’´el´ement d’indice index n’est visible `a l’´ecran ou si l’indice correspond `a un ´el´ement qui n’existe pas, la commande renvoie une chaˆıne vide. Si l’´el´ement est partiellement visible, le r´esultat correspond `a l’´el´ement entier, mˆeme si une partie n’est pas visible.

cheminBoˆıte cget option

Renvoie la valeur courante de l’option de configuration sp´ecifi´ee par l’argu- ment option. L’argument option peut ˆetre une quelconque des valeurs ac- cept´ees par la commande listbox.

cheminBoˆıte configure?option??valeur option valeur ...?

liste. Si l’argument option n’est pas sp´ecifi´e, la commande renvoie une liste de toutes les options disponibles pour cheminBoˆıte.

Si l’argument option est sp´ecifi´e sans une valeur correspondante, la commande renvoie une liste d´ecrivant l’option nomm´ee. Si un ou plusieurs couples option- valeur sont sp´ecifi´es, les options en question se voient attribuer la valeur cor- respondante : la commande renvoie alors une chaˆıne vide. L’argument option peut ˆetre une quelconque des valeurs accept´ees par la commande listbox. cheminBoˆıte curselection

Renvoie une liste contenant les indices num´eriques de tous les ´el´ements de la boˆıte de liste actuellement s´electionn´es. Si aucun ´el´ement n’est s´electionn´e, la commande renvoie une chaˆıne vide.

cheminBoˆıte delete premier?dernier?

D´etruit tous les ´el´ements de la boˆıte de liste dont les indices se trouvent entre les indices premier et dernier inclus. Si l’argument dernier est omis, il est identique `a premier+1 ce qui revient `a supprimer un seul ´el´ement. Cette commande renvoie une chaˆıne vide.

cheminBoˆıte get premier?dernier?

Si l’argument dernier est omis, cette commande renvoie l’´el´ement de la boˆıte de liste indiqu´e par premier, ou une chaˆıne vide si premier fait r´ef´erence `a un ´el´ement qui n’existe pas. Si l’argument dernier est sp´ecifi´e, la commande renvoie la liste de tous les ´el´ements de la boˆıte de liste compris entre les indices premier et dernier inclus.

cheminBoˆıte index index

Renvoie l’indice num´erique correspondant `a l’argument index lorsque celui- ci est d´esign´e par une des constantes symboliques mentionn´ees ci-dessus. Si l’argument index est end, la valeur de retour est le nombre d’´el´ements de la boˆıte de liste (et non pas l’indice du dernier ´el´ement).

cheminBoˆıte insert index?´el´ement ´el´ement ...?

Ins`ere un ou plusieurs ´el´ements dans la liste imm´ediatement avant l’´el´ement d’indice index. Si l’argument index est end, alors les nouveaux ´el´ements sont ins´er´es `a la fin de la liste. Cette commande renvoie une chaˆıne vide.

cheminBoˆıte itemcget index option

Renvoie la valeur courante de l’option de configuration de l’´el´ement d’in- dice index, sp´ecifi´ee par l’argument option. Celui-ci peut prendre n’importe laquelle des valeurs admises par la commande listbox itemconfigure. cheminBoˆıte itemconfigure index?option??valeur??option valeur ...?

Permet d’obtenir ou de modifier les options de configuration de l’´el´ement d’indice index. Les r`egles concernant l’argument option sont les mˆemes que pour la commande configure. Les options suivantes sont actuellement sup- port´ees pour les ´el´ements (l’argument couleur ci-dessous peut prendre une quelconque des formes reconnues pour la d´esignation des couleurs) :

-background couleur

L’argument couleur sp´ecifie la couleur de fond `a utiliser pour l’affichage de l’´el´ement.

-foreground couleur

L’argument couleur sp´ecifie la couleur de premier plan `a utiliser pour l’affichage de l’´el´ement.

-selectbackground couleur

L’argument couleur sp´ecifie la couleur de fond `a utiliser pour l’affichage de l’´el´ement lorsque celui-ci est s´electionn´e.

-selectforeground couleur

L’argument couleur sp´ecifie la couleur de premier plan `a utiliser pour l’affichage de l’´el´ement lorsque celui-ci est s´electionn´e.

cheminBoˆıte nearest y

Cette commande renvoie l’indice de l’´el´ement visible le plus proche de l’or- donn´ee y dans la boˆıte de liste.

cheminBoˆıte scan option args

Cette commande est utilis´ee pour parcourir le contenu des boˆıtes de listes. Elle peut prendre deux formes selon la valeur de l’argument option :

cheminBoˆıte scan mark x y

Enregistre les valeurs x et y et la vue courante de la boˆıte de liste, en vue d’une utilisation ult´erieure avec une commande scan dragto. Cette commande est typiquement associ´ee `a une pression du bouton de la souris dans la liste. Elle renvoie une chaˆıne vide.

cheminBoˆıte scan dragto x y

Cette commande calcule la diff´erence entre les valeurs des arguments x et y et celles de ces mˆemes arguments lors de la derni`ere commande scan mark ex´ecut´ee pour cette boˆıte de liste. Elle renvoie une chaˆıne vide. La vue du contenu du champ est alors ajust´ee de 10 fois la valeur de cette diff´erence vers la gauche ou vers la droite. Cette commande est typi- quement utilis´ee pour simuler l’effet de d´eplacement rapide du contenu de la liste avec la souris. On associe fr´equemment les deux commandes scan mark et scan dragto au second bouton de la souris, comme ceci : bind $c <2> "$c scan mark %x %y"

bind $c<B2-Motion> "$c scan dragto %x %y" cheminBoˆıte see index

Ajuste la vue de la boˆıte de liste de telle sorte que l’´el´ement d’indice index devienne visible. Si l’´el´ement est d´ej`a visible, la commande est sans effet. S’il est proche de l’un des bords de la boˆıte, l’´el´ement est rendu visible sur ce bord, et centr´e dans la boˆıte dans le cas contraire.

cheminBoˆıte selection option arg

Cette commande est utilis´ee pour ajuster la s´election dans une boˆıte de liste. Elle peut prendre plusieurs formes en fonction de l’argument option :

cheminBoˆıte selection anchor index

fait r´ef´erence `a un ´el´ement inexistant, l’´el´ement le plus proche est utilis´e. Le point d’ancrage de la s´election est la fin de la s´election d´etermin´ee en faisant glisser la souris avec le premier bouton enfonc´e. Le mot-cl´e anchor peut ˆetre utilis´e pour d´esigner ce point d’ancrage.

cheminBoˆıte selection clear premier?dernier?

Si certains ´el´ements entre les indices premier et dernier inclus sont s´electionn´es, cette commande les d´es´electionne. L’´etat de la s´election n’est pas modifi´e pour les ´el´ements situ´es hors de cet intervalle. cheminBoˆıte selection includes index

Renvoie 1 si l’´el´ement d’indice index est s´electionn´e, 0 sinon. cheminBoˆıte selection set premier?dernier?

S´electionne tous les ´el´ements dont l’indice est compris entre premier et dernier inclus sans modifier l’´etat s´electionn´e ou d´es´electionn´e des ´el´ements situ´es hors de cet intervalle.

cheminBoˆıte size

Renvoie une chaˆıne d´ecimale indiquant le nombre total des ´el´ements dans la boˆıte de liste.

cheminBoˆıte xview args

Cette commande est utilis´ee pour obtenir ou modifier la position horizontale du texte dans la fenˆetre. Elle peut prendre une des formes suivantes :

cheminBoˆıte xview

Renvoie une liste de deux ´el´ements. Chaque ´el´ement est une fraction dans l’intervalle [0,1] : ces valeurs indiquent les proportions de l’´el´ement qui sont visibles ou non dans la fenˆetre. Par exemple, si les valeurs renvoy´ees sont 0,2 et 0,6 cela signifie que 20% du texte sont situ´es `a gauche de la partie visible et 40% `a droite, tandis que la partie visible correspond `a 40% du texte. Ce sont les mˆemes valeurs qui sont pass´ees aux barres de d´efilement au moyen de la commande xscrollcommand. cheminBoˆıte xview index

Ajuste la vue dans la fenˆetre du champ de telle sorte que l’´el´ement d’indice index apparaisse au bord gauche de cette fenˆetre.

cheminBoˆıte xview movetofraction

Ajuste la vue dans la fenˆetre de la liste de telle sorte que la portion de la boˆıte de liste d´esign´ee en pourcentage de la largeur totale par la fraction fraction soit masqu´ee par le bord gauche de cette fenˆetre. L’argument fraction est une valeur dans l’intervalle [0,1].

cheminBoˆıte xview scroll nb unit´e

Cette commande d´ecale la vue dans la fenˆetre de la liste vers la gauche ou vers la droite selon la valeur donn´ee aux arguments nb et unit´e. L’argument nb est un nombre entier. L’argument unit´e est l’un des mots units ou pages (ou une abr´eviation). Avec units, le d´ecalage est d’environ nb caract`eres. Avec pages, le d´ecalage est de nb contenus d’´ecran. Si nb est n´egatif, les caract`eres au-del`a du bord gauche deviennent visibles ;

s’il est positif, les caract`eres situ´es au-del`a du bord droit deviennent visibles. Les positions des caract`eres sont d´efinies au moyen de la largeur du caract`ere 0.

cheminBoˆıte yview?args?

Cette commande est utilis´ee pour obtenir ou modifier la position verticale du texte dans la fenˆetre. Elle peut prendre une des formes suivantes :

cheminBoˆıte yview

Renvoie une liste de deux ´el´ements. Chaque ´el´ement est une fraction dans l’intervalle [0,1] : le premier donne la position de l’´el´ement au sommet de la fenˆetre par rapport `a la boˆıte toute enti`ere (0.5 d´esigne le milieu de la liste par exemple) ; le second indique la position qui suit imm´ediatement le dernier ´el´ement de la fenˆetre relativement `a la boˆıte enti`ere. Ce sont les mˆemes valeurs qui sont pass´ees aux barres de d´efilement au moyen de la commande yscrollcommand.

cheminBoˆıte yview index

Ajuste la vue dans la fenˆetre du champ de telle sorte que l’´el´ement d’indice index apparaisse au sommet de cette fenˆetre.

cheminBoˆıte yview moveto fraction

Ajuste la vue dans la fenˆetre de la liste de telle sorte que l’´el´ement de la boˆıte de liste d´esign´e en pourcentage de la hauteur totale par la fraction fraction se place au sommet de cette fenˆetre. L’argument fraction est une valeur dans l’intervalle [0,1].

cheminBoˆıte yview scroll nb unit´e

Cette commande d´ecale la vue dans la fenˆetre de la liste vers le haut ou vers le bas selon la valeur donn´ee aux arguments nb et unit´e. L’argument nb est un nombre entier. L’argument unit´e est l’un des mots units ou pages (ou une abr´eviation). Avec units, le d´ecalage est de nb lignes. Avec pages, le d´ecalage est de nb contenus d’´ecran. Si nb est n´egatif, les ´el´ements pr´ec´edents deviennent visibles ; s’il est positif, les ´el´ements suivants deviennent visibles.

Liaisons par d´efaut

Tk cr´ee automatiquement des liaisons de classe pour les boˆıtes de listes avec les caract´eristiques ci-dessous. L’essentiel du comportement d’une boˆıte de liste est d´etermin´e par l’option -selectMode qui sp´ecifie une des quatre mani`eres de traiter une s´election :

– si le mode de s´election est single ou browse, on peut s´electionner au plus un ´el´ement `a la fois dans la boˆıte de liste. Cliquer sur un ´el´ement avec le premier bouton de la souris le s´electionne et d´es´electionne tout autre ´el´ement qui pourrait ˆetre d´ej`a s´electionn´e. Avec le mode browse, on peut passer d’un ´el´ement `a l’autre en faisant glisser la souris avec le premier bouton enfonc´e tandis qu’en mode single on ne peut passer d’un ´el´ement `a l’autre qu’en cliquant dessus.

– si le mode de s´election est multiple ou extended, on peut s´electionner n’im- porte quel nombre d’´el´ements, pas n´ecessairement contigus. En mode mul- tiple, un clic sur un ´el´ement fait alterner son ´etat s´electionn´e ou d´es´electionn´e sans affecter les autres ´el´ements. En mode extended, un clic du premier bou- ton de la souris s´electionne l’´el´ement cliqu´e, d´es´electionne tous les autres et fixe le point d’ancrage de la s´election `a cet ´el´ement; en faisant glisser la souris avec le bouton enfonc´e, on s´electionne tous les ´el´ements depuis celui qui a ´et´e cliqu´e jusqu’`a celui qui se trouve sous le pointeur de la souris.

Chaque fois que la s´election change dans la boˆıte de liste, un ´ev´enement virtuel <<ListboxSelect>> est g´en´er´e. On peut ainsi faire une liaison `a cet ´el´ement pour ˆetre averti des modifications de s´election dans la boˆıte de liste.

Les liaisons par d´efaut suivantes sont d´efinies :

1. En mode extended, l’intervalle s´electionn´e peut ˆetre ajust´e en pressant le premier bouton de la souris avec la touche Majuscule enfonc´ee : la s´election est alors faite des ´el´ements compris entre le point d’ancrage et celui qui se trouve sous le pointeur de la souris. L’extrˆemit´e libre de cette nouvelle s´election peut ˆetre d´eplac´ee avec le bouton enfonc´e.

2. En mode extended, presser le premier bouton de la souris avec la touche Contrˆole enfonc´ee a un effet de commutateur : le point d’ancrage devient l’´el´ement situ´e sous le pointeur de la souris et l’´etat de la s´election est invers´e. L’´etat de la s´election des autres ´el´ements n’est pas modifi´e. Si la souris est d´eplac´ee avec le premier bouton enfonc´e, l’´etat de la s´election de tous les ´el´ements entre le point d’ancrage et celui qui se trouve sous le pointeur de la souris est ajust´e sur celui du point d’ancrage ; celui des autres ´el´ements reste ce qu’il ´etait avant l’op´eration de commutation.

3. Si la souris sort de la boˆıte de liste avec le premier bouton enfonc´e, la fenˆetre d´efile, rendant visible la partie qui ´etait cach´ee du cˆot´e de la souris. Le d´efilement se poursuit jusqu’`a ce que la souris rentre `a nouveau dans la fenˆetre ou que le bouton soit relˆach´e ou encore que l’on ait atteint la fin de la liste. 4. Le second bouton de la souris sert `a parcourir la liste. S’il est enfonc´e et gliss´e

au-dessus de la boˆıte de liste, le contenu d´efile rapidement dans la direction de d´eplacement de la souris.

5. Si les touches Haut ou Bas sont enfonc´ees, la position du curseur se d´eplace en cons´equence d’un ´el´ement dans la liste. Si le mode de s´election est browse ou extended alors le nouvel ´el´ement actif est aussi s´electionn´e tandis que tous les autres sont d´es´electionn´es. En mode extended, le nouvel ´el´ement actif devient le point d’ancrage de la s´election.

6. En mode extended, les combinaisons de touches Majuscule-Haut et Majuscule- Bas d´eplacent en cons´equence le curseur d’un ´el´ement dans la liste et simul- tan´ement ´etendent la s´election `a ce nouvel ´el´ement.

7. Les touches Gauche et Droite font d´efiler le contenu de la boˆıte de liste vers la gauche ou vers la droite de la largeur du caract`ere 0. Les combinaisons de touches Contrˆole-Gauche et Contrˆole-Droite font d´efiler le contenu de la boˆıte de liste vers la gauche ou vers la droite de la largeur de la fenˆetre. Les

combinaisons de touches Contrˆole-Pr´ec´edent et Contrˆole-Suivant ont le mˆeme effet.

8. Les touches Pr´ec´edent et Suivant font d´efiler le contenu de la boˆıte de liste vers le haut ou vers le bas d’une page, c’est-`a-dire de la hauteur de la fenˆetre. 9. Les touches D´ebut (Home) et Fin font d´efiler la boˆıte de liste horizontalement

vers les bords gauche et droit respectivement.

10. La touche Contrˆole-D´ebut d´eplace le curseur au premier ´el´ement de la liste, le s´electionne et d´es´electionne tout autre ´el´ement de la liste.

11. La touche Contrˆole-D´ebut d´eplace le curseur au dernier ´el´ement de la liste, le s´electionne et d´es´electionne tout autre ´el´ement de la liste.

12. En mode extended, la combinaison de touches Contrˆole-Majuscule-D´ebut ´etend la s´election au premier ´el´ement de la boˆıte de liste et Contrˆole-Majuscule- Fin au dernier ´el´ement.

13. En mode multiple, la combinaison de touches Contrˆole-Majuscule-D´ebut d´epla- ce le curseur au premier ´el´ement de la boˆıte de liste et Contrˆole-Majuscule-Fin au dernier ´el´ement.

14. Les touches Espacement et S´election ont pour effet de s´electionner l’´el´ement plac´e `a l’endroit du curseur comme si le premier bouton de la souris avait ´et´e press´e sur cet ´el´ement.

15. En mode extended, Contrˆole-Majuscule-Espacement et Majuscule-S´election ´etendent la s´election `a l’´el´ement actif comme si le premier bouton de la souris avait ´et´e press´e sur cet ´el´ement avec la touche Majuscule enfonc´ee.

16. En mode extended, la touche ´Echappement (Escape) annule la s´election la plus r´ecente et r´etablit la s´election pr´ec´edente.

17. La combinaison de la touche Contrˆole et de la barre oblique (/) s´electionne tous les ´el´ements, sauf en modes single et browse, o`u seul l’´el´ement actif est s´electionn´e tandis que tous les autres sont d´es´electionn´es.

18. La combinaison de la touche Contrˆole et de la contre-oblique (\) d´es´electionne tous les ´el´ements, sauf en mode browse o`u elle est sans effet.

19. La touche F16 (appel´ee Copie sur de nombreuses stations de travail) ou M´eta-