next up previous contents
suivant: Le widget CList monter: Les widgets précédent: Les listes de choix   Table des matières


Sous-sections

Le widget Liste

Le widget Liste

Le widget Liste est conçu pour agir comme un conteneur vertical pour des widgets qui devraient être du type élément de liste (ListItem). Un widget Liste possède sa propre fenêtre pour recevoir les évènements et sa propre couleur de fond qui est généralement blanche.

Afin de ne pas vous perturber, une Liste (majuscule) fait référence à un widget Gtk::List alors qu'une liste (minuscule) fait référence à une liste Perl ( et ce qui peut aussi y faire référence, quoique de manière grossière, comme les rangées).

Il y a deux champs dans la définition d'une structure d'un widget Liste qui seront d'un grand intérêt pour nous : Il y a selection et selection_mode.

La champs selection d'une Liste est une liste de tous les éléments qui sont actuellement sélectionnés ou une liste vide si la sélection est vide. Ainsi pour en apprendre plus sur la sélection courante, nous lisons le champs selection mais nous ne le modifions pas car les champs internes sont maintenus par les fonctions de Liste.

Le champs selection_mode d'une Liste détermine les facilités de sélection d'une Liste et par conséquent les contenus du champs de sélection. Le selection_mode peut être :

'single' - La sélection est soit vide soit sa liste ne contient qu'un seul élément sélectionné.

'browse' - La sélection est vide si la liste ne contient aucun widget ou seulement des insensibles, autrement il contient une liste avec un élément.

'multiple' - La sélection est vide si aucun des éléments n'est sélectionné ou bien une liste de tous les items sélectionnés.

'extended' - La sélection est toujours vide.

Le défaut est 'multiple'.

Les signaux

Le signal 'selection changed' sera invoqué si le champs de selection de la Liste a changé. Cela arrive quand un enfant de la Liste est sélectionné ou désélectionné.

Le signal 'select_child' est invoqué un enfant de la Liste est sur le point d'être sélectionné. Cela arrive principalement quand on appelle select_item(), select_child(), quand on appuie sur les boutons et parfois c'est déclenché indirectement en d'autres occasions quand des enfants sont ajoutés ou enlevés de la Liste.

Le signal 'unselect_child' est invoqué quand un enfant de la Liste est sur le point d'être désélectionné. Cela arrive principalement quand on appelle unselect_item(), unselect_child(), quand on appuie sur les boutons et parfois c'est déclenché indirectement en d'autres occasions quand des enfants sont ajoutés ou enlevés de la Liste.

Les fonctions

Pour créer une Liste :

Les éléments sont ajoutés à la Liste en utilisant :

Ou @items est la liste des éléments à ajouter et $position est la position de départ des éléments.

On peut ajouter des éléments à la fin de la Liste ou au début avec les fonctions :

Pour enlever des éléments de la Liste :

Ou @items est la liste des éléments à enlever.

Vous pouvez également enlever un ensemble d'éléments avec :

Les éléments peuvent être sélectionnés par :

Cela invoquera également soit le signal 'select_item' soit le signal 'select_child' sur l'élément de la liste.

On désélectionne de la même manière :

Si vous voulez l'index pour un enfant de la Liste, utilisez :

Si une erreur se produit, une valeur -1 est retournée.

On peut choisir le mode de sélection à l'aide de :

Ou mode peut être 'single', 'browse', 'multiple', 'extended'.

Le widget ListItem

Les widgets ListItem sont conçus pour agir comme des conteneurs ayant un enfant et fournissant des fonctions de sélection/désélection tout comme le widget List l'exige d'eux pour ses enfants.

Un ListItem possède sa propre fenêtre pour recevoir les évènements et sa propre couleur de fond qui est habituellement blanche.

Comme il est directement dérivé d'un Item, il peut être traité comme tel. Pour plus de données la dessus, voir la section sur les Items. Habituellement un ListItem possède juste un label pour identifier un nom de fichier dans un Liste, c'est pourquoi la fonction bien pratique new_with_label() est fourni. Le même effet peut être obtenu en créant un Label à part entière, déclarant ses alignements à xalign=0 et yalign=0.5 avec une addition sous-jacente de conteneur au ListItem.

Comme personne n'est obligé d'ajouter un GtkLabel à un GtkListItem, vous pouvez également ajouter une GtkVBox ou une GtkArrow, etc, au GtkItem.

Les fonctions ListItem

Pour créer un ListItem, appeler l'une des fonctions suivantes :

Si vous passez une chaîne en argument, cela crée une ListItem avec un Label comme seul enfant du ListItem.

Pour sélectionner un ListItem :

Cette méthode émettra le signal 'select' sur le ListItem.

La désélection fonctionne de la même manière :

Exemple

L'exemple suivant montrera les changements de sélection d'une liste et vous laissera ``arrêter'' une liste d'items et les placer en prison en les sélectionnant avec le bouton droit de la souris.

List Example


next up previous contents
suivant: Le widget CList monter: Les widgets précédent: Les listes de choix   Table des matières
LE BORGNE Patrice 2001-01-11