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 :

Fonction qui renvoie une liste


Sujet :

GTK+ avec C & C++

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 73
    Points
    73
    Par défaut Fonction qui renvoie une liste
    Bonjour a tous, je désire réaliser une fonction qui crée une liste qui contient le nom des fichiers contenu dans un répertoire. A la fin je renvoie la liste cependant a la compilation j'ai deux erreurs qui résiste.

    Voici le code de la fonction :

    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
    GList liste_fichiers()
    {
        /// Variables
    
        GDir *repertoire;
        GtkListStore *liste;
        gchar *nom;
    
        /// Instructions
    
        liste = gtk_list_store_new(1, G_TYPE_STRING);
        repertoire = g_dir_open(Selection_repertoire(),0,NULL);
    
        if(repertoire)
        {
    70 :   while (nom = g_dir_read_name(repertoire) ) 
                {
                    nom = g_malloc(40);
                    GtkTreeIter *iteration;
                    gtk_list_store_append(liste, iteration);
                    gtk_list_store_set(liste, iteration,TEXT_COLUMN, nom,-1);
                    g_free(nom);
                }
    
            g_dir_close(repertoire);
    
    81 :    return liste;
        }
    
    
    } // fin de la fonction liste_fichiers
    Voici les erreurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ligne 70 : warning: assignment discards qualifiers from pointer target type
    ligne 81 : error : incompatible types in return

  2. #2
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par la_praline
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ligne 70 : warning: assignment discards qualifiers from pointer target type
    ligne 81 : error : incompatible types in return
    ligne 70 :
    La fonction g_dir_read_name renvoie un const gchar *, toi ton pointeur nom est de type gchar * !

    ligne 81 :
    Normal, ta fonction renvoie une GList mais il faut en fait renvoyer un pointeur sur une GList donc la signature de ta fonction n'est pas correcte, voici la bonne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GList * liste_fichiers (void)
    Par ailleurs je ne vois pourquoi tu as déclaré liste ainsi:
    Tu veux remplir une GList mais tu utilises un GtkListStore ce qui est complètement différent, tu confond tout là, il faut reprendre des cours de toute urgence. Déclare ta liste ainsi:
    et adapte ton code par rapport aux fonctions de cette liste ! Ton code est par conséquent complètement faux
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 73
    Points
    73
    Par défaut
    En réalité c'est une GtkListStore que je désire créer (c t completement faux en effet une fois kon relis) avec dedans tous les noms de fichiers récupérer a partir du répertoire voila ce que ca donne désormais mais j'ai un plantage lors de l'éxécution de la fonction.

    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
     
    GtkListStore *liste_fichiers()
    {
        /// Variables
     
        GDir *repertoire;
        GtkListStore *liste;
        const gchar *nom=NULL;
     
        /// Instructions
     
        liste = gtk_list_store_new(1, G_TYPE_STRING);
        repertoire = g_dir_open(Selection_repertoire(),0,NULL);
     
        if(repertoire)
        {
            while (nom = g_dir_read_name(repertoire) )
                {
                    GtkTreeIter *iteration;
                    gtk_list_store_append(liste, iteration);
                    gtk_list_store_set(liste, iteration,TEXT_COLUMN, nom,-1);
                }
     
            g_dir_close(repertoire);
     
            return liste;
        }
     
     
    } // fin de la fonction liste_fichiers

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 73
    Points
    73
    Par défaut
    J'ai du mal ac les listes donc il se pourrait qu'il y ai encore des betises dans ce code !!

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par la_praline
    J'ai du mal ac les listes donc il se pourrait qu'il y ai encore des betises dans ce code !!
    Oui y'a quelques bétises, voici la correction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
                    GtkTreeIter iteration;
                    gtk_list_store_append(liste, & iteration);
                    gtk_list_store_set(liste, & iteration,TEXT_COLUMN, nom,-1);
    Voilà, en fait il ne faut pas déclarer de pointeur sur un GtkTreeIter mais passer l'adresse d'une variable de type GtkTreeIter aux fonctions
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 73
    Points
    73
    Par défaut
    J'ai avancé ma fonction désormais ma liste est intégré a ma table mais j'ai deux soucis déja il faut ke je dois éxécuter la fonction a l'ouverture car sinon je trouve pas de moyen de recharger une table deja existante !! L'autre soucis c que la liste n'affiche aucun chemin de fichier je comprend pas pourquoi !!

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
    GtkWidget *liste_fichiers(GtkWidget *table)
    {
        /// Variables
     
        GDir *repertoire;
        GtkListStore *liste;
        GtkWidget *vue;
        GtkTreeViewColumn *vue_colonne;
        GtkCellRenderer *colonne;
        GtkWidget *barre_defil;
        const gchar *nom=NULL;
     
        /// Instructions
     
        liste = gtk_list_store_new(1, G_TYPE_STRING);
        repertoire = g_dir_open(Selection_repertoire(),0,NULL);
     
        if(repertoire)
        {
            while (nom = g_dir_read_name(repertoire) )
                {
                    GtkTreeIter *iteration;
                    gtk_list_store_append(liste,&iteration);
                    gtk_list_store_set(liste,&iteration,TEXT_COLUMN, nom,-1);
                }
     
            g_dir_close(repertoire);
     
            vue = gtk_tree_view_new_with_model(GTK_TREE_MODEL(liste));
     
            /// Creation de la colonne
     
                colonne = gtk_cell_renderer_text_new();
                vue_colonne = gtk_tree_view_column_new_with_attributes("Titre",colonne,"text", TEXT_COLUMN,NULL);
     
            /// Ajout de la colonne à la vue
     
                gtk_tree_view_append_column(GTK_TREE_VIEW(vue), vue_colonne);
     
            /// Ajout de la vue a la fenetre
     
                barre_defil = gtk_scrolled_window_new(NULL, NULL);
                gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(barre_defil),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
                gtk_container_add(GTK_CONTAINER(barre_defil), vue);
                gtk_table_attach_defaults(GTK_TABLE(table), barre_defil, 20,35,2,22);
     
            return table;
        }
    } // fin de la fonction liste_fichiers
    Est ce que les chemins de fichiers sont dans un format que je peux afficher ?? Dois je les caster ??

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    En fait il faudrait voir pour faire un peu autrement car tu met transmet le pointeur nom mais celui-ci est mis à jour à chaque tout de boucle ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while (nom = g_dir_read_name(repertoire) )
    Ca se répercute donc sur les autres éléments précédemment enregistrés ! Il faudrait peut-être allouer à chaque fois une nouvelle adresse pour la chaîne de caractères que tu récupères à chaque tour de boucle à l'intérieur de la boucle.

    Un nouveau pointeur sur char suffit avec une allocation dynamique de la taille de la chaîne pointée par nom en ajoutant 1 au résultat pour le zéro de fin de chaîne puis tu passes alors ce pointeur à la fonction gtk_list_store_set !

    Il ne faudra bien sûr pas oublier de libérer toutes ces chaînes de caractères à la fin du programme, tu peux très facilement créer une fonction pour le faire à partir bien sûr de ton GtkListStore.
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  8. #8
    Membre actif
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2006
    Messages
    287
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2006
    Messages : 287
    Points : 208
    Points
    208
    Par défaut
    il y a encore une erreur non ?
    sur le GtkTreeIter *iteration. Il suffit de mettre GtkTreeIter iteration je crois ?

  9. #9
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par bit_o
    il y a encore une erreur non ?
    sur le GtkTreeIter *iteration. Il suffit de mettre GtkTreeIter iteration je crois ?
    Oui mais ca je te l'avais marqué dans un post précédent
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 73
    Points
    73
    Par défaut
    J'ai crée un deuxieme widget pour le nom dont je définis la taille dynamiquement dois yavoir un élément qui va pas car dans la liste ca n'affiche aucun texte alors que si jaffiche le nom dans un label ca passe !! Cette fonction commence a me rendre fou !!!

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    GtkWidget *liste_fichiers(GtkWidget *table)
    {
        /// Variables
     
        GDir *repertoire;
        GtkListStore *liste;
        GtkWidget *vue;
        GtkTreeViewColumn *colonne;
        GtkCellRenderer *type_colonne;
        GtkWidget *barre_defil;
        const gchar *nom=NULL;
        const gchar *nom2=NULL;
     
     
        /// Instructions
     
        liste = gtk_list_store_new(1, G_TYPE_STRING);
        repertoire = g_dir_open(Selection_repertoire(),0,NULL);
     
        if(repertoire)
        {
            while (nom = g_dir_read_name(repertoire) )
                {
                    nom2=g_malloc(strlen (nom)+1);
                    nom2=nom;
                    GtkTreeIter iteration;
                    gtk_list_store_append(liste,&iteration);
                    gtk_list_store_set(liste,&iteration,TEXT_COLUMN, nom2,-1);
                    g_free(nom2);
                }
     
            g_free(nom);
     
            g_dir_close(repertoire);
     
            vue = gtk_tree_view_new_with_model(GTK_TREE_MODEL(liste));
     
            /// Creation de la colonne
     
                type_colonne = gtk_cell_renderer_text_new();
                colonne = gtk_tree_view_column_new_with_attributes("Titre",type_colonne,"text", TEXT_COLUMN,NULL);
     
            /// Ajout de la colonne à la vue
     
                gtk_tree_view_append_column(GTK_TREE_VIEW(vue),colonne);
     
            /// Ajout de la vue a la fenetre
     
                barre_defil = gtk_scrolled_window_new(NULL, NULL);
                gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(barre_defil),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
                gtk_container_add(GTK_CONTAINER(barre_defil), vue);
                gtk_table_attach_defaults(GTK_TABLE(table), barre_defil, 20,35,2,22);
     
            return table;
        }
    } // fin de la fonction liste_fichiers
    voila ce que ca donne visuellement la zone chansons devrait etre pleine de nom de fichiers:

    Nom : mp3.JPG
Affichages : 111
Taille : 43,8 Ko

    Je ne pense pas que le probleme vienne de la vue mais plus du contenu de la boucle while !!

  11. #11
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Bien sûr que ca marche pas comme tu as fait ... ton pointeur déjà n'est pas local à la boucle alors qu'il est préférable qu'il le soit donc tu peux déjà virer sa délcaration dans le corps de ta fonction !

    Ensuite, en faisant:
    Si tu connais ton C, tu devrais savoir qu'ici tu ne copies pas la chaîne d'une adresse à une autre mais simplement le pointeur ce qui fait que nom2 et nom pointent tous deux sur la même adresse alors c'est normal que tu ais des problèmes !

    Pour continuer, tu crois qu'en libérant ton pointeur nom2 à la fin de chaque tour de boucle tu fait les choses correctement ? Bin non du tout, il faut libérer les chaîne une fois que tu n'en as plus besoin donc soit quand tu vide ton magasin de données soit quand tu quittes le programme !

    Voici la boucle corrigée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    while (nom = g_dir_read_name(repertoire))
    {
       gchar * nom2 = g_malloc (strlen (nom) + 1);
     
       if (nom2 != NULL)
       {
          GtkTreeIter iteration;
     
          strcpy (nom2, nom);
     
          gtk_list_store_append(liste,&iteration);
          gtk_list_store_set(liste,&iteration,TEXT_COLUMN, nom2,-1);
       }
    }
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 73
    Points
    73
    Par défaut
    javou que j'enchaine les boulettes dsl !!

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 73
    Points
    73
    Par défaut
    je sais que je suis très étourdi et que je fais des betises des fois mais ca n'afficher toujours rien alors que tout est corrigé bien comme tu m'avais conseillé jsui dsl de te faire perdre ton tps mais cette fonction me prend la tete depuis bcp de tps jte l'avoue !!

  14. #14
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Oui c'est vrai, tu les enchaînes les bétises mais c'est pas fini Puis tu sais ce qu'on dit, c'est qu'en faisant des bétises qu'on apprend

    Pourquoi faire un:
    ?? Je retournais plutôt le widget GtkTreeView:
    Sinon je ne vois pas le but de retourner un pointeur que tu transmet déjà en arguemnt

    De plus, quelle valeur est représentée par ta constante TEXT_COLUMN ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 73
    Points
    73
    Par défaut
    ben dans mon main ma fenetre principale dont tu a la photo précédemment est basée sur une table une fois le répertoire choisit la liste apparait dans la table c'est pour ca que je trouvais plus judicieux de retourner la table !!

    Et puis pour le TEXT_COLUMN duquel parles tu ??

    Celui-ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    colonne=gtk_tree_view_column_new_with_attributes("Chansons",type_colonne,"text", TEXT_COLUMN,NULL);
    ou de celui ci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gtk_list_store_set(liste,&iteration,TEXT_COLUMN, nom2,-1);

  16. #16
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Citation Envoyé par la_praline
    ben dans mon main ma fenetre principale dont tu a la photo précédemment est basée sur une table une fois le répertoire choisit la liste apparait dans la table c'est pour ca que je trouvais plus judicieux de retourner la table !!
    Si tu modifies directement la table en y ajoutant un widget et ce à partir du pointeur passé en paramètre, retourner ce même pointeur ne sert strictement à rien, autant ne pas faire renvoyer de données.

    Citation Envoyé par la_praline
    Et puis pour le TEXT_COLUMN duquel parles tu ??
    Peu importe, c'est une constante unique. Comment est-elle créée ?
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 73
    Points
    73
    Par défaut
    Nan la tout a fait d'accord autant mettre en void mais c lorsque je bossais sur la liste je renvoyai la liste jai fais une modif et jai po eu le réflexe sinon voila l'enum

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    enum {
    TEXT_COLUMN,
    N_COLUMN
    };

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 73
    Points
    73
    Par défaut
    ca marche je te donne le code fonctionnel il se pourrait que ca puisse servir a quelqu'un !!

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    enum {
    TEXT_COLUMN,
    N_COLUMN
    };
     
    void *liste_fichiers(GtkWidget *table)
    {
        /// Variables
     
        GDir *repertoire;
        GtkListStore *liste;
        GtkWidget *vue;
        GtkTreeViewColumn *colonne;
        GtkCellRenderer *type_colonne;
        GtkWidget *barre_defil;
        const gchar *nom=NULL;
     
     
        /// Instructions
     
        liste = gtk_list_store_new(1, G_TYPE_STRING);
        repertoire = g_dir_open(Selection_repertoire(),0,NULL);
     
        if(repertoire)
        {
            while (nom = g_dir_read_name(repertoire))
            {
                const gchar * nom2 = g_malloc (strlen (nom) + 1);
     
                if (nom2 != NULL)
                    {
                        GtkTreeIter iteration;
                        strcpy (nom2, nom);
                        gtk_list_store_append(liste,&iteration);
                        gtk_list_store_set(liste,&iteration,TEXT_COLUMN, nom2,-1);
                    }
            }
     
            g_free(nom);
     
            g_dir_close(repertoire);
     
            vue = gtk_tree_view_new_with_model(GTK_TREE_MODEL(liste));
     
            /// Creation de la colonne
     
                type_colonne = gtk_cell_renderer_text_new();
                colonne = gtk_tree_view_column_new_with_attributes("Chansons",type_colonne,"text",TEXT_COLUMN,NULL);
     
            /// Ajout de la colonne à la vue
     
                gtk_tree_view_append_column(GTK_TREE_VIEW(vue),colonne);
     
            /// Ajout de la vue a la fenetre
     
                barre_defil = gtk_scrolled_window_new(NULL, NULL);
                gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(barre_defil),GTK_POLICY_AUTOMATIC,GTK_POLICY_AUTOMATIC);
                gtk_container_add(GTK_CONTAINER(barre_defil), vue);
                gtk_table_attach_defaults(GTK_TABLE(table), barre_defil, 20,35,2,22);
        }
    } // fin de la fonction liste_fichiers
    ca marche nikel maintenant merci beaucoup pour ta patience t un chef sans toi je serais pas arriver a grand chose jvé pouvoir continuer en filtrant les fichiers pour sélectionner que les mp3

  19. #19
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Points : 12 462
    Points
    12 462
    Par défaut
    Enlève juste ce qui est en rouge:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void *liste_fichiers(GtkWidget *table)
    Car là ta fonction est censée retourner un pointeur sur void ce qui existe, c'est ce qu'on appel un pointeur générique !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  20. #20
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Points : 73
    Points
    73
    Par défaut
    cayait c fait merci en tout cas !!

Discussions similaires

  1. Réponses: 10
    Dernier message: 05/02/2015, 14h47
  2. Réponses: 6
    Dernier message: 28/04/2011, 14h19
  3. Changer une fonction qui utilise une liste par un tableau!
    Par sara21 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 03/05/2007, 13h18
  4. [?] Fonction qui renvoie une table
    Par Dimitri_87 dans le forum Oracle
    Réponses: 2
    Dernier message: 05/04/2007, 11h48
  5. [MySQL] Fonction qui génère une liste
    Par Marco85 dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 30/03/2007, 13h37

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