Camino a gvSIG 2.3: Autoarranque de scripts al iniciar gvSIG

Comentamos la semana pasada la posibilidad de añadir geoprocesos a la Caja de Herramientas de gvSIG. Un problema era que teníamos que ejecutar manualmente este script cada vez que quisiéramos añadir el geoproceso, y esto hacerlo cada vez que arrancamos gvSIG.

Una solución que hemos desarrollado es la oportunidad de añadir un fichero que se ejecutará cada vez que arranquemos gvSIG, teniendo la posibilidad de realizar la tarea que deseemos. Por supuesto, esto será útil para cualquier tipo de herramienta que realicemos.

La forma de hacerlo es muy sencilla y voy a basarme en el script de la semana anterior que aparece en el post sobre Insertar nuevos geoprocesos mediante Scripting.

Vamos a suponer que tenemos nuestro script dentro de una carpeta denominada /gridpol/ dentro de la cual solo estaría por ahora nuestro script quedando: /gridpol/geoprocess_gridpol.py

Para poder crear un fichero autoejecutable, necesitamos dos cosas:

  • Crear un fichero __init__.py dentro de la carpeta donde se encuentra nuestro script. Esto viene de Python y hará que esta carpeta sea tratada como un módulo, por ejemplo, permitiéndonos realizar imports sobre ella. Este fichero es de iniciación del módulo y puede estar en blanco.
  • Crear un fichero autorun.py, este script es el que se ejecutará al arrancarse gvSIG y que contendrá el código que nos interese.

En este caso, dentro del fichero geoprocess_gridpol.py he metido lo que había dentro de la función main() en una función selfRegister(). Esta parte del código es la que se encarga de añadir el proceso a la Caja de Herramientas. En este ejemplo podríamos eliminar la ventana emergente msgbox() para que no nos aparezca cada vez que abrimos gvSIG.

En geoprocess_gridpol.py quedará la función siguiente a la misma altura que la función main():

def selfRegister(*args):
        # Creamos nuesto geoproceso
        process = GridPol()
        # Lo registramos entre los procesos disponibles en el grupo de "Scripting"
        process.selfregister("Scripting")
        
        # Actualizamos el interface de usuario de la Toolbox
        process.updateToolbox()

 

Lo que hago ahora es escribir en el fichero autorun lo siguiente:

# encoding: utf-8

import geoprocess_gridpol
reload(geoprocess_gridpol)

def main(*args):
    geoprocess_gridpol.selfRegister()

De esta forma el fichero autorun estará llamando a la función selfRegister que acabamos de crear y ejecutará esa parte del código. Como vemos, estamos importando el script que teníamos creado. Con reload() estamos forzando a Jython a recompilar este módulo, por si hubieran habido cambios.

El reload es útil a la hora de realizar importaciones para que aparezcan los cambios realizados en script modificados pero no ejecutados, como puede ser el caso de librerías creadas por nosotros dentro del propio módulo.

Quedará una estructura del proyecto similar a:

geo_gridpol_estructuraGuardamos los cambios, reiniciamos gvSIG, y veremos que se realiza la ejecución de proceso. Los scripts que contienen un autorun, se van cargando en segundo plano mientras gvSIG se acaba de iniciar, podéis ver esta carga en la parte inferior izquierda de la aplicación.
geo_gridpol_autorun

Es recomendable no abrir el Scripting Composer hasta que no acabe la ejecución de estos autorun ya que en algunos casos puede llevar a un fallo de ejecución.

También hemos añadido una opción extra en la cual puedes desactivar los ficheros autorun que no desees que se ejecuten al inicio. Puede ser útil si estamos desarrollando uno de estos módulos o dejamos de utilizar alguna herramienta.

Para ello solo tienes que irte al Scripting Composer, abrir el fichero autorun correspondiente, y en la pestaña de Propiedades desactivar la opción de Enabled que vendrá activada por defecto:

geo_gridpol_enabledoff

Acordaros siempre de Guardar los cambios. Si falta algo por guardar, el nombre del script aparecerá en negrita en las pestañas de la parte superior.

Cualquier duda podéis poneros en contacto con nosotros en las Listas de Usuarios o Desarrolladores.

This entry was posted in development, gvSIG Desktop, gvSIG development, scripting, spanish. Bookmark the permalink.

4 Responses to Camino a gvSIG 2.3: Autoarranque de scripts al iniciar gvSIG

  1. Pingback: ¡gvSIG 2.3 ya está aquí! | gvSIG blog

  2. Pingback: gvSIG 2.3 is now available! | gvSIG blog

  3. Victor says:

    Hola,
    ¿Es posible el autoarranque de scripts al abrir un proyecto concreto, en lugar de hacerlo al abrir gvSIG?
    He probado a hacerlo poniendo los ficheros __init__.py y autorun.py en la carpeta del proyecto pero no funciona.
    Un saludo.

Leave a comment