Vous êtes sur la page 1sur 9

Projet 2P/3B : Atelier manipulation des TreeView sous

GTK+ et glade 2

1. Introduction

Le but de cet atelier est de vous initier à l’utilisation du widget GtkTreeView permettant
d’afficher des données sous forme de liste ou d'arbre sous la bibliothèque GTK+2.

2. GtkewTreeView

Le widget GtkTreeView utilise plusieurs widgets pour permettre l'affichage de données.

L'idée de base de son utilisation est de séparer l'aspect stockage des données de l'aspect
présentation.

L’utilisation de ce widget se décompose en deux parties distinctes :


– la création du modèle ;
– la gestion de l’affichage.
La création du modèle se fait soit par l’utilisation de GtkListStore pour créer une liste, soit par
GtkTreeStore pour la création d’un arbre.
Remarque : Dans cet atelier nous allons utiliser une liste pour la création de notre modèle.
Ces deux objets stockent dans un premier temps la structure des données, c’est à dire le nombre
de colonnes, le type d’affichage (texte, image, case à cocher) et stockent dans un second temps
les données qui seront affichées par la suite.

1
Une fois le modèle créé, nous pouvons passer à la partie affichage des données.

Le widget principal est GtkTreeView qui utilise dans un premier temps l’objet
GtkTreeViewColumn qui servira à définir chaque colonne du widget. Et enfin pour chaque
colonne il faut définir le type d’affichage à l’aide des objets GtkCellRendererText (pour
afficher du texte), GtkCellRendererPixbuf (pour afficher une image) et
GtkCellRendererToggle (pour afficher une case à cocher).

GtkTreeView

3. Exemple d’un programme complet

Dans cet exemple, nous allons :


1). ajouter une personne dans un fichier « utilisateur.txt »
2). afficher les données de toutes les personnes dans une TreeView

2
Etape 1 : Nous allons définir la structure Personne ainsi que les
fonctions qui nous permettent de faire la saisie et l’affichage.

1. La structure personne sera caractérisé par :


 Cin : chaine de caractère,
 Nom : chaine de caractère,
 Prénom : chaine de caractère,
 Date_naissance : chaine de caractère,
 Adresse : chaine de caractère
2. La fonction qui permet d’ajouter une personne p dans le fichier des utilisateurs.
Void Ajouter_Personne (Personne p)
3. La fonction qui permet d’afficher toutes les personnes à partir du fichier des utilisateurs
dans notre GtkListView.
Void Afficher_Personne (GtkListView * liste)

Ainsi le fichier personne.h aura les déclarations suivantes :

L’implémentation de la fonction ajouter _personne dans le fichier personne.c comme présenté


ci-dessus :

3
Pour pouvoir afficher dans le GtkListView, il faut définir tout d’abord une énumération1
représentant les colonnes qu’on souhaite avoir dans notre tableau. L’implémentation de la
fonction afficher_personne est présentée ci-dessus :

1
Un type énuméré est un type de données qui consiste en un ensemble de valeurs constantes.
4
Etape 2 : Fichier texte
Dans notre exemple, nous aurons besoin du fichier utilisateur.txt qui va stocker la liste des
personnes saisie.

Etape 3 : Mettre en place l’interface graphique


Nous proposons les deux fenêtres suivantes :
1. La fenêtre qui permet de faire la saisie des informations concernant une personne.
L’appui sur le bouton ajouter va déclencher la fonction (ajouter_personne) et le bouton
afficher permettra d’afficher le contenu du fichier utilisateur.txt

5
2. La fenêtre contenant une GtkTreeView permettant d’afficher les utilisateurs.

Etape 4 : Génération des signaux


1. Le bouton ajouter :

6
L’appui sur le bouton ajouter déclenchera le signal on_ajouter_clicked dont le code est le
présent :

2. Le bouton afficher :

7
En cliquant sur le bouton afficher on aura à afficher le contenu du fichier « utilisateur.txt » dans
une TreeView (treeview1).

Le signal on_afficher_clicked contient le code ci-dessus:

3. Le bouton retour :
Le bouton retour permet de retourner à la page d’ajout d’un utilisateur (fenêtre_ajouter).

8
Le code de la fonction on_retour_clicked est le suivant :

Travail à faire
En se basant sur cet atelier et le code source fourni. On vous demande d’utiliser les TreeView pour
afficher les différentes entités de votre projet.