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

Interfaces Graphiques Perl Discussion :

Tk::DirTree n'affiche pas les dossiers dont le nom contient une lettre accentuée


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre actif
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 164
    Points : 218
    Points
    218
    Par défaut Tk::DirTree n'affiche pas les dossiers dont le nom contient une lettre accentuée
    Bonjour,
    J'utilise ActivePerl 5.8 sous Windows XP (édition familiale service Pack3)
    mon programme commence par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #!/perl/bin/perl -w
    use utf8;
    use strict ;
    use Tk;
    use Tk::DirTree;
    Les caractères accentués s'affichent correctement dans la Listbox que
    j'utilise, mais les dossiers (répertoires) dont le nom comporte une lettre accentuée ou un c cédille (ex: "Fichiers reçus") ne sont pas affichés dans
    le DirTree, c'est comme s'ils n'existaient pas.
    Si j'enlève la ligne "use utf8" et si j'utilise l'encodage "Windows classique" cela ne change absolument rien au problème !
    Merci d'avance.
    Nibroc.

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Salut,

    Bienvenu sur le forum.
    L'idéal serait de proposer un code plus complet afin que les forumeurs puissent le tester sans avoir à le réécrire.

    Merci

  3. #3
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Voici un exemple de script testé, mais je n'ai pas de soucis avec mes répertoires avec accents ou c cédille.

    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
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Tk;
    use Tk::DirTree;
     
    my $mw = MainWindow->new();
     
    my $dl = $mw->Scrolled(
      'DirTree',
      -scrollbars       => 'osoe',
      -width            => 35,
      -height           => 20,
      -selectmode       => 'browse',
      -exportselection  => 1,
      -background       => 'white',
      -selectforeground => 'white',
      -selectbackground => '#8C97F5',
      -directory        => 'C:/',
    )->pack( -expand => 1, -fill => 'both' );
     
    MainLoop();

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 164
    Points : 218
    Points
    218
    Par défaut
    Merci pour la réponse,
    Voici mon ébauche de programme dans l'état actuel :
    (J'ai fait un copier-coller et les indentations ont disparues et le ::
    entre Tk et DirTree est devenu un smiley !)


    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
    #!/perl/bin/perl -w
    use utf8;
    use strict ;
    use Tk;
    use Tk::DirTree;
    my $mw=MainWindow->new(-title=>'Tree');
    my $dt=$mw->Scrolled("DirTree",-scrollbars=>'e',-directory=>"C:/",
        -command=>\&change)->pack(-fill=>'both',-expand=>1,-ipadx=>150,-ipady=>100,-padx=>5,-pady=>5);
    $dt->configure(-background =>"#ccffcc", -showhidden=>1) ;
    $dt->Subwidget("yscrollbar")->configure(-background => "lightgreen",-troughcolor => "blue") ;
    $mw->Label(-text=>"Répertoire sélectionné :")->pack;
    my $repertoire="Aucun répertore sélectionné !" ;
    $mw->Label(-textvariable=>\$repertoire,-font=>[-size=>7,-weight=>"bold"])->pack ;
    my @files ;
    my $lb=$mw->Scrolled("Listbox",-scrollbars=>"e")->pack(-fill=>'both',-expand=>1);
    $mw->Button(-text=>'Quitter',-command=>sub {exit})->pack(-side=>'bottom',-padx=>5,-pady=>5);
     
     
    MainLoop;
    sub change
    {
      my $nd=shift;chdir $nd; $repertoire=$nd;
      @files=() ; $lb->delete(0,'end') ;
      my @allfiles=() ;
      opendir DH,$nd ;
      @allfiles=readdir DH ;
      closedir DH ;
      foreach (@allfiles)
      {
        if(-f $_)
        {
          push(@files,$_) ;
          $lb->insert('end',$_) ;
        }
      }
    }




    Citation Envoyé par djibril Voir le message
    Salut,

    Bienvenu sur le forum.
    L'idéal serait de proposer un code plus complet afin que les forumeurs puissent le tester sans avoir à le réécrire.

    Merci

  5. #5
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Veuillez utiliser la prochaine fois les balises codes afin d'améliorer la lisibilité du code sur le forum.
    Pour cela, sélectionner votre code et cliquer sur #

    Merci

  6. #6
    Membre actif
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 164
    Points : 218
    Points
    218
    Par défaut
    Très curieux, j'ai moi ça ne marche pas !

    Citation Envoyé par djibril Voir le message
    Voici un exemple de script testé, mais je n'ai pas de soucis avec mes répertoires avec accents ou c cédille.



    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
    #!/usr/bin/perl
    use warnings;
    use strict;
    use Tk;
    use Tk::DirTree;
     
    my $mw = MainWindow->new();
     
    my $dl = $mw->Scrolled(
      'DirTree',
      -scrollbars       => 'osoe',
      -width            => 35,
      -height           => 20,
      -selectmode       => 'browse',
      -exportselection  => 1,
      -background       => 'white',
      -selectforeground => 'white',
      -selectbackground => '#8C97F5',
      -directory        => 'C:/',
    )->pack( -expand => 1, -fill => 'both' );
     
    MainLoop();

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Utiliser ne suffit pas, il faut que votre script soit également en utf8. Cela se règle via votre éditeur de texte.

  8. #8
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    Votre script suivant fonctionne très bien :
    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
    #!/perl/bin/perl
    use warnings;
    use strict;
    use utf8;
    use Tk;
    use Tk::DirTree;
    my $mw = MainWindow->new( -title => 'Tree' );
    my $dt = $mw->Scrolled(
        "DirTree",
        -scrollbars => 'e',
        -directory  => "C:/",
        -command    => \&change
        )->pack(
        -fill   => 'both',
        -expand => 1,
        -ipadx  => 150,
        -ipady  => 100,
        -padx   => 5,
        -pady   => 5
        );
    $dt->configure( -background => "#ccffcc", -showhidden => 1 );
    $dt->Subwidget("yscrollbar")
        ->configure( -background => "lightgreen", -troughcolor => "blue" );
    $mw->Label( -text => "Répertoire sélectionné :" )->pack;
    my $repertoire = "Aucun répertore sélectionné !";
    $mw->Label(
        -textvariable => \$repertoire,
        -font         => [ -size => 7, -weight => "bold" ]
    )->pack;
    my @files;
    my $lb = $mw->Scrolled( "Listbox", -scrollbars => "e" )
        ->pack( -fill => 'both', -expand => 1 );
    $mw->Button(
        -text    => 'Quitter',
        -command => sub {exit}
    )->pack( -side => 'bottom', -padx => 5, -pady => 5 );
     
    MainLoop;
     
    sub change {
        my $nd = shift;
        chdir $nd;
        $repertoire = $nd;
        @files      = ();
        $lb->delete( 0, 'end' );
        my @allfiles = ();
        opendir DH, $nd;
        @allfiles = readdir DH;
        closedir DH;
     
        foreach (@allfiles) {
            if ( -f $_ ) {
                push( @files, $_ );
                $lb->insert( 'end', $_ );
            }
        }
    }

  9. #9
    Membre actif
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 164
    Points : 218
    Points
    218
    Par défaut
    Je croyais avoir sauver mon script en utf8 avec PSPad, mais comme ça ne fonctionne pas correctement j'ai des doutes. Dans le menu "Format", j'ai bien coché "utf-8".
    Comment être sûr que le fichier est sauver en utf8 ?


    Citation Envoyé par djibril Voir le message
    Utiliser ne suffit pas, il faut que votre script soit également en utf8. Cela se règle via votre éditeur de texte.

  10. #10
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 820
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 498 771
    Points
    498 771
    Par défaut
    J'utilise aussi PSPAD .
    Format => clique sur utf8 => et sauvegarde du fichier et moi ça suffit.

  11. #11
    Membre actif
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 164
    Points : 218
    Points
    218
    Par défaut
    Citation Envoyé par djibril Voir le message
    J'utilise aussi PSPAD .
    Format => clique sur utf8 => et sauvegarde du fichier et moi ça suffit.
    C'est ce que je fais, mais chez moi, ça ne marche pas.
    Ça vient peut-être des choix dans "Options régionales et linguistiques" du panneau de configuration ? Je vais regarder de ce côté.
    Merci pour l'aide.
    Nibroc

  12. #12
    Membre actif
    Homme Profil pro
    Inscrit en
    Juillet 2009
    Messages
    164
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 164
    Points : 218
    Points
    218
    Par défaut
    Je viens de désinstaller entièrement Perl 5.8.6, puis j'ai installé Perl 5.10 (et tous les modules que j'avais avant) et là : tout marche bien, DirTree affiche tous les répertoires comme "Mes vidéos" ou encore "Mes fichiers reçus" etc.
    Le problème venait donc de la version de Perl.
    Merci pour l'aide.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Virtual Host] Apache n'affiche pas les dossiers
    Par Pixys dans le forum Apache
    Réponses: 4
    Dernier message: 24/01/2009, 23h54
  2. Réponses: 1
    Dernier message: 12/09/2008, 10h36
  3. Réponses: 6
    Dernier message: 10/04/2008, 11h27
  4. supprimer toutes les feuilles dont le nom contient "produit"
    Par Amiral19 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 10/07/2007, 14h27
  5. copy dans un dossier dont le nom contient un espace
    Par amirym dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 23/06/2007, 19h54

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