[Gvsig_desarrolladores] cómo recorrer los elementos de un mapa automaticamente
Ana Calle
nico200307 en gmail.com
Mar Oct 13 14:36:46 CEST 2015
Muchas gracias por la ayuda JoaquÃn, voy a probarlo, seguro que como
siempre, funciona!!
Saludos
El 13 de octubre de 2015, 14:22, Joaquin Jose del Cerro Murciano <
jjdelcerro en gvsig.org> escribió:
>
>
> El 13 de octubre de 2015, 12:26, Ana Calle <nico200307 en gmail.com>
> escribió:
>
>> Buenos dÃas,
>> en el proceso de migración del código de una extensión realizada en gvSig
>> 1.10, tenemos implementados una serie de planos con sus respectivos
>> cajetines.
>> De manera automática, el plano se rellenaba según las caracterÃsticas de
>> consulta correspondientes, es decir, en el cajetÃn se van sustituyendo los
>> textos genéricos por los especÃficos de la consulta.
>> TenÃamos implementado el código en el que obtenÃa el layout de la ventana
>> del plano, y ahà se recorrÃan los elementos:
>>
>> --recorriendo los documentos llegábamos a la ventana del plano (vEntana):
>>
>> Layout l =(Layout)vEntana;
>> IFFrame[] fframes = l.getFFrames();
>> for (int i = 0; i < fframes.length; i++) {
>> if (fframes[i] instanceof FFrameView) {
>> ......
>> }else if (fframes[i] instanceof FFrameText){
>> ......
>> }
>> }
>>
>> ¿como podrÃa obtener ese layout y los IFFrame[] con la nueva version
>> gvSig 2.2?
>>
>>
> Puedes o recorrer todos los documentos, puedes o no filtrar por tipo, o
> recuperar un documento layout en concreto por nombre. Una vez tengas el
> documento layout, accedes LayoutContext y a el ya le puedes peridr
> "getFFrames".
>
> Dejo pedacito de script (falta la iniciaciacion del acceso al layout desde
> scripting pero para usarlo de inspiracion en java es suficiente).
>
> Ojo, que el LayoutDocument, lo que devuelbe el getDocuments, no es la
> ventana del plano, si no el documento. No recuerdo cuando se separo, por un
> lado el interface grafico y por otro la logica del documento.
>
> Un saludo
> Joaquin
>
>
>
> from org.gvsig.app import ApplicationLocator
> from org.gvsig.app.project.documents.layout import LayoutManager
>
> def main(*args):
> # Recuperamos el proyecto
> project = ApplicationLocator.getManager().getCurrentProject()
>
> # Opcion 1
> # Recorremos los layouts que hay en el proyecto
> layouts = project.getDocuments(LayoutManager.TYPENAME)
> for layout in layouts:
> print layout.__class__.__name__, layout.getName()
> contextLayout = layout.getLayoutContext()
> for elemento in contextLayout.getAllFFrames():
> print elemento.getName()
>
> print "----------------------------"
>
> # Opcion 2
> # Recuperamos un layout por nombre
> layout = project.getDocument("Plantilla", LayoutManager.TYPENAME)
> print layout.__class__.__name__, layout.getName()
> contextLayout = layout.getLayoutContext()
> for elemento in contextLayout.getAllFFrames():
> print elemento.getName()
>
> print "----------------------------"
>
> # Como obtener la venta del layout
> layoutManager =
> ApplicationLocator.getProjectManager().getDocumentManager(LayoutManager.TYPENAME)
>
> layout = project.getDocument("Plantilla", LayoutManager.TYPENAME)
> layoutPanel = layoutManager.getMainWindow(layout)
> print layoutPanel.__class__.__name__, layoutPanel.getDocument().getName()
>
> Esto con el proyecto que tengo cargado saca:
>
> Running script test_layout2.
> DefaultLayoutDocument Plantilla
> FFrameGraphics
> FFrameGraphics
> FFrameGraphics
> FFrameGraphics
> FFrameText
> FFrameText
> FFrameText
> FFrameView
> FFrameScaleBar
> FFrameLegend
> FFrameText
> FFrameOverView
> FFrameGraphics
> FFrameNorth
> FFramePicture
> ----------------------------
> DefaultLayoutDocument Plantilla
> FFrameGraphics
> FFrameGraphics
> FFrameGraphics
> FFrameGraphics
> FFrameText
> FFrameText
> FFrameText
> FFrameView
> FFrameScaleBar
> FFrameLegend
> FFrameText
> FFrameOverView
> FFrameGraphics
> FFrameNorth
> FFramePicture
> ----------------------------
> LayoutPanelImpl Plantilla
> Script test_layout2 terminated.
>
>
>
>> Muchas gracias de antemano,
>> un saludo
>> Ana
>>
>>
>>
>> _______________________________________________
>> gvSIG_desarrolladores mailing list
>> gvSIG_desarrolladores en listserv.gva.es
>> Para ver histórico de mensajes, editar sus preferencias de usuario o
>> darse de baja en esta lista, acuda a la siguiente dirección:
>> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>>
>>
>
>
> --
> --------------------------------------
> Joaquin Jose del Cerro Murciano
> Development and software arquitecture manager at gvSIG Team
> jjdelcerro en gvsig.com
> jjdelcerro en gvsig.org
> gvSIG Association
> www.gvsig.com
> www.gvsig.org
>
> _______________________________________________
> gvSIG_desarrolladores mailing list
> gvSIG_desarrolladores en listserv.gva.es
> Para ver histórico de mensajes, editar sus preferencias de usuario o darse
> de baja en esta lista, acuda a la siguiente dirección:
> http://listserv.gva.es/cgi-bin/mailman/listinfo/gvsig_desarrolladores
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151013/053c72fb/attachment.htm
Más información sobre la lista de distribución gvSIG_desarrolladores