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

Macro-commande

16 réponses
Avatar
geo cherchetout
Bonjour,
Connaissez vous un moyen d'enregistrer une longue séquence de frappes au
clavier, ou de l'écrire dans un script, de façon à pouvoir ensuite
l'exécuter avec une seule combinaison de touches ?
Ce serait pour simplifier l'enregistrement du fichier chaque fois que j'ai
fini de retoucher une image dans Gimp. Typiquement, je ne fais que changer
la casse de l'initiale qui, de minuscule, devient majuscule. Rien que pour
ça, je dois frapper une douzaine de touches ce qui devient lassant après
quelques milliers d'images.
J'ai bien lu un peu de documentation au sujet de script-fu mais cet outil me
semble fait pour des informaticiens chevronnés et je ne suis même pas sûr
qu'il permettrait de faire ce que je souhaite.
Je barbote toujours sous Mandriva. (2007.1)

6 réponses

1 2
Avatar
remy


ça marche pas?


ah ben oui aussi

remy

Avatar
Pierre Maurette
Bonjour,
Connaissez vous un moyen d'enregistrer une longue séquence de frappes au
clavier, ou de l'écrire dans un script, de façon à pouvoir ensuite l'exécuter
avec une seule combinaison de touches ?
Ce serait pour simplifier l'enregistrement du fichier chaque fois que j'ai
fini de retoucher une image dans Gimp. Typiquement, je ne fais que changer la
casse de l'initiale qui, de minuscule, devient majuscule. Rien que pour ça,
je dois frapper une douzaine de touches ce qui devient lassant après quelques
milliers d'images.
J'ai bien lu un peu de documentation au sujet de script-fu mais cet outil me
semble fait pour des informaticiens chevronnés et je ne suis même pas sûr
qu'il permettrait de faire ce que je souhaite.
Je barbote toujours sous Mandriva. (2007.1)


J'ai profité de votre message pour jeter un oeil aux possibilités des
greffons de The Gimp, logiciel que je ne connaissais pas. En fait, tout
ce qui concerne les greffons en python m'intéresse. Ce que vous voulez
faire ne semble pas complètement simple, un greffon ne pouvant pas à
priori détruire un truc qu'il n'a pas créé. Si j'ai bien lu.
Mais auparavant, une petite remarque. Je suppose que vous êtes dans un
contexte précis qui explique votre convention de nommage. Néanmoins,
cette convention présente à mon avis un inconvénient qui peut un jour
vous gêner. D'une façon générale, on évite absolument de différencier
des noms de fichiers uniquement par la casse. Même si vous êtes
définitivement sous Linux, vous risquez des soucis dès que vous
utiliserez un disque externe amovible, ce qui est une pratique de plus
en plus courante. Accessoirement, les noms commençant par autre chose
qu'une lettre minuscule, par exemple un chiffre, ou un underscore, se
transformeront à l'identique.

J'ai fait un petit test en Python-Fu, ça semble fonctionner, il faut
bien entendu modifier pour générer la liste des fichiers à traiter, ce
qui en général en Python est trivial. Je suis à votre disposition pour
ce genre d'ajustement.

<code>

#! /usr/bin/env python
# -*- coding: utf-8 -*-

from gimpfu import *

import os, Tkinter, tkMessageBox

def modalBox():
root = Tkinter.Tk()
root.withdraw()
return tkMessageBox.askokcancel('Au travail !', 'A la suivante ?')

def newFilename(filename):
x = os.path.split(filename)
return os.path.join(x[0], x[1][0].upper() + x[1][1:])

def test(*args):
"""tests divers"""
basedir = '/home/pierre/Bureau'
filenames = ['tvtime-output-11:33:10.png',
'tvtime-output-11:32:59.png']
for loadname in [os.path.join(basedir, x) for x in filenames]:
savename = newFilename(loadname)
image = pdb.gimp_file_load(loadname, loadname)
drawable = pdb.gimp_image_get_active_layer(image)
# pdb.plug_in_unsharp_mask(image, drawable, 5.0, 0.5, 0)
id = gimp.Display(image)
continuer = modalBox()
pdb.gimp_file_save(image, drawable, savename, savename)
gimp.delete(id)
if not continuer:
break


register(
'plugin_test', '', '', '', '', '',
'<Toolbox>/Xtns/Languages/Python-Fu/_Plugin de test', '',
[],
[],
test
)

main()

</code>

Bonne soirée

--
Pierre Maurette

Avatar
Pierre Maurette
(supersedes )

Bonjour,
Connaissez vous un moyen d'enregistrer une longue séquence de frappes au
clavier, ou de l'écrire dans un script, de façon à pouvoir ensuite
l'exécuter avec une seule combinaison de touches ?
Ce serait pour simplifier l'enregistrement du fichier chaque fois que j'ai
fini de retoucher une image dans Gimp. Typiquement, je ne fais que changer
la casse de l'initiale qui, de minuscule, devient majuscule. Rien que pour
ça, je dois frapper une douzaine de touches ce qui devient lassant après
quelques milliers d'images.
J'ai bien lu un peu de documentation au sujet de script-fu mais cet outil
me semble fait pour des informaticiens chevronnés et je ne suis même pas
sûr qu'il permettrait de faire ce que je souhaite.
Je barbote toujours sous Mandriva. (2007.1)


J'ai profité de votre message pour jeter un oeil aux possibilités des
greffons de The Gimp, logiciel que je ne connaissais pas. En fait, tout
ce qui concerne les greffons en python m'intéresse. Ce que vous voulez
faire ne semble pas complètement simple, un greffon ne pouvant pas à
priori détruire un truc qu'il n'a pas créé. Si j'ai bien lu.
Mais auparavant, une petite remarque. Je suppose que vous êtes dans un
contexte précis qui explique votre convention de nommage. Néanmoins,
cette convention présente à mon avis un inconvénient qui peut un jour
vous gêner. D'une façon générale, on évite absolument de différencier
des noms de fichiers uniquement par la casse. Même si vous êtes
définitivement sous Linux, vous risquez des soucis dès que vous
utiliserez un disque externe amovible, ce qui est une pratique de plus
en plus courante. Accessoirement, les noms commençant par autre chose
qu'une lettre minuscule, par exemple un chiffre, ou un underscore, se
transformeront à l'identique.

J'ai fait un petit test en Python-Fu, ça semble fonctionner, il faut
bien entendu modifier pour générer la liste des fichiers à traiter, ce
qui en général en Python est trivial. Je suis à votre disposition pour
ce genre d'ajustement.

<code>

#! /usr/bin/env python
# -*- coding: utf-8 -*-

from gimpfu import *

import os, Tkinter, tkMessageBox

def modalBox():
root = Tkinter.Tk()
root.withdraw()
return tkMessageBox.askokcancel('Au travail !', 'A la suivante ?')

def newFilename(filename):
x = os.path.split(filename)
return os.path.join(x[0], x[1][0].upper() + x[1][1:])

def test(*args):
"""tests divers"""
basedir = '/home/pierre/Bureau'
filenames = ['tvtime-output-11:33:10.png',
'tvtime-output-11:32:59.png']
for loadname in [os.path.join(basedir, x) for x in filenames]:
savename = newFilename(loadname)
image = pdb.gimp_file_load(loadname, loadname)
drawable = pdb.gimp_image_get_active_layer(image)
# pdb.plug_in_unsharp_mask(image, drawable, 5.0, 0.5, 0)
id = gimp.Display(image)
continuer = modalBox()
pdb.gimp_file_save(image, drawable, savename, savename)
gimp.delete(id)
if not continuer:
break


register(
'plugin_test', '', '', '', '', '',
'<Toolbox>/Xtns/Languages/Python-Fu/_Plugin de test', '',
[],
[],
test
)

main()

</code>

Bonne soirée

PS: Shame on me ! après mon baratin sur la casse et les noms de
fichiers, je me rends compte que les noms genre
tvtime-output-11:33:10.png, captures d'écrans TVTime pratiques pour des
tests, ne sont pas compatibles Windows ;-)

--
Pierre Maurette

Avatar
geo cherchetout
Le 18.05.2008 21:54, *Pierre Maurette* a écrit fort à propos :

J'ai profité de votre message pour jeter un oeil aux possibilités des
greffons de The Gimp, logiciel que je ne connaissais pas. En fait, tout
ce qui concerne les greffons en python m'intéresse. Ce que vous voulez
faire ne semble pas complètement simple, un greffon ne pouvant pas à
priori détruire un truc qu'il n'a pas créé. Si j'ai bien lu.


Il ne s'agit pas dans mon esprit de détruire quoi que ce soit ?

Mais auparavant, une petite remarque. Je suppose que vous êtes dans un
contexte précis qui explique votre convention de nommage. Néanmoins,
cette convention présente à mon avis un inconvénient qui peut un jour
vous gêner. D'une façon générale, on évite absolument de différencier
des noms de fichiers uniquement par la casse. Même si vous êtes
définitivement sous Linux, vous risquez des soucis dès que vous
utiliserez un disque externe amovible, ce qui est une pratique de plus
en plus courante. Accessoirement, les noms commençant par autre chose
qu'une lettre minuscule, par exemple un chiffre, ou un underscore, se
transformeront à l'identique.


Merci Pierre pour l'avertissement, je suis conscient de ce danger mais le
fichier original n'est pas destiné à survivre longtemps. Après avoir
enregistré la version modifiée et comparé leurs tailles respectives, je
l'efface très vite. (Il existe ailleurs, bien à l'abri au cas où.) Par la
suite, le nouveau fichier est incorporé dans un document pdf où il perd son
nom.
Ce changement de casse n'est qu'une convention personnelle et la lettre est
toujours la même : Un f qui devient un F. J'imagine que ça pourrait
simplifier le problème. Je pourrais adopter une autre convention mais je
tiens à ce que les deux versions du fichier soient consécutives dans
konqueror pour me faciliter la comparaison évoquée plus haut et comme tous
les fichiers ont la même initiale...

J'ai fait un petit test en Python-Fu, ça semble fonctionner, il faut
bien entendu modifier pour générer la liste des fichiers à traiter, ce
qui en général en Python est trivial. Je suis à votre disposition pour
ce genre d'ajustement.


Il s'agit de tous les fichiers d'un même répertoire. Suffit-il que je mette
filenames = * ?
J'ai prévenu, je ne suis pas informaticien et ne connais aucun langage de
programmation.


<code>

#! /usr/bin/env python
# -*- coding: utf-8 -*-

from gimpfu import *

import os, Tkinter, tkMessageBox

def modalBox():
root = Tkinter.Tk()
root.withdraw()
return tkMessageBox.askokcancel('Au travail !', 'A la suivante ?')

def newFilename(filename):
x = os.path.split(filename)
return os.path.join(x[0], x[1][0].upper() + x[1][1:])

def test(*args):
"""tests divers"""
basedir = '/home/pierre/Bureau'
filenames = ['tvtime-output-11:33:10.png',
'tvtime-output-11:32:59.png']
for loadname in [os.path.join(basedir, x) for x in filenames]:
savename = newFilename(loadname)
image = pdb.gimp_file_load(loadname, loadname)
drawable = pdb.gimp_image_get_active_layer(image)
# pdb.plug_in_unsharp_mask(image, drawable, 5.0, 0.5, 0)
id = gimp.Display(image)
continuer = modalBox()
pdb.gimp_file_save(image, drawable, savename, savename)
gimp.delete(id)
if not continuer:
break


register(
'plugin_test', '', '', '', '', '',
'<Toolbox>/Xtns/Languages/Python-Fu/_Plugin de test', '',
[],
[],
test
)

main()

</code>


Sauf imprévu, j'essaie ça dès demain et je donnerai le résultat. J'ai oublié
de préciser ma version de Gimp : 2.4.5.

Bonne soirée


Idem et merci encore. Le travail fourni me semble considérable. :-)

PS: Shame on me ! après mon baratin sur la casse et les noms de
fichiers, je me rends compte que les noms genre
tvtime-output-11:33:10.png, captures d'écrans TVTime pratiques pour des
tests, ne sont pas compatibles Windows ;-)


À cause des doubles points, je suppose ? J'ai souvent des soucis du même
genre avec les fichiers que m'envoie un correspondant qui utilise un Mac.

Avatar
Pierre Maurette

[...]

J'ai un peu avancé. Par intérêt personnel pour le problème.
Ne perds pas de temps avec la version d'hier ni faite ni à faire.
Contacte-moi en direct par mail, ou Skype en texte, qu'on ne pollue pas
le forum.
Si on débouche sur un truc exploitable, je posterai le résultat.

A plus...

--
Pierre Maurette
Avatar
geo cherchetout
Le 18.05.2008 21:54, *Pierre Maurette* a écrit fort à propos :

#! /usr/bin/env python
# -*- coding: utf-8 -*-

from gimpfu import *

import os, Tkinter, tkMessageBox

def modalBox():
root = Tkinter.Tk()
root.withdraw()
return tkMessageBox.askokcancel('Au travail !', 'A la suivante ?')

def newFilename(filename):
x = os.path.split(filename)
return os.path.join(x[0], x[1][0].upper() + x[1][1:])

def test(*args):
"""tests divers"""
basedir = '/home/pierre/Bureau'
filenames = ['tvtime-output-11:33:10.png',
'tvtime-output-11:32:59.png']
for loadname in [os.path.join(basedir, x) for x in filenames]:
savename = newFilename(loadname)
image = pdb.gimp_file_load(loadname, loadname)
drawable = pdb.gimp_image_get_active_layer(image)
# pdb.plug_in_unsharp_mask(image, drawable, 5.0, 0.5, 0)
id = gimp.Display(image)
continuer = modalBox()
pdb.gimp_file_save(image, drawable, savename, savename)
gimp.delete(id)
if not continuer:
break


register(
'plugin_test', '', '', '', '', '',
'<Toolbox>/Xtns/Languages/Python-Fu/_Plugin de test', '',
[],
[],
test
)

main()


Premier essai :

J'ai copié ça dans un fichier test.scm que j'ai placé, je crois, au bon
endroit, sans le rendre exécutable. Les variables basedir et filenames ont
été adaptées à la situation réelle. Dans Gimp, si je demande à actualiser
les scripts-fu j'obtiens ce message d'ereur :

Erreur à l'exécution de (load "/usr/share/gimp/2.0/scripts/test.scm")
Error: undefined sharp expression

D'autre part, le menu Exts (Pas de Xtns à l'horizon) n'a pas de sous-menu
Languages ni rien qui y ressemble.

1 2