Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

PyGtk : ajouter une extension

4 réponses
Avatar
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

4 réponses

Avatar
PiLS
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
Avatar
PiLS

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



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


--
PiLS
Avatar
Pierre Maurette
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
Avatar
Alain Ketterlin
PiLS writes:

[...]
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.