Programmation GTK/Widgets listes


Le widget GtkList sert de container vertical pour des widgets GtkListItem.

Un widget GtkList 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é de GtkContainer, il peut être traité comme tel en utilisant la macro GTK_CONTAINER(List) : voir le widget GtkContainer pour en savoir plus.

On doit d'abord connaître l'utilisation des GList et des fonctions g_list_*() qui leur sont liées pour pouvoir utiliser pleinement le widget GtkList.

Un champ de la structure d'un widget GtkList nous intéresse particulièrement:

 struct _GtkList
 {
   ...
   GList *selection;
   guint selection_mode;
   ...
 };

Le champ selection d'un GtkList pointe sur une liste chaînée de tous les items qui sont sélectionnés, ou vaut NULL si aucune sélection n'est faite. Ainsi, pour connaître la sélection courante, on consulte le champ GTK_LIST()->selection mais on ne doit pas le modifier car ses champs internes sont gérés par les fonctions gtk_list_*().

Le champ selection_mode détermine les options de sélection d'un GtkList et donc le contenu du champ du GTK_LIST()->selection. selection_mode peut avoir l'une des valeurs suivantes:

  • GTK_SELECTION_SINGLE - selection vaut NULL ou contient un pointeur vers un seul item sélectionné.
  • GTK_SELECTION_BROWSE - selection vaut NULL si la liste ne contient aucun widget ou seulement des widgets non sensitifs. Sinon, ce champ contient un pointeur vers une seule structure Glist, et donc vers exactement un item.
  • GTK_SELECTION_MULTIPLE - selection vaut NULL si aucun item n'est sélectionné ou pointe vers le premier item sélectionné. Ce dernier pointe à son tour vers le second item, etc.
  • GTK_SELECTION_EXTENDED - selection vaut toujours NULL.

La valeur par défaut est GTK_SELECTION_MULTIPLE.