PyGtk : ajouter une extension

Le
Eul_Bofo
Bonjour.

Je suis un peu nouveau avec PyGtk (mais pas avec Gtk+ que j'ai déjà
utilisé avec OCaml). Je voudrais modifier la fonction de sauvegarde de
fichier d'une application (Gudio van Robot, http://gvr.sourceforge.org) de
manière à ce qu'une extension '.wld' ou '.gvr' soit automatiquement
ajoutée lorsque l'utilisateur oublie de de la taper.

Je n'ai pas vraiment compris ce que faisait l'exemple du tutorial de
PyGtk, en dehors d'écrire le nom du fichier à l'écran.

Quelqu'un a-t-il un exemple de code pas trop compliqué manipulant le
widget gtk.FileChooserDialog pour accomplir cette tâche ?

D'avance merci.

bye

--

Nicolas FRANCOIS | /
http://nicolas.francois.free.fr | |__|
X--/\
We are the Micro$oft. __V
Resistance is futile.
You will be assimilated. darthvader penguin
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
PiLS
Le #23198201
Le mer, 02 mar 2011 08:33:23, Eul_Bofo a ploppé:
Bonjour.

de manière à ce qu'une extension '.wld' ou '.gvr' soit automatiquement
ajoutée lorsque l'utilisateur oublie de de la taper.



[...]

Quelqu'un a-t-il un exemple de code pas trop compliqué manipulant le
widget gtk.FileChooserDialog pour accomplir cette tâche ?



Je vais répondre a coté de la question, mais c'est sans doute beaucoup
plus facile a faire dans le code Python "de base" que dans le GTK.
Quelquechose dans le style:

import re
[...]
if re.search("(.wld)", filename) != None:
filename=filename+".wld"


Il y a sans doute plus élégant (ma "solution" échoue si le nom de
fichier contient ".wld", n'importe ou, par exemple; il y a un
moyen d'éviter en utilisant mieux les expressions régulieres, afin
de vérifier la présence de ".wld" uniquement a la fin de la chaine.
cherche dans la doc: http://docs.python.org/library/re.html



--
PiLS
PiLS
Le #23198251

import re
[...]
if re.search("(.wld)", filename) != None:
filename=filename+".wld"



C'est "== None", pas "!= None", bien sur. Copier coller-deficient!


--
PiLS
Pierre Maurette
Le #23198281
PiLS, le 3/11/2011 a écrit :
Le mer, 02 mar 2011 08:33:23, Eul_Bofo a ploppé:
Bonjour.

de manière à ce qu'une extension '.wld' ou '.gvr' soit automatiquement
ajoutée lorsque l'utilisateur oublie de de la taper.



[...]

Quelqu'un a-t-il un exemple de code pas trop compliqué manipulant le
widget gtk.FileChooserDialog pour accomplir cette tâche ?



Je vais répondre a coté de la question, mais c'est sans doute beaucoup
plus facile a faire dans le code Python "de base" que dans le GTK.
Quelquechose dans le style:

import re
[...]
if re.search("(.wld)", filename) != None:
filename=filename+".wld"


Il y a sans doute plus élégant (ma "solution" échoue si le nom de
fichier contient ".wld", n'importe ou, par exemple; il y a un
moyen d'éviter en utilisant mieux les expressions régulieres, afin
de vérifier la présence de ".wld" uniquement a la fin de la chaine.
cherche dans la doc: http://docs.python.org/library/re.html



os.path.splitext() évite de réinventer la roue. Si l'extension *doit*
être '.wld' même pas besoin de test:
os.path.splitext(filename)[0] + '.wld'

--
Pierre Maurette
Alain Ketterlin
Le #23198381
PiLS
[...]
import re
[...]
if re.search("(.wld)", filename) != None:
filename=filename+".wld"



if not filename.endswith(".wld"):
...

A mon avis, il n'y vraiment aucune raison de sortir le bazooka des
expressions régulières pour tester si une chaîne finit par u n suffixe
donné, surtout si c'est pour introduire des bugs comme ceux que tu
mentionnes, ou pour utiliser gratuitement un groupe inutile.

Pour ce qui est de comparer à None, puisqu'il n'y a jamais qu'une seule
instance None on peut aussi écrire "is None" ou "is not None".

La solution de Pierre est plus conforme à ce qu'est un nom de fichier,
mais je la trouve un peu lourde.

-- Alain.
Publicité
Poster une réponse
Anonyme