Statistics
| Revision:

gvsig-scripting / org.gvsig.scripting / trunk / org.gvsig.scripting / org.gvsig.scripting.app / org.gvsig.scripting.app.mainplugin / src / main / resources-plugin / scripting / scripts / examples / layout / personalizar_mapa3.py @ 478

History | View | Annotate | Download (3.51 KB)

1

    
2
use_plugin("org.gvsig.app.document.layout2.app.mainplugin")
3

    
4
from gvsig import *
5
from org.gvsig.app.project.documents.layout import DefaultLayoutManager
6
from commonsdialog import *
7

    
8
from libs.formpanel import  ProgressBarWithTaskStatus, FormPanel 
9

    
10
class CustomizeLayout(FormPanel):
11
  def __init__(self):
12
    FormPanel.__init__(self,script.getResource("personalizar_mapa3.xml"))
13
    # Llenamos el desplegable de mapas con los mapas que hay en el proyecto.
14
    proyecto = currentProject()()
15
    docs = proyecto.getDocuments()
16
    for doc in docs :
17
      if doc.__class__.__name__ == "DefaultLayoutDocument":
18
        cboMapas.addItem(doc)
19
    pass
20
    
21
  def actualizar_mapa(self, mapa, tagVista, tagTitulo, tagLogo, encuadre, titulo, logo):
22
    context = mapa.getLayoutContext()
23
  
24
    # Nos recorremos todos los elementos del mapa buscando los que hemos etiquetado
25
    for elemento in  context.getAllFFrames():
26
      if elemento.getTag() == tagVista:
27
        # Ajustamos el encuadre de la vista al del elemento seleccionado
28
        mapContext = elemento.getMapContext()
29
        mapContext.getViewPort().setEnvelope(encuadre)
30
        mapContext.invalidate()
31
  
32
      elif elemento.getTag() == tagTitulo:
33
        # Cambiamos el rotulo del texto que habiamos etiquetado en el mapa
34
        elemento.clearText()
35
        elemento.addText(titulo)
36
  
37
      elif elemento.getTag() == tagLogo:
38
        # Cambiamos la imagen del logotipo
39
        elemento.setImage(logo)
40
  
41
    context.fullRefresh()
42

    
43
  def btnCerrar_click(*args):
44
    self.hide()
45
  
46
  def cboMapas_click(*args):
47
    mapa = self.cboMapas.getSelectedItem()
48
  
49
    cboTagVista = self.cboTagVista
50
    cboTagTitulo = self.cboTagTitulo
51
    cboTagLogotipo= self.cboTagLogotipo
52
  
53
    for elemento in  mapa.getLayoutContext().getAllFFrames():
54
      #print elemento.__class__.__name__
55
      if not elemento.getTag() in (None, ""):
56
        if elemento.__class__.__name__ == "FFrameText":
57
          self.cboTagTitulo.addItem(elemento.getTag())
58
  
59
        elif elemento.__class__.__name__ == "FFrameView":
60
          self.cboTagVista.addItem(elemento.getTag())
61
  
62
        elif elemento.__class__.__name__ == "FFramePicture":
63
          self.cboTagLogotipo.addItem(elemento.getTag())
64
  
65
  
66
  def btnActualizarMapa_click(*args):
67
    # Obtenemos la capa activa de la vista activa
68
    capa = currentLayer()
69
    if capa == None:
70
      msgbox("Debera tener seleccionada una capa.")
71
      return
72
  
73
    # Obtenemos el primer elemento seleccionado de la capa
74
    seleccion = list()
75
    seleccion.extend(capa.getSelection())
76
    if len(seleccion) < 1:
77
      msgbox("Debera tener seleccionados elementos en la capa activa.")
78
      return
79
    entidad = seleccion[0]
80
  
81
    mapa = self.cboMapas.getSelectedItem()
82
    tagVista = self.cboTagVista.getSelectedItem()
83
    tagTitulo = self.cboTagTitulo.getSelectedItem()
84
    tagLogotipo = self.cboTagLogotipo.getSelectedItem()
85
    if tagVista in ("",None) or tagTitulo in ("",None) :
86
      msgbox("Debera seleccionar el tag de la vista, titulo y logotipo")
87
      return
88
  
89
    encuadre = entidad.geometry().getEnvelope()
90
    try:
91
      titulo = eval(self.txtTitulo.getText(), entidad)
92
    except:
93
      titulo = self.txtTitulo.getText()
94
  
95
    try:
96
      logotipo_nombre = eval(self.txtLogotipo.getText(), entidad)
97
      logotipo = load_image(script.getResource(logotipo_nombre))
98
    except:
99
      logotipo = None
100
  
101
    self.actualizar_mapa(mapa, tagVista, tagTitulo, tagLogotipo, encuadre, titulo, logotipo)
102

    
103

    
104

    
105
def main(*args):
106
  customizeLayout = CustomizeLayout()
107
  customizeLayout.showTool("Customize layout")
108

    
109