Scripting en gvSIG: Dialog con info de la entidad y abrir PDF

dialogPDF01

El otro día salió publicado en el Blog de gvSIG un post de Joaquin del Cerro sobre como abrir un PDF en un visor dentro de gvSIG desde el módulo de scripting. Así que aprovechando la nueva opción de Dialog de la nueva build de gvSIG he decidido hacer un pequeño ejemplo que lo junte todo. También gracias a la ayuda de unos ejemplos realizados por Victor Acevedo.

Los que os lo habéis perdido podéis echar un vistazo a mi anterior post donde explico todo este nuevo apartado paso a paso.

El script consiste en una ventana que al seleccionar una entidad en la capa y hacer click sobre el botón de “Info” nos sacará toda la información de esa entidad en la caja de texto. Podéis ver que el botón de PDF se encuentra desactivado por ahora.

dialogPDF02

Además, si existe un campo llamado “PDF” haremos que se active el botón de PDF, y al presionarlo, nos abrirá el visor que os comentaba al PDF enlazado. Está todo muy simplificado para hacerlo más entendible.

dialogPDF03

El código correspondiente al dialog es:

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- generated by ThinG, the Thinlet GUI editor -->
<panel colspan="0" columns="1" gap="1" height="156" rowspan="3" scrollable="true" width="300">
    <panel columns="2">
        <label text="Info"/>
    </panel>
    <panel colspan="2" columns="2" rowspan="0" weightx="1" weighty="1">
        <textarea colspan="2" columns="36" editable="false" halign="center" height="1" name="txtArea" rows="6" valign="center"/>
    </panel>
    <panel>
        <button action="verInfo" name="btnInfo" text="Info"/>
        <button action="verPDF" enabled="false" name="btnPDF" rowspan="2" text="PDF"/>
    </panel>
</panel>

Y el código que ejecuta es:

from gvsig import *
from org.gvsig.tools import ToolsLocator
from org.gvsig.tools.swing.api import ToolsSwingLocator
from java.net import URI

def onload(*args):
    """Dialog info de entidad y abrir pdf"""

    global rutapdf
    rutapdf = "C://gvsig/testpuntos/"
    pass

def verInfo():
    #Accion del boton Info

    feature = iter(currentLayer().getSelection()).next()

    info = currentLayer().name
    schema = currentLayer().getSchema().getAttrNames()
    for sch in schema:
        info += "\n" + str(sch) + "    " + str(feature.get(sch))

    btnPDF = dialog.find("btnPDF")

    try:
         if feature.get("PDF"): dialog.setBoolean(btnPDF, "enabled", True)
    except:
         dialog.setBoolean(btnPDF, "enabled", False)

    txt = dialog.find("txtArea")
    dialog.setString(txt, "text", info)

def verPDF():
    #Accion del boton PDF
    feature = iter(currentLayer().getSelection()).next()
    name = feature.get("PDF")
    ruta = rutapdf + name
    visorPDF(ruta)

def visorPDF(rutaAbsoluta):
    formatManagers = ToolsLocator.getExtensionPointManager().get("HyperLinkAction")
    pdfManager = formatManagers.get("PDF_format").create()
    panel = pdfManager.createPanel(URI("file:/"+rutaAbsoluta))
    windowManager = ToolsSwingLocator.getWindowManager()
    windowManager.showWindow(panel,"Visor PDFs",windowManager.MODE.WINDOW)

Para cualquier duda me la podéis consultar en los comentarios o por email.

1 comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: