menu ouvrir fichier

menu ouvrir fichier - Perl - Programmation

Marsh Posté le 03-11-2013 à 15:46:39    

bonjour à tous,
 
je veux ouvrir un fichier à l'aide d'un menu ouvrir et afficher son continu ds une zone de texte :
 
voici le code que je fai :  
 

Code :
  1. $menu_ouvrir->command( -label   => 'Ouvrir', -command => \&open_file  ) ;
  2. my $nom_fic;
  3.     sub open_file {
  4.     my $filetypes =     [
  5.             ['Drawing Files',    '.txt'],
  6.             ['All files',    '*']
  7.             ];
  8.     my $selected_file = $fenetre->getOpenFile(
  9.   -filetypes  => $filetypes,
  10.                  -initialdir => "/home/hp/Bureau/Master",
  11.    -multiple   => 1,);
  12.      $nom_fic = $selected_file;
  13.      $txt->delete("1.0","end" );
  14.       if (!open(FIC,"$selected_file" )) {
  15.                 $txt->insert("end","ERREUR : Impossible d\'ouvrir < $nom_fic >\n" );
  16.                 return;
  17.     }
  18.    while () {
  19.                 $txt->insert("end",$_);
  20.     }
  21.     close(FIC);
  22.     }


 
malheureusement il m'affiche tjrs : ERREUR : Impossible d'ouvrir < ARRAY(0x88f4340) >  
 

Reply

Marsh Posté le 03-11-2013 à 15:46:39   

Reply

Marsh Posté le 03-11-2013 à 16:21:01    

-multiple   => 1 ça veut donc dire que vous allez pouvoir sélectionner plusieurs fichiers, et donc que c'est un array qui va être retourné
Donc soit vous faites -multiple   => 0, soit vous faites my @selected_files = $fenetre->getOpenFile(... avec multiple a 1
 
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 03-11-2013 à 16:39:25    

oui gilou merci je resolu le pblme , cependant si le fichier est en arabe alors on fait :  
open FIC, '<:encoding(UTF-8)', $selected_file or $txt->insert('end', "ERREUR : Impossible d'ouvrir $selected_file\n" ), return;
 
si nn si le fichier contient des caractère arabe et français au mme temps l'affichage ds ce cas est erroné !!!!

Reply

Marsh Posté le 03-11-2013 à 18:49:01    

l'affichage de quoi?
Tout cela n'est pas très clair.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 03-11-2013 à 20:35:38    

si le fichier est en arabe alors l'affichage de son continu n'est pas juste ar exemple  
au lieu d'afficher :  
 
اَ هَاكَ هَذَاكَ هُوَ
ثَمَّاشِي وَاحِدْ آخِرْ بَعْدُو  
ثَمَّ الحْدَاشْ مْتَاعْ اللِيلْ
سَلَامُ عَلَيْكُمْ بِاللَهْ تِكَايْ لْتُونِسْ بْقَدَاهْ  
 il m'affiche des caractères séparés

Reply

Marsh Posté le 03-11-2013 à 22:04:42    

en effet l'affichage n'est pas bon de tout ce comme indique cette phote :  
 
[url]
 
 
http://www.developpez.net/forums/a [...] al_tk.png/
 
[/url]


Message édité par rim_enis le 03-11-2013 à 22:05:45
Reply

Marsh Posté le 03-11-2013 à 23:54:58    

Postez cette photo ici avec ce serveur dédié: http://reho.st/ afin que je puisse voir de quoi il s'agit.
A+,


Message édité par gilou le 03-11-2013 à 23:55:26

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-11-2013 à 00:21:20    

Je crois que j'ai compris: les text panels de tk ne supportent pas le sens droite gauche et les ligatures.
Le plus simple serait de
- prendre le texte utf8 ligne a ligne
- passer une ligne a un arabjoin ( http://czyborra.com/arabjoin/arabjoin ) modifié pour retourner le texte, et non l'imprimer
- envoyer la ligne recodée par arabjoin au panneau texte tk
et ça devrait marcher (espérons le).
 
Sinon, il faut voir si ce qui es fait en tcl/tk ici: http://www2.tcl.tk/38244 est transposable en perl/tk
 
A+,


Message édité par gilou le 04-11-2013 à 00:29:56

---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
Reply

Marsh Posté le 04-11-2013 à 09:09:10    

[url]
http://reho.st/upload
[/url]
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed