Bonjour à tous,
J'essaie d'afficher l'arborescence d'un dossier dans un gtktreeview mais impossible de trouver de la doc ou des exemples en GTK+.
Auriez-vous quelques pistes?
Merci d'avance.
Version imprimable
Bonjour à tous,
J'essaie d'afficher l'arborescence d'un dossier dans un gtktreeview mais impossible de trouver de la doc ou des exemples en GTK+.
Auriez-vous quelques pistes?
Merci d'avance.
As-tu regardé ce tutoriel. Il n'est peut être plus très à jour mais ca peu être un bon début ;)
Ensuite montre-nous ton code. On pourra toujours essayer de t'aider un peu...
Bonjour Gérald,
Merci de ton aide.
Voici ce que j'ai réussi à faire :
Après je sèche, je ne sais pas comment faire pour ajouter les sous-dossiers trouvés dans les dossiers. Je pense que je dois utiliser un fonction récursive mais je ne vois pas trop comment m'y prendre.Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 void populateTreeStore(GtkTreeStore *treestore){ GDir *directory = NULL; GtkTreeIter parent; GdkPixbuf *icon; gtk_tree_store_clear (treestore); icon = gdk_pixbuf_new_from_file("./folder.png", NULL); gtk_tree_store_append(treestore, &parent, NULL); gtk_tree_store_set(treestore, &parent, BMP_COLUMN, icon, TEXT_COLUMN, g_get_user_name(), -1); directory = g_dir_open(g_get_home_dir(), 0, NULL); if (directory){ const gchar *readName = NULL; GtkTreeIter child; while ((readName = g_dir_read_name(directory))){ gchar *fileName = NULL; fileName = g_build_path(G_DIR_SEPARATOR_S, g_get_home_dir(), readName, NULL); if(g_file_test(fileName, G_FILE_TEST_IS_DIR) && readName[0] != 46){ gtk_tree_store_append(treestore, &child, &parent); gtk_tree_store_set(treestore, &child, 0, icon, 1, readName, -1); } } g_dir_close(directory), directory = NULL; } }
Non, pas de récursion. En général on peuple les entrées quand l'utilisateur cherche à les explorer, "à la demande". Autrement si tu avais une arborescence de 100 Go à explorer, ça prendrait beaucoup de temps. Tu dois donc juste connecter un signal pour être prévenu que l'utilisateur tente d'explorer un dossier, dans ta callback tu cherches les dossiers/fichiers et tu les ajoutes au treeview.
Dans nautilus, tu as une treeview sur le côté, tu peux voir comment elle est codée non ? D'ailleurs vu que le code de gnome est très bien organisé en widgets, tu peux récupérer le code du widget en question. ;)