Programmation GTK/Fonctions
guint gtk_list_get_type (void)
Retourne l'identificateur de type « GtkList ».
GtkWidget* gtk_list_new (void)
Crée un nouvel objet « GtkList ». Le nouveau widget est retourné sous la forme d'un pointeur vers un objet « GtkWidget ». NULL est retourné en cas d'erreur.
void gtk_list_insert_items (GtkList *LIST, GList *ITEMS, gint POSITION)
Insère des items dans LIST, à partir de POSITION. ITEMS est une liste doublement chaînée où chaque nœud doit pointer vers un nouveau GtkListItem. Les nœuds GList de ITEMS sont pris en charge par LIST.
void gtk_list_append_items (GtkList *LIST, GList *ITEMS)
Insère des items à la fin de LIST selon le même principe que gtk_list_insert_items. Les nœuds GList de ITEMS sont pris en charge par LIST.
void gtk_list_prepend_items (GtkList *LIST, GList *ITEMS)
Insère des items au début de LIST selon le même principe que gtk_list_insert_items. Les nœuds GList de ITEMS sont pris en charge par LIST.
void gtk_list_remove_items (GtkList *LIST, GList *ITEMS)
Ôte des items de LIST. ITEMS est une liste doublement chaînée dont chaque nœud pointe vers un fils direct de LIST. Il est de la responsabilité de l'appelant de faire un appel à g_list_free(ITEMS) après cela. L'appelant doit aussi détruire lui-même les items.
void gtk_list_clear_items (GtkList *LIST, gint START, gint END)
Ôte et détruit des items de LIST. Un widget est concerné si sa position courante dans LIST est dans l'intervalle spécifié par START et END.
void gtk_list_select_item (GtkList *LIST, gint ITEM)
Invoque le signal GtkList::select_child pour un item spécifié par sa position courante dans LIST.
void gtk_list_unselect_item (GtkList *LIST, gint ITEM)
Invoque le signal GtkList::unselect_child pour un item spécifié par sa position courante dans LIST.
void gtk_list_select_child (GtkList *LIST, GtkWidget *CHILD)
Invoque le signal GtkList::select_child pour le fils CHILD spécifié.
void gtk_list_unselect_child (GtkList *LIST, GtkWidget *CHILD)
Invoque le signal GtkList::unselect_child pour le fils CHILD spécifié.
gint gtk_list_child_position (GtkList *LIST, GtkWidget *CHILD)
Retourne la position de CHILD dans LIST. Retourne -1 en cas d'erreur.
void gtk_list_set_selection_mode (GtkList *LIST, GtkSelectionMode MODE)
Configure LIST dans le mode de sélection MODE qui peut être GTK_SELECTION_SINGLE, GTK_SELECTION_BROWSE, GTK_SELECTION_MULTIPLE ou GTK_SELECTION_EXTENDED.
GtkList* GTK_LIST (gpointer OBJ)
Convertit un pointeur générique en « <\em GtkList*\ ». Voir Standard Macros::, pour plus d'informations.
GtkListClass* GTK_LIST_CLASS (gpointer CLASS)
Convertit un pointeur générique en « GtkListClass* ». Voir Standard Macros::, pour plus d'informations.
gint GTK_IS_LIST (gpointer OBJ)
Détermine si un pointeur générique référence un objet « GtkList ». Voir Standard Macros::, pour plus d'informations.

Programmation GTK/Exemple
Voici un programme affichant les changements de sélection dans une GtkList et permettant d'« emprisonner » des items en les sélectionnant avec le bouton droit de la souris.
 /* Compilez ce programme avec :
 * $ gcc -L/usr/X11R6/lib/ -I/usr/local/include/ -lgtk -lgdk -lglib -lX11 -lm -Wall main.c
 #include <gtk/gtk.h>
 #include <stdio.h>
 /* Chaîne pour stocker les données dans les items de la liste. */
 const gchar *list_item_data_key="list_item_data";

/* prototypes des gestionnaires de signaux que l'on connectera au widget GtkList. */
 static void sigh_print_selection (GtkWidget *gtklist,
 gpointer func_data);
 static void sigh_button_event (GtkWidget *gtklist,
 GdkEventButton *event,
 GtkWidget *frame);
 /* fonction principale pour configurer l'interface utilisateur */
 gint main (int argc, gchar *argv[])
 GtkWidget *separator;
 GtkWidget *window;
 GtkWidget *vbox;
 GtkWidget *scrolled_window;
 GtkWidget *frame;
 GtkWidget *gtklist;
 GtkWidget *button;
 GtkWidget *list_item;
 GList *dlist;
 guint i;
 gchar buffer[64];

/* initialise gtk (et donc gdk) */
 gtk_init(&argc, &argv);

/* Création d'une fenêtre pour placer tous les widgets.
 * Connexion de gtk_main_quit() à l'événement "destroy" de
 * la fenêtre afin de prendre en charge les événements « fermeture d'une
 * fenêtre » du gestionnaire de fenêtre. */ 
 window=gtk_window_new(GTK_WINDOW_TOPLEVEL);
 gtk_window_set_title(GTK_WINDOW(window), "Exemple de widget GtkList");
 gtk_signal_connect(GTK_OBJECT(window),
 "destroy",
 GTK_SIGNAL_FUNC(gtk_main_quit),
 NULL);

/* À l'intérieur de la fenêtre, on a besoin d'une boîte pour placer 
 * verticalement les widgets. */
 vbox=gtk_vbox_new(FALSE, 5);
 gtk_container_border_width(GTK_CONTAINER(vbox), 5);
 gtk_container_add(GTK_CONTAINER(window), vbox);
 gtk_widget_show(vbox);
 /* Fenêtre à défilement pour placer le widget GtkList à l'intérieur. */
 scrolled_window=gtk_scrolled_window_new(NULL, NULL);
 gtk_widget_set_usize(scrolled_window, 250, 150);
 gtk_container_add(GTK_CONTAINER(vbox), scrolled_window);
 gtk_widget_show(scrolled_window);
 /* Création du widget GtkList
 * Connexion du gestionnaire de signal sigh_print_selection() au signal
 * "selection_changed" du GtkList pour afficher les items sélectionnés
 * à chaque fois que la sélection change. */
 gtklist=gtk_list_new();
 gtk_container_add(GTK_CONTAINER(scrolled_window), gtklist);
 gtk_widget_show(gtklist);
 gtk_signal_connect(GTK_OBJECT(gtklist),
 "selection_changed",
 GTK_SIGNAL_FUNC(sigh_print_selection),
 NULL);
 /* Création d'une « Prison » pour y mettre un item. */
 frame=gtk_frame_new("Prison");
 gtk_widget_set_usize(frame, 200, 50);
 gtk_container_border_width(GTK_CONTAINER(frame), 5);
 gtk_frame_set_shadow_type(GTK_FRAME(frame), GTK_SHADOW_OUT);
 gtk_container_add(GTK_CONTAINER(vbox), frame);
 gtk_widget_show(frame);
 /* Connexion du gestionnaire de signal sigh_button_event() au signal
 * « mise au arrêts » des items du GtkList. */
 gtk_signal_connect(GTK_OBJECT(gtklist),
 "button_release_event",
 GTK_SIGNAL_FUNC(sigh_button_event),
 frame);
 /* Création d'un séparateur. */
 separator=gtk_hseparator_new();
 gtk_container_add(GTK_CONTAINER(vbox), separator);
 gtk_widget_show(separator);
 /* Création d'un bouton et connexion de son signal "clicked" à la
 * destruction de la fenêtre. */
 button=gtk_button_new_with_label("Fermeture");
 gtk_container_add(GTK_CONTAINER(vbox), button);
 gtk_widget_show(button);
 gtk_signal_connect_object(GTK_OBJECT(button),
 "clicked",
 GTK_SIGNAL_FUNC(gtk_widget_destroy),
 GTK_OBJECT(window));
 /* Création de 5 items, chacun ayant son propre label.
 * Ajout de ceux-ci au GtkList en utilisant gtk_container_add().
 * On interroge le texte du label et on l'associe avec
 * list_item_data_key à chaque item. */
 for (i=0; i<5; i++) {
 GtkWidget *label;
 gchar *string;
 sprintf(buffer, "ListItemContainer avec Label #%d", i);
 label=gtk_label_new(buffer);
 list_item=gtk_list_item_new();
 gtk_container_add(GTK_CONTAINER(list_item), label);
 gtk_widget_show(label);
 gtk_container_add(GTK_CONTAINER(gtklist), list_item);
 gtk_widget_show(list_item);
 gtk_label_get(GTK_LABEL(label), &string);
 gtk_object_set_data(GTK_OBJECT(list_item),
 list_item_data_key,
 string);