XI. Les barres de défilement▲
XI-A. Aperçu▲
XI-B. Ajouter des barres de défilement▲
Après le dernier chapitre, quelque peu laborieux, voici une partie plus simple, mais qui va rendre notre application plus pratique. En effet, si vous avez essayé d'ouvrir un fichier de grande taille, vous avez pu remarquer que pour pouvoir lire la fin du fichier, il fallait utiliser les touches du clavier : pas très convivial.
Pour rendre la navigation plus aisée, on utilise des barres de défilement :
GtkWidget *
p_scrolled_window =
NULL
;
p_scrolled_window =
gtk_scrolled_window_new (
NULL
, NULL
);
gtk_box_pack_start (
GTK_BOX (
p_main_box), p_scrolled_window, TRUE, TRUE, 0
);
/* Creation de la zone de texte */
/* ... */
gtk_container_add (
GTK_CONTAINER (
p_scrolled_window), p_text_view);
Le constructeur de notre GtkScrolledWindow prend en argument deux GtkAdjustment qui permettent de définir différentes propriétés de la barre de défilement (taille d'une page, la position de départ…), nous laissons GTK+ faire en passant NULL.
C'est un bon début, mais esthétiquement on peut faire mieux : même s'il n'est pas utile d'avoir une barre de défilement, elle est quand même affichée. On peut demander à GTK+ de les afficher que si cela est nécessaire :
gtk_scrolled_window_set_policy (
GTK_SCROLLED_WINDOW (
p_scrolled_window), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
En fait nous avons de la chance, car la classe GtkTextView fait partie des widgets qui supportent de façon native les barres de défilement. Comment le savoir ? Ce genre de widget possède une ou deux propriétés de type GtkAdjustment (une pour la barre verticale, l'autre pour la barre horizontale). Actuellement seulement trois classes en sont capables : les GtkTextView, les GtkTreeView et les GtkLayout.
Comment faire pour les autres widgets ? Il faut passer par une classe adaptateur GtkViewport afin de créer les GtkAdjustment.