[[TranslatedPages(revision=4)]] = Complemento Scripting = == En pocas palabras == El complemento {{{scripting}}} le permite ejecutar secuencias de comandos dentro de JOSM. Se usa para automatizar las tareas pequeñas para las que no se dedican complementos o no están disponibles, es decir, * pruebas adicionales de calidad para la invalidación de los casos de prueba que se encuentren disponibles * ingresar automáticamente datos en situaciones muy específicas (es decir, secuencias de números de casas) * importación de un formato de archivo personalizado que no es compatible con JOSM * exportar a un formato de archivo personalizado que no es compatible con JOSM Usted puede utilizar cualquier lenguaje de programación que proporcione un JSR-223 compatible con el motor de scripting, en particular: * [http://groovy.codehaus.org/ Groovy] * [http://www.jython.org/ Python] * [http://www.mozilla.org/rhino/ JavaScript] * [http://jruby.org/ Ruby] == Configurando un Motor de Scripting == El complemente {{{scripts}}} no viene con un motor de scripts. Una instalación estándar de Java 6 ya debería incluir un motor de JavaScript (Rhino). Si desea utilizar otro lenguaje de script, tiene que configurar el respectivo motor de scripts primero: 1. Seleccione el ítem del menú '''Scripting''' -> '''Configure ...''' 2. Compruebe si el motor de scripting preferido ya está configurado. Si no es así, * Descarga el archivo jar que proporciona el motor de scripting * Añadir la ruta de este archivo jar en la lista de jars de motores de scripting == Ejecutando un Script == 1. Seleccione el ítem del menú '''Scripting''' -> '''Run...''' 2. Introduzca la ruta hacia el script 3. Pulse '''Run''' == Escribiendo un script == El complemento {{{scripting}}} no proporciona una consola para el desarrollo de scripts (todavía). Utilice su editor preferido o entorno de desarrollo para escribir el script en su idioma preferido. Aquí hay tres ejemplos que muestran el número de capas en JOSM. Si desea escribir scripts más complejos, tendrá que familiarizarse con el modelo de objetos JOSM y, en consecuencia, con la base de código de JOSM, porque no hay explícito una secuencias de comandos de la API, ni ninguna documentación fuera del código de JOSM. === Groovy === {{{ /* * HelloWorld.groovy - displays the number of actually open layers */ import javax.swing.JOptionPane; import org.openstreetmap.josm.Main; def numlayers = Main.main?.map?.mapView?.numLayers if (numlayers == null) numlayers = 0 JOptionPane.showMessageDialog(Main.parent, "[Groovy] Hello World!\nYou have ${numlayers} layer(s).") }}} === JavaScript === {{{ /* * HelloWorld.js - displays the number of currently open layers */ importClass(Packages.javax.swing.JOptionPane) importClass(Packages.org.openstreetmap.josm.Main) function getMapView() { if (Main.main == null) return null if (Main.main.map == null) return null return Main.main.map.mapView } var numlayers = 0 var mv = getMapView() if (mv != null){ numlayers = mv.getNumLayers() } JOptionPane.showMessageDialog(Main.parent, "[JavaScript] Hello World! You have " + numlayers + " layer(s).") }}} === Python === {{{ #!python # # HelloWorld.py - displays the number of currently open layers # from javax.swing import JOptionPane from org.openstreetmap.josm import Main def getMapView(): if Main.main == None: return None if Main.main.map == None: return None return Main.main.map.mapView numlayers = 0 mv = getMapView() if mv != None: numlayers = mv.getNumLayers() JOptionPane.showMessageDialog(Main.parent, "[Python] Hello World! You have %s layer(s)." % numlayers) }}}