Nous allons découvrir tout de suite comment créer une zone de saisie permettant de saisir plusieurs lignes. Une zone de texte peut par exemple être utile lors de la création d’un formulaire ou d’un éditeur de texte comme Word, Bloc-notes…
Pour créer une zone de texte, on utilise le widget GtkTextView, qui est un héritier direct de GtkContainer. Le simple fait de créer une textview (zone de texte) entraine la création automatique d’un textbuffer et d’un texttag qui lui seront associés. Cependant on peut définir soi-même le textbuffer et le texttag en utilisant respectivement les widgets GtkTextBuffer et GtkTextTag. GtkTextBuffer est un héritier de GObject.
GtkTextView s’occupe de l’interface graphique d’un textview tandis que GtkTextBuffer
servira à stocker les données.
Il y a aussi le widget qui permet de manipuler un textbuffer. Il s’agit de GtkTextIter. Ce
dernier ne sera pas étudier sur ce tuto.
Pour créer une zone de saisie multilignes, on va commencer par créer un pointeur vers GtkWidget.
Dans notre cas, ça sera :
Pour créer un buffer, on va créer un pointeur vers GtkTextBuffer. Dans notre cas, ça sera :
Ensuite, on passe à l’initialisation des nos éléments.
Pour le textview, voici la syntaxe :
GtkWidget* text_view=gtk_text_view_new();
Dans notre cas, ça sera :
Pour le buffer, voici la syntaxe :
GtkTextBuffer* gtk_text_view_get_buffer (GtkTextView* text_view);
Pour le buffer, il y a deux choses qui nous intéressent : pouvoir le récupérer et le changer si besoin est.
Dans ce cas, nous allons faire ceci :
Pour la récupération :
Pour le changement:
Maintenant il ne reste qu’à afficher notre zone de texte. Pour cela, on peut faire ceci :
Voici une capture de ce que nous allons faire:
Code C :