IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

GTK+ avec C & C++ Discussion :

Arborescence dossier dans un gtktreeview


Sujet :

GTK+ avec C & C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Par défaut Arborescence dossier dans un gtktreeview
    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.

  2. #2
    Expert confirmé
    Avatar de gerald3d
    Homme Profil pro
    Conducteur de train
    Inscrit en
    Février 2008
    Messages
    2 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Conducteur de train
    Secteur : Transports

    Informations forums :
    Inscription : Février 2008
    Messages : 2 309
    Billets dans le blog
    5
    Par défaut
    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...

  3. #3
    Membre régulier
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Mars 2012
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Distribution

    Informations forums :
    Inscription : Mars 2012
    Messages : 8
    Par défaut
    Bonjour Gérald,

    Merci de ton aide.

    Voici ce que j'ai réussi à faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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;
        }
     
    }
    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.

  4. #4
    Modérateur

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2009
    Messages
    1 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2009
    Messages : 1 395
    Par défaut
    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.

  5. #5
    Membre confirmé Avatar de Gamall
    Profil pro
    Étudiant ENSEA
    Inscrit en
    Août 2009
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant ENSEA

    Informations forums :
    Inscription : Août 2009
    Messages : 252
    Par défaut
    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.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/11/2018, 14h56
  2. visualisation d'arborescence de dossier dans une application web
    Par yahya.romdhane.ensi dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 10/04/2013, 16h08
  3. Arborescence de dossier dans un TreeView
    Par PM_calou dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 17/02/2010, 12h00
  4. Repérer un dossier dans une arborescence
    Par Feustine dans le forum Langage
    Réponses: 2
    Dernier message: 11/08/2005, 13h54
  5. lister des dossiers dans un ComboBox
    Par taulmaril dans le forum Windows
    Réponses: 7
    Dernier message: 01/05/2004, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo