[Gvsig_desarrolladores] cómo recorrer los elementos de un mapa automaticamente

Ana Calle nico200307 en gmail.com
Mar Oct 13 14:42:27 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/cae9fc36/attachment.htm 


Más información sobre la lista de distribución gvSIG_desarrolladores