Outils pour utilisateurs

Outils du site


public:appel_macro_par_macro

Tutoriel d'appel d'une macro par une autre macro

Soit deux macros A et B codées dans les scripts “AMacro.groovy” et “BMacro.groovy”.

Code de la macro B appelée : "BMacro.groovy"

package org.txm.macro

import org.kohsuke.args4j.*
import groovy.transform.Field
import org.txm.rcpapplication.swt.widget.parameters.*

// déclaration de paramètres
@Field @Option(name="string", usage="an example string", widget="String", required=true, def="default string from B")
def string
@Field @Option(name="string2", usage="an example string", widget="String", required=false, def="default string2 from B")
def string2

// ouverture de la boite de dialogue de saisie des paramètres
if (!ParametersDialog.open(this)) return

// corps de la macro
println "B: string vaut \"$string\""
println "B: string2 vaut \"$string2\""

Code de la macro A appelante : "AMacro.groovy"

package org.txm.macro

println "A: appel de B"

// Ce code n'ouvrira pas la boite des paramètres de B, car tous les paramètres sont renseignés
gse.runMacro(BMacro, ["string":"string initialisée depuis A", "string2":"string2 initialisée depuis A"])

println "A: appel de B"

// ou bien
// Ce code ouvrira la boite des paramètres de B, car 'string' est obligatoire et pas renseigné.
gse.runMacro(BMacro, ["string2":"string2 initialisée depuis A"])

// Même code pour mieux controler l'ouverture des paramètres et récupérer l'environnement d'appel
gse.run(BMacro, ["args": ["string2":"string2 initialisée depuis A"], "selection":selection, "gse":gse])

Recette

  • créer dans la vue Macro les macros A et B avec le code ci-dessus
  • double-cliquer sur l'icone de A :
    • la boite de dialogue de B ne s'ouvre que lors du deuxième appel de B
    • la console affiche :
      Exécution de AMacro.groovy
      A: appel de B
      B: string vaut "string initialisée depuis A"
      B: string2 vaut "string2 initialisée depuis A"
      A: appel de B
      B: string vaut "default string from B"
      B: string2 vaut "string2 initialisée depuis A"
public/appel_macro_par_macro.txt · Dernière modification : 10/07/2023 14:28 de matthieu.decorde@ens-lyon.fr