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 :

Probl�me avec les accents


Sujet :

GTK+ avec C & C++

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Par d�faut Probl�me avec les accents
    A l'aide de cette fonction je s�lectionne et j'ajoute � une liste tous les mp3 contenu dans le dossier. Cependant j'ai un petit soucis car lorsque j'affiche le nom du fichier dans la console il n'affiche pas les caract�res accentu�s alors que dans la liste qui s'affiche dans ma fenetre ces memes fichiers sont affich�s avec les accents correctement.

    Le probleme arrive ensuite quand je double clique sur une ligne pour ouvrir le fichier qui lui correspond lorsque le nom n'a pas d'accent ca ouvre mais lorsqu'il en a sa n'ouvre pas pourtant j'ai bien converti en utf8 je suis un peu perdu....

    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
     
    void liste_fichiers(GtkWidget *widget, Tags *tag)
    {
            /// Variables
     
                const gchar *nom=NULL;
                const gchar *nom2=NULL;
     
            /// Listage du dossier
     
                tag->Chemin=Selection_repertoire();
                tag->repertoire = g_dir_open(tag->Chemin,0,NULL);
                gtk_list_store_clear(tag->liste);
     
                if(tag->repertoire!=NULL)
                {
                    while (nom = g_dir_read_name(tag->repertoire))
                    {
                        nom=g_locale_to_utf8(nom,-1,NULL,NULL,NULL);
                        printf("\n%s",nom);
                        nom2 = g_malloc (strlen (nom) + 1);
     
                        if (nom2 != NULL)
                        {
                            GtkTreeIter iteration;
                            strcpy ((gchar*)nom2, (gchar*)nom);
                            if(strstr(nom2,".mp3")!=NULL)
                            {
                                gtk_list_store_append(tag->liste,&iteration);
                                gtk_list_store_set(tag->liste,&iteration,TEXT_COLUMN,nom,-1);
                            }
                        }
                    }
     
                    g_dir_close(tag->repertoire);
                    gtk_widget_show_all(tag->vue);
                }

  2. #2
    Membre �clair�
    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
    Par d�faut
    Coucou,

    Avec quelle fonction r�cup�res-tu la ligne s�lectionn�e par le (double) clic de l'utilisateur ?

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

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Par d�faut
    alors voila la fonction avec laquelle je r�cup�re le chemin du dossier

    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
     
    gchar *Selection_repertoire()
    {
        /// Variables
     
       GtkWidget *dossier;
       gchar *Chemin;
     
        /// Instructions
     
            dossier = gtk_file_chooser_dialog_new(  "Selection du dossier",
                                                    NULL,
                                                    GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
                                                    GTK_STOCK_OPEN,GTK_RESPONSE_ACCEPT,
                                                    NULL);
     
            gtk_window_set_modal(GTK_WINDOW(dossier), TRUE);
     
            switch(gtk_dialog_run(GTK_DIALOG(dossier)))
            {
                case GTK_RESPONSE_ACCEPT:
     
                /// Recuperation du chemin
     
                Chemin = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dossier));
                Chemin = g_locale_to_utf8(Chemin,-1,NULL,NULL,NULL);
                break;
     
                default: break;
            }
     
            gtk_widget_destroy(dossier);
            return Chemin;
     
    } // Fin Selection_repertoire
    et ca c'est la fonction qui va chercher a ouvrir le fichier suite a un double-clic sur un �l�ment de la liste

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
     
     
    void lit_tag(GtkTreeView *vue ,GtkTreePath *path,GtkTreeViewColumn *colonne,Tags *tag)
    {
        GtkTreeIter iter;
        GtkTreeModel *modele;
        gchar *str = NULL;
        gchar *fichier=NULL;
        FILE *son=NULL;
     
        /// on place iter sur l'élément pointé par l'utilisateur
     
        modele = gtk_tree_view_get_model(vue);
        gtk_tree_model_get_iter(GTK_TREE_MODEL(modele), &iter, path);
        gtk_tree_model_get (modele, &iter, 0, &str, -1);
     
        str=g_locale_to_utf8(str,-1,NULL,NULL,NULL);
        fichier=g_strconcat (tag->Chemin,"\\",str, NULL);
        printf("\n%s",fichier);
     
        son=fopen(fichier,"r+");
     
        if(son!=NULL)
        {
            int i=0;
            int j=0;
            char c[128] = {'\0'};
            char titre[31], auteur[31];
            char album[31], annee[5];
            char commentaires[31]; char piste[3];
     
     
            fseek(son, -128 * sizeof(char), SEEK_END);
            while(fread(&c[i], sizeof(char), 1, son), !feof(son))
                {
                    i++;
                }
     
            if(c[0]=='T' && c[1]=='A' && c[2]=='G')
     
                {
                    /// Titre
     
                        j=0;
                        for(i=3;i<33;i++)
                        {
                            titre[j]=c[i];
                            j++;
                        }
                        titre[j]='\0';
                        tag->chaine=g_locale_to_utf8((gchar*)titre,-1,NULL,NULL,NULL);
                        gtk_entry_set_text(GTK_ENTRY(tag->stitre), titre);
                        gtk_widget_show(tag->stitre);
     
                    ///Artiste
     
                        j=0;
                        for(i=33;i<63;i++)
                        {
                            auteur[j]=c[i];
                            j++;
                        }
                        auteur[j]='\0';
                        tag->chaine=g_locale_to_utf8((gchar*)auteur,-1,NULL,NULL,NULL);
                        gtk_entry_set_text(GTK_ENTRY(tag->sartiste),auteur);
                        gtk_widget_show(tag->sartiste);
     
                    /// Album
     
                        j=0;
                        for(i=63;i<93;i++)
                        {
                            album[j]=c[i];
                            j++;
                        }
                        album[j]='\0';
                        tag->chaine=g_locale_to_utf8((gchar*)album,-1,NULL,NULL,NULL);
                        gtk_entry_set_text(GTK_ENTRY(tag->salbum),album);
                        gtk_widget_show(tag->salbum);
     
                    /// Année
     
                        j=0;
                        for(i=93;i<97;i++)
                        {
                            annee[j]=c[i];
                            j++;
                        }
                        annee[j]='\0';
                        tag->chaine=g_locale_to_utf8((gchar*)annee,-1,NULL,NULL,NULL);
                        gtk_entry_set_text(GTK_ENTRY(tag->sannee),annee);
                        gtk_widget_show(tag->sannee);
     
                    /** Suite en fonction de la version du Tag.
                        Si le caractère 125 est égale à NULL alors il s'agira d'un
                        tag de version 1.1 sinon il s'agira d'un tag de version 1.0
                        et la lecture de leur tags diffèrent après l'année de parution */
     
                    if(c[125]!='\0')
                    {
     
                        printf("\nversion 1");
     
                        ///Commentaires
     
                        j=0;
                        for(i=98;i<127;i++)
                        {
                            commentaires[j]=c[i];
                            j++;
                        }
                        commentaires[j]='\0';
                    }
     
                    else
                    {
                        printf("\nversion1.1");
                        /// Commentaires
     
                            j=0;
                            for(i=98;i<124;i++)
                            {
                                commentaires[j]=c[i];
                                j++;
                            }
                            commentaires[j]='\0';
     
                        /// Numero de piste
     
                            i=c[126];
                            sprintf(piste,"%d",i);
                            gtk_entry_set_text(GTK_ENTRY(tag->snumpiste),(gchar*)piste);
                            gtk_widget_show(tag->snumpiste);
                    }
     
                        tag->chaine=g_locale_to_utf8((gchar*)commentaires,-1,NULL,NULL,NULL);
                        gtk_entry_set_text(GTK_ENTRY(tag->scoms),commentaires);
                        gtk_widget_show(tag->scoms);
     
                        /// Genre
     
                            i=c[127];
                            if(i==-1) i=12;
                            printf("\nnumero genre : %d",i);
                            gtk_combo_box_set_active(GTK_COMBO_BOX(tag->sgenre),i+1);
     
            }
        fclose(son);
        }
     
    }

  4. #4
    Membre �clair�
    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
    Par d�faut
    Pourquoi faire passer le nom du chemin retourn� par la fonction
    gtk_file_chooser_get_filename par la fonction g_locale_to_utf8 ?

  5. #5
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Par d�faut
    ben jtavoue ke jtestai sur un peu toute mes variables gchar pour m'assurer kel soit bien converti mais la fonction retourne le nom du dossier avec les caract�res sp�ciaux sans avoir besoin de la convertir !!! mais le probleme viens po du dossier car j'arrive a ouvrir un dossier comme r&b_fran�ais donc c bon c au niveau du nom du fichier !!!!

  6. #6
    Membre �clair�
    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
    Par d�faut
    et si tu ne reconvertis pas le nom de fichier s�lectionn� en utf8 ?

    edit : sinon tu ne prends pas en compte les fichiers dont le nom n'est pas valide

  7. #7
    Membre confirm�
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    182
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 182
    Par d�faut
    je pense avoir compris d'ou ca vien ca doit venir de ma fonction d'ouverture de fichier c la fonction standard C elle ne g�re pas les caract�res sp�ciaux
    alors que celle de gtk enfin celle de la glib plutot qui doit surement pouvoir g�rer les caract�res sp�ciaux.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. XMLHTTP, probl�mes avec les accents
    Par Berliozz dans le forum ASP
    R�ponses: 4
    Dernier message: 21/06/2006, 11h32
  2. AJAX : Probl�me avec les accents...
    Par @drien dans le forum XML/XSL et SOAP
    R�ponses: 2
    Dernier message: 29/01/2006, 14h33
  3. Petit probl�me avec les accents circonflexes...
    Par Harvester dans le forum Autres Logiciels
    R�ponses: 8
    Dernier message: 29/11/2005, 18h44
  4. [HTML][Encodage] Probl�mes avec les accents...
    Par eraim dans le forum Entr�e/Sortie
    R�ponses: 4
    Dernier message: 26/05/2004, 10h11
  5. [JDBC] Probl�me avec les accents
    Par seawolfm dans le forum Administration
    R�ponses: 2
    Dernier message: 29/01/2004, 14h56

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