
Acaba de salir una nueva build para gvSIG 2.1.0.2217 en fase de desarrollo en la que se han realizado grandes mejoras en el módulo de Scripting y tiene varias novedades que iremos anunciando próximamente. Al estar en fase de desarrollo se agradece que reportéis todos los bugs que podáis encontrar.
Una nueva característica (que ya estaba implementada pero no funcionaba correctamente) que podemos encontrar es el módulo de diálogos. Este módulo dentro del apartado de scripting nos permitirá crear fácilmente ventanas interactivas con etiquetas, cajas de texto, opciones, botones, etc. Las posibilidades son infinitas. Esto aumenta en gran medida la forma de interactuar con nuestro script, así como aumentar las capacidades del mismo.
·
Cómo crear un script de tipo Dialog
Para empezar a probar estos scripts lo que necesitamos es:
- Nueva build en desarrollo de gvsig, minimo la versión 2.1.0.2217
- Instalar el módulo de Scripting en el Administrador de complementos

Con esto ya podemos ir a Herramientas – Scripting – Scripting Composer.
Al crear un nuevo script, lo que debemos de cambiar ahora es el Type y seleccionar Dialog en vez de Script que es lo que estamos acostumbrados.
Nos aparecerá un nuevo script en la pantalla en blanco, parece todo similar aunque podemos ver que existen un par de diferencias. Si nos fijamos existen unas pestañas extras a los que no estamos acostumbrados. Estos scripts constan de dos partes (cuando se almacenan también constan de dos archivos), una parte se encarga de la creación de la ventana y de las características que tiene, y otra parte es el código que ejecuta este script.
Podemos ver un Menu (#1) nuevo arriba que nos servirá para editar, cargar, etc, este tipo nuevo de scripts. Podemos ver la lista de objetos (#2) que contiene el formulario , aquí iremos añadiendo los nuevos botones y demás. En las pestañas (#3) podemos encontrar dos, una pestaña XML que nos sirve para ver nuestro diálogo en texto plano, también para pegar uno que nos pasen hecho, y la pestaña de Preview, que nos sirve para previsualizar directamente nuestro formulario. En las pestañas de código (#4) podemos cambiar entre Dialog (edición de la parte de diálogo) y Code (edición del código que ejecuta).
Nuestro primer Dialog
El siguiente paso es dar click sobre el Panel que nos aparece en la lista de objetos del formulario (#2). Al hacer click sobre este se nos cambia la barra de herramientas y nos aparecen un grupo nuevo con todas las opciones que tenemos, desde botones, combobox, cajas de text, listas…
Para hacer un pequeño script de prueba, vamos a empezar por añadir un nuevo dialog a nuestro panel (es el segundo botón de la lista), esto va a crear una ventana (dialog) donde aparecerán todos los objetos que queramos. Para crear una etiqueta dentro de esta nueva ventana, hacemos click en el dialog que nos acaba de aparecer en la lista, y ahora damos click al boton que pone label. Nos aparecerá un nuevo objeto en la lista, y si hacemos click podemos acceder a sus propiedades como podemos ver en la imagen.
Podemos ir al campo text y cambiar el texto que contendrá. Al presionar Enter nos modificará el valor de la etiqueta, y la podremos ver ya en la pestaña de Preview. También en la propiedad name podemos escribir etiqueta1, esto nos permitirá más tarde poder encontrar y modificarla desde el botón.
Ahora siguiendo el mismo paso vamos a crear un botón que nos permitirá ejecutar acciones. Haciendo click primero en el dialog, y luego sobre «Create new button» a la derecha del botón de label. Editaremos sus propiedades y iremos a text = «Consola» y la propiedad de action o acción escribiremos «abrirConsola», esto lo veremos ahora.
Escribir el código a ejecutar
Una diferencia con los scripts normales, es que el código de este tiene una estructura algo diferente, y es obligado que conste de una función onload(), al contrario que en los scripts normal que se denomina main().
Así que podemos borrar el código que nos aparece y sustituirlo por este:
from gvsig import * def onload(): pass
Este sería el código mínimo para lanzar un script de tipo dialog.
Esto que vamos a hacer es solo un ejemplo, pero las posibilidades son muy grandes, podemos crear botones que nos muestren información de las capas que tengamos, botones que nos modifiquen los valores de cajas de texto para mostrar información, que nos permitan lanzar filtros para hacer selecciones fácilmente ajustando barras que creemos, etc.
Para editar lo que hará nuestro botón tenemos que crear una función «abrirConsola», esta se lanzará al presionar el botón tal y como indicamos en su propiedad de action.
Para que abra la consola desde el botón tenemos que importar una librería console. Así que el código podría quedar algo así:
from gvsig import * from console import console def onload(): pass def abrirConsola(): #Abre la consola de Jython console.main() #Modifica el valor text de la etiqueta lblEtiqueta = dialog.find("etiqueta1") texto = "Consola abierta!" dialog.setString(lblEtiqueta,"text", texto)
También podéis pegar el XML (para la configuración del dialogo) directamente desde su pestaña. Si copias este de ejemplo y vais a la pestaña del XML, en el menú nuevo que nos aparece podemos hacer click en Edit – Paste from System Clipboard y ya tendremos el dialog que he creado aquí.
<?xml version="1.0" encoding="ISO-8859-1"?> <!-- generated by ThinG, the Thinlet GUI editor --> <panel> <dialog> <label name="etiqueta1" text="Script de prueba"/> <button action="abrirConsola" text="Consola"/> </dialog> </panel>
El resultado como podéis ver al ejecutar este script es el siguiente, primero nos aparece una pantallita..
…y al presionar el botón se nos cambia la etiqueta y se nos abre la consola.
Próximamente realizaré algún ejemplo más elaborado y más aplicado a nuestro proyecto, pero lo básico está explicado, podéis crear un dialog y modificar sus propiedades, acepto sugerencias para scripts y no olvidéis que está en fase de desarrollo así que si veis algún bug podéis reportarlo a la página de gvsig.
Genial esta opción de poder hacer ventanas de diálogo desde el scripting de gvSIG.
Personalmente me encantaría el poder hacer un Formulario para rellenar la información alfanumérica. Algo así como NavTable pero más completo (menús desplegables, listas de valores, que acceda a datos en más de una tabla, etc.)
Muchas gracias por tu tiempo!
La verdad que es una opción que abre muchas posibilidades sí.
Pues se podría hacer algo por el estilo, del tipo mostrar info de alguna entidad para poder actualizarla por ejemplo. O para introducir nuevos valores.
Gracias por tu comentario, si puedes y quieres mándame un email a masquesig@gmail.com detallando un poco más el uso que le podrías dar o como te sería útil o que sería necesario y a lo mejor intento algo los próximos días.