Bonjour, je recherche une GUI pour gérer un fichier txt.
C'est vraiment très simple.
Il me faut juste un champ de saisie de texte qui affiche le contenu du fichier txt.
On peut modifier ce texte dans le champ de saisie.
On clique sur un bouton et le texte est enregistré dans le fichier txt.
En fait, j'essaye de faire ça avec GTK (j'ai installé Ruby 1.8.6-25 et la dernière version de GTK pour Windows).
Mais celui-ci ne gère pas l'ANSI (les caractères accentués).
Ou alors, il faut que je lance une méthode toute simple.
Quelqu'un saurait comment faire avec GTK, ou connaîtrait une autre GUI qui me permettrait de faire ces éditions de fichiers txt ?
D'avance, merci.
EDIT : c'est l'ANSI qui n'est pas géré, pas l'UTF-8.
mais ce serait curieux que les accents ne fonctionnent pas !
enfin, perso, je sauve mes sources en UTF-8 et tout baigne.
ch'tit exemple avec FXRuby
brut de fonderie ! c'est le moins qu'on puisse dire !
on peut TOUT, LARGEMENT, améliorer,
surtout ( mais pas seulement) la lecture qui peut être
faite "d'un coup" mais je n'avais plus ça en tête !
require 'fox16'
include Fox
appl = FXApp.new
main = FXMainWindow.new(appl,"test")
fichier=FXText.new(main,nil,0,LAYOUT_FILL_X)
FXButton.new(main," Lire ") { |b|
b.connect(SEL_COMMAND) {
logfile = File.new(fichier.text, 'r')
tmp=''
begin
while (l = logfile.readline)
tmp+=l.chomp+"\n"
end
rescue
end
logfile.close
$saisie.text=tmp
} }
FXButton.new(main," Ecrire ") { |b|
b.connect(SEL_COMMAND) {
fic = File.new(fichier.text, 'w+')
fic.write $saisie.text
fic.close
} }
$saisie=FXText.new(main,nil,0,LAYOUT_FILL_X|LAYOUT_FILL_Y)
appl.create()
main.show(PLACEMENT_CURSOR)
appl.run()
la 1ère zone de saisie, c'est le nom de fichier
aucun contrôle n'est fait !
la 2ème, le texte lu ou à écrire.
et les accents... nickel
Je réutilise l'un des exemples livrés avec la dernière version de GTK (utilisée avec require "gtk2").
Le problème vient peut-être du fait que je passe par le buffer.
L'erreur est immédiate : "g_utf8_validate assertion error" ou quelque chose comme ça.
Et c'est sûr, ce sont les accents qui font planter.
Je peux tout mettre sauf les accents. :\
Dès que je rentre chez moi (c'est ça quand on n'a pas internet à domicile), je teste ton exemple avec FXRuby.
Il faut juste que j'en télécharge la dernière version.
>>Le problème vient peut-être du fait que je passe par le buffer.
j'avoue mon incompétence...
mais : tes scripts,sources... enfin je ne sais pas
comnent tu appelles ça ( chacun ses habitudes ),
disons les .rb[w] que tu exécutes : sont-ils en utf-8 ?
à mon humble avis, passer de GTK à FXRuby ne résoudra pas
peut-être me trompe-je ???
il faudrait que je teste avec FXRuby et un .rb non en utf-8
<humour>je préfère attendre ta réponse finalement </humour>
FXRuby est malgré tout bien agréable,
va falloir que je regarde GTK !
Tiens, il fallait mettre "fox16" au lieu de "fox" ?
Je commence à comprendre pourquoi plus aucun de mes ancines projets ne marche...
Bon, j'ai bricolé un exemple, et bizarrement, les accents sont complétement foirés.
Je vais faire un copier/coller exact du script que tu m'as donné.
Au pire, j'ai trouvé un exemple dans la doc de FXRuby fournie avec la dernière version de Ruby.
Je peux même afficher des caractères espagnols ! (plus qu'à apprendre l'espagnol)
Par contre, je ne suis pas sûr que ça ne nécessite pas une autre adaptation, mais on verra après que j'ai testé ton exemple (j'avais oublié de le copier sur ma clé USb la dernière fois).
J'ai trouvé d'où vient le problème: il s'agit d'un conflit entre ANSI et UTF-8.
Ton programme fait tout en UTF-8, donc pas de problème.
Par contre, mon fichier texte est en ANSI, donc problème.
Je recherche donc un script pour convertir de l'ANSI en UTF-8 et inversement.
Apparemment, je ne suis pas le premier à avoir eu ce problème. Je posterai la solution si je réussis à la trouver.
J'ai cherché un peu sur le net.
Je suis même tombé sur des versions payantes, mais rien d'utilisable.
J'ai fini par le faire moi-même, et ça marche pour tous les caractères affichables.
(d'après les caractères spéciaux vus dans Open Office)
Par contre, je me suis aperçu qu'il faut que je fasse en réalité une version UTF-16, pour certains caractères, comme le symbole euro (qui n'est pas sur ce clavier, zut, je ne peux pas le faire !).
dans la doc ruby, il existe un exemple
qui transforme l'UTF8 en ASCII.
transformer l'ASCII en UTF8 c'est
prendre chaque caractère et le transformer
en "U+valeur ascii en hexa du caractère"
par exemple : ¿ ( ? renversé ) c'est U+00BF
Dans les GUI possibles il y a aussi WxRuby qui est très bien, je ne sais pas si ça gère les accents (à mon avis oui).
Va faire un tour par là : http://wxruby.rubyforge.org/wiki/wiki.pl
__________________________
Gné !