Skip to main content

PathGetter - 6.4

a function to browse the files and returns a path.


josmiley / Luke spywoker
(mutualaccount)

This is a function that allows the user to enter a valid file path like in a file browser.
It returns a string.
Browse with mouse or keyboard. It supports tab-completion.
You can also display a resizable and rotatable image preview.

Usage is very simple:
     In a python script: PathGetter(path='',mode=None,caption='Path Getter')

mode = None ==> any path
mode = 1 ==> file path
mode = 2 ==> directory path

The code is executed in a separated window using the subprocess module.
Therefore, it's independent of the size of your window.

see example_pathgetter.py for example

thanks to Jouni Järvinen and spacemax for testing and optimization.


Changes

bug fixing about "import" compatibility

Links

Home Page
http://joel-murielle.perso.sfr.fr
Source
http://joel-murielle.perso.sfr.fr/PathGetter.zip

Releases

PathGetter 6.1 — 11 Jun, 2011

PathGetter 6.2 — 12 Jun, 2011

PathGetter 6.4 — 23 Jun, 2011

PathGetter 6.0 — 30 May, 2011

PathGetter 6.3 — 22 Jun, 2011

PathGetter 6.6 — 2 Jul, 2011

PathGetter 6.5 — 1 Jul, 2011

Pygame.org account Comments

  • Avirup Kundu 2011-05-08 17:26

    Traceback (most recent call last):

    File "C:\Documents and Settings\AVi\My Documents\Downloads\pygamebrowser\pygamebrowser\test.py", line 4, in <module>

    img = image.load(pygamebrowser.browse(mode=1))

    pygame.error: SDL_RWFromFile(): No file or no mode specified

    Why am i getting this error?? I ran the 2to3 script on the files.. I am using python 3.1

    josmiley 2011-05-10 08:11

    normally the bug has been fixed

  • Cnoffsin 2011-05-10 16:35

    thumbnail viewer. Nice!

  • spacemax 2011-05-24 05:36

    Salut jo,

    Certaines images se cachent lorsqu'on clic sur le bouton image only. Le processeur est par ailleurs beaucoup sollicité. Sinon encore un petit effort et Nautilus n'aura qu'à bien se tenir ! Beau travail.

    josmiley 2011-05-24 08:51

    salut max,

    effectivement, e vois aussi grace à tes screen un autre bug; le nom du fichier disparait de la barre du haut quand on déchoche 'images only'. Bon, ça c'est corrigé ...

    Peux-tu m'envoyer ton image "Microsoft_Windows_XP_Gold.jpg"; c'est bizard que imghdr la zappe.
    joel-murielle sfr.fr

    Nautilus n'a rien à craindre ^^, c'est pas un filebrowser que je fais.
    c'est une interface, qui évite à l'utilisateur de ton programme, de taper un chemin à la main.
    genre, tu demandes à l'utilisateur s'il veut enregistrer ou charger un fichier, par exemple son profile, mais tu lui laisses le choix de l'emplacement et du nom. Soit tu codes une boite de dialogue qui lui demande de saisir le chemin complet, soit tu utilises mon code.

    exemple:
    >>rep = raw_input('ouvrir une image ? ')
    >>if rep == 'o':
    . . . .    chemin = PathGetter.get()
    . . . .    pygame.image.load('chemin')

    merci pour le feedback.

  • spacemax 2011-05-25 08:06

    Salut jo,
    Impossible d'envoyer l'image par mail. Je la mets ici. Les png que tu as mis dans le zip n'ont pas de miniatures voir capture écran. 
    Et toujours le process à 100%. J 'ai ajouté  un wait dans ta boucle :
    while run:
            time.wait(50)
    a+

    josmiley 2011-05-25 13:02

    merci max,
    il semble que ce soit imghdr qui pose problème, je l'ai donc retiré.

    j'ai un peu optimisé la boucle, je pense que la charge est maintenant acceptable, tout en gardant une bonne fluidité de l'affichage.

    josmiley 2011-05-25 16:51

    finalement j'ai remis imghdr car les temps de chargement devenaient trop long, mais j'ai trouvé une combine qui devrait faire l'affaire.
    j'ai encore optimisé le rendu pour limiter l'utilisation du processeur.

    spacemax 2011-05-25 18:03

    nouvelle version testée. ok pour l'image Microsoft_Windows_XP_Gold.jpg, ok pour le processeur mais toujours pas de miniatures pour les fichiers livrés (button.png button0.png button1.png) dans le répertoire images alors que d'autres png sur mon disque ont une miniature. Peut-être un problème de version ?
    Sinon, une amélioration sympa serait de mettre en gras ou en surlignage les fichiers sélectionnés.
    a+

    josmiley 2011-05-25 20:44

    bonne idée pour le highlighting, mais j'aidu mal à harmoniser les couleurs; j'espère que ça reste lisible.
    sinon pour les images qui s'affichent pas ... hum, tu es sous xfce ?
    je vais installer cette distro pour voir .... je sais par experience que fût un temps, des images fesaient planter thunar.

    spacemax 2011-05-28 13:38

    Salut Joe,

    Je ne suis pas sous Thunar mais sous  Nautilus 2.30.1 Debian Squeeze noyau 2.6.32-5-686.
    Mes images png sont bien traitées et la miniature et affichée..Je te joins les captures.
    Un bug : quand on clique sur hidden files le nom disparaît dans la barre d'adresse.

    Pour les png, ça m'intrigue...

    josmiley 2011-05-28 18:43

    merci max
    c'est corrigé.

    pour les images incluses, je les ai reconverties avec un autre soft que gimp; peut-être que ça fonctionne maintenant.

    spacemax 2011-05-28 19:57

    Hé Hé...
    Le problème vient des accents dans les répertoires : pas de miniatures si accents dans le chemin !
    A corriger Jo.

    josmiley 2011-05-28 22:12

    bien vu !

    mais je crois que le bug vient de pygame
    en effet image.load() semble ne pas géré les chaine unicode accentuée

    (peut-être qu'en passant par IOstring ... hum, ça me semble un peu barbare ^^)

    spacemax 2011-06-04 21:13

    salut joe,

    Avec la 6.0, j'obtiens l'erreur suivante si des caractères accentués sont présents dans le chemin :
    /usr/lib/python2.6/dist-packages/pygame/sysfont.py:139: DeprecationWarning: os.popen3 is deprecated.  Use the subprocess module.  flin, flout, flerr = os.popen3('fc-list : file family style')Traceback (most recent call last):  File "PathGetter.py", line 391, in <module>    aaa.update(ev)  File "PathGetter.py", line 263, in update    if self.showviewer.status: self.load_image()  File "PathGetter.py", line 206, in load_image    f.name = ''AttributeError: can't set attribute

    J'ai modifié la fonction qui retourne le chemin en testant la plateforme Windows / Linux comme suit en convertissant en unicode pour Linux. Test Windows / Linux OK. A voir sur Mac.
        def load_image(self):                if OS!="WINDOWS":                         self.stringpath.OUTPUT=self.stringpath.OUTPUT.encode("utf-8")        if os.path.isfile(self.stringpath.OUTPUT) and imghdr.what(self.stringpath.OUTPUT):            try: self.viewer.IMAGE = image.load(self.stringpath.OUTPUT)            except:                with FileIO(self.stringpath.OUTPUT) as f:                    f.name = ''                    self.viewer.IMAGE = image.load(f)                        else: self.viewer.IMAGE = None

    A+

    josmiley 2011-06-05 22:03

    salut max,
    effectivement c'est un problème de version de python; 2.6 ne supporte pas unicode en natif
    mais je ne pense pas rétrocompatibiliser plus, car ça a déjà été un gros boulot pour faire tourner sur 2.7, 3, linux et windows ^^ .

    je te remercie encore car tu m'as beaucoup aidé. C'est très motivant lorsqu'il y a des personnes pour tester nos codes et qui sont intéressées par notre travail. J'espère te rendre la pareil pour tes prochains projets.

    ++

    spacemax 2011-05-28 13:40

    Un bug : quand on clique sur hidden files le nom disparaît dans la barre d'adresse ainsi que la miniature

  • Fanda 2017-12-09 13:36

    The web site http://joel-murielle.perso.sfr.fr/ does not work currently so the source code can not be downloaded from there. I created new web site for the project on github.com: https://github.com/existenceexists/PathGetter You can download the source code here: https://github.com/existenceexists/PathGetter/archive/master.zip But I am not sure which version it is, probably the latest PathGetter 6.6 — 2 Jul, 2011 . I did this because I like the project a lot and I want to make it available to all again. I use the project in my own project Place Pictures.