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

Joaquin Jose del Cerro Murciano jjdelcerro en gvsig.org
Mar Oct 13 14:22:52 CEST 2015


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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: http://listserv.gva.es/pipermail/gvsig_desarrolladores/attachments/20151013/83e9191e/attachment.htm 


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