3.4. Votre premier script de Script-Fu

Vous tirez la langue, non ? Allez, entamons notre quatrième leçon : votre premier script de Script-Fu !

Maintenant, faisons connaître la fonction à GIMP. On réalise cela en appelant la fonction <code>script-fu-register</code>. Quand GIMP lira le script, il exécutera cette fonction qui enregistrera le script dans la base de procédures. Vous pouvez placer cette fonction où vous voulez dans votre script, mais personnellement je la mets à la fin, après tout le reste de mon code.

Voici le listing pour enregistrer cette fonction (j'expliquerai ses paramètres dans un instant) :

        (script-fu-register
          "script-fu-text-box"                        ;func name
          "Text Box"                                  ;menu label
          "Creates a simple text box, sized to fit\
            around the user's choice of text,\
            font, font size, and color."              ;description
          "Michael Terry"                             ;author
          "copyright 1997, Michael Terry"             ;copyright notice
          "October 27, 1997"                          ;date created
          ""                     ;image type that the script works on
          SF-STRING      "Text:"         "Text Box"   ;a string variable
          SF-FONT        "Font:"         "Charter"    ;a font variable
          SF-ADJUSTMENT  "Font size"     '(50 1 1000 1 10 0 1)
                                                      ;a spin-button
          SF-COLOR       "Color:"        '(0 0 0)     ;color variable
        )
        (script-fu-menu-register "script-fu-text-box" "<Toolbox>/Xtns/Script-Fu/Text")
      

Enregistrez ces fonctions dans un fichier texte avec le suffixe .scm dans votre répertoire de scripts, et choisissez Exts->Script-Fu->Rafraîchir les Scripts, et ce nouveau script apparaîtra comme Xtns->Script-Fu->Text->Text Box.

Si vous lancez ce nouveau script, il ne fera rien bien sûr, mais vous pourrez voir les invites que vous avez créées quand vous avez enregistré le script (ça sera plus clair plus loin).

Finalement, si vous invoquez le Navigateur de Procédures ( Exts->Navigateur de Procédures), vous verrez que votre script apparaît maintenant dans la base de procédures.

Pour enregistrer notre script dans GIMP, nous appelons la fonction script-fu-register, remplissons les sept paramètres requis et nous ajoutons nos propres paramètres de script, ainsi qu'une description et une valeur par défaut pour chaque paramètre.

Les paramètres requis

  • Le nom de la fonction que nous avons définie. C'est la fonction appelée quand notre script est invoqué, le point d'entrée dans notre script. C'est important parce qu'il est possible de définir plusieurs autres fonctions dans le même fichier, et GIMP doit savoir quelle fonction appeler. Dans notre exemple, nous n'avons défini qu'une seule fonction, text-box, que nous avons enregistrée.

  • L'emplacement dans le menu où le script est inséré est spécifié comme un chemin dans Unix, avec la racine du chemin qui est soit la boîte à outils, soit le clic droit.

    Si votre script n'opère pas sur une image existante (et donc crée une nouvelle image, comme le fera notre script Text Box, vous voudrez l'insérer dans la fenêtre principale de GIMP (celle où se trouvent tous les outils).

    Si votre script est destiné à opérer sur une image présente à l'écran, vous voudrez l'insérer dans le menu d'image qui apparaît quand vous faites un clic droit sur une image. Le reste du chemin pointe sur les listes de menus, les menus et les sous-menus. Ainsi, nous avons enregistré notre script dans le menu Text du menu Scrip-Fu du menu Exts de la Boîte à outils Exts->Script-Fu->Text->Text Box ).

    Si vous avez remarqué, le sous-menu Text dans le menu Script-Fu n'existait pas au départ : GIMP crée automatiquement les menus qui n'existent pas.

  • Une description de votre script, qui sera affichée dans le Navigateur de Procédures.

  • Votre nom (l'auteur du script)

  • Information de Copyright.

  • La date à laquelle le script a été créé, ou la date de dernière révision.

  • Les types d'image sur lesquels travaille le script. Il peut s'agir de RGB, RGBA, GRAY, GRAYA, INDEXED, INDEXEDA. Ou aucun d'eux: dans notre cas, nous créons une image et nous n'avons pas besoin d'en définir le type.

[Note] Note

En plus des paramètres de types ci-dessus, il en existe d'autres pour le mode interactif, chacun d'eux créant une zone de dialogue dans la fenêtre de dialogue du script-fu. Vous trouverez la description de ces paramètres et des exemples dans le script de test plug-ins/script-fu/scripts/test-sphere.scm fourni avec le code source de GIMP.

Type de paramètre

Description

SF-ADJUSTMENT

En mode interactif il crée une zone de dialogue dans la fenêtre de dialogue du script-fu.

SF-ADJUSTMENT "label" '(value lower upper step_inc page_inc digits type)

"label" : Texte affiché devant la zone de dialogue.

value : Valeur affichée par défaut au départ.

lower / upper : valeurs mini / maxi (détermine la plage de choix).

step_inc : valeur pour incrémenter/décrémenter.

digits : nombre de chiffres après la virgule (partie décimale).

type : SF-SLIDER ou 0 (glissière), SF-SPINNER ou 1 (bouton à flèches).

SF-COLOR

Crée un bouton de choix de couleur.

SF-COLOR "label" '(red green blue)

ou

SF-COLOR "label" "color"

"label" : Texte affiché devant la zone de dialogue.

'(red green blue) : liste de trois valeurs pour les composantes rouge, vert et bleu de la couleur par défaut.

"color" : un nom de couleur en notatation CSS pour la couleur par défaut.

SF-FONT

Crée une zone de sélection de fonte. Retourne le nom de la fonte sous la forme d'une chaîne de caractères. Il existe deux nouvelles procédures de type gimp-text pour utiliser facilement ce paramètre que retourne la fonction:

(gimp-text-fontname image drawable x-pos y-pos text border antialias size unit font)

(gimp-text-get-extents-fontname text size unit font)

dans lesquelles le paramètre "font" est le nom de la fonte que vous obtenez. La taille spécifiée dans fontname est ignorée. Elle est utilisée seulement dans le sélecteur de fonte. On vous demandera de donner une valeur utilisable (24 pixels est un choix correct).

SF-FONT "label" "fontname"

"label" : Texte affiché devant la zone de dialogue.

"fontname" : nom de la fonte par défaut.

SF-BRUSH

Crée une zone de choix de brosse : prévisualisation de la brosse et à sa droite, bouton "Parcourir". Cliquer sur ce dernier fait apparaître la boite de dialogue des brosses avec possibilité de choisir une brosse ainsi que son espacement, son opacité et son mode.

SF-BRUSH "Brush" '("Circle (03)" 100 44 0)

Dans ce cas la brosse par défaut sera un Cercle (03) avec une opacité de 100, un espacement de 44 et en mode normal (0).

Si cette sélection reste inchangée la valeur passée à la fonction comme paramètre sera '("Circle (03)" 100 44 0).

SF-PATTERN

Crée une zone de choix de motif : prévisualisation du motif et à sa droite, bouton "Parcourir". Cliquer sur ce dernier fait apparaître la boite de dialogue des motifs.

SF-PATTERN "Pattern" "Maple Leaves"

La valeur retournée quand le script est appelé est une chaîne de caractères contenant le nom du motif. Si la sélection par défaut ci-dessus n'est pas modifiée, la chaîne contiendra "Maple Leaves".

SF-GRADIENT

Crée un bouton contenant une prévisualisation du dégradé.

SF-GRADIENT "Gradient" "Deep Sea"

La valeur retournée quand le script est appelé est une chaîne de caractères contenant le nom du dégradé. Si la sélection par défaut ci-dessus n'est pas modifiée, la chaîne contiendra "Deep Sea".

SF-PALETTE

Crée un bouton contenant le nom de la palette sélectionnée.

SF-PALETTE "Palette" "Named Colors"

La valeur retournée quand le script est appelé est une chaîne de caractères contenant le nom de la palette. Si la sélection par défaut ci-dessus n'est pas modifiée, la chaîne contiendra "Named Colors".

SF-FILENAME

Crée un bouton contenant le nom d'un fichier.

Cliquer sur celui-ci fait apparaître la boite de dialogue de sélection de fichiers.

SF-FILENAME "Environment Map" (string-append "" gimp-data-directory "/scripts/beavis.jpg")

La valeur retournée quand le script est appelé est une chaîne de caractères contenant le nom du fichier.

SF-DIRNAME

Similaire à SF-FILENAME, mais permet de choisir un dossier.

SF-DIRNAME "Image Directory" "/var/tmp/images"

La valeur retournée quand le script est appelé est une chaîne de caractères contenant le nom du dossier.

SF-OPTION

Crée une boîte de choix (combo-box) pour des options possibles.

La première option est l'option par défaut.

SF-OPTION "Orientation" '("Horizontal" "Vertical")

La valeur retournée quand le script est appelé est le numéro de l'option choisie (0 correspondant à la 1ère option...).

SF-ENUM

Crée une boîte de choix (combo-box) montrant toutes les valeurs possibles pour un type donné. Le premier paramètre doit être un nom d'énumération de valeurs de GIMP, sans le préfixe "Gimp". Le second spécifie la valeur par défaut.

SF-ENUM "Interpolation" '("InterpolationType" "linear")

La valeur retournée quand le script est appelé est la valeur choisie de l'énumération.



[4] Cette section ne fait pas partie du didacticiel d'origine.