/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/UI/legend.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/UI/legend.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 795 by jonathan, Wed Apr 30 17:01:06 2003 UTC revision 980 by frank, Thu May 22 11:41:14 2003 UTC
# Line 1  Line 1 
1  # Copyright (c) 2001, 2002, 2003 by Intevation GmbH  # Copyright (c) 2001, 2002, 2003 by Intevation GmbH
2  # Authors:  # Authors:
3  # Jonathan Coles <[email protected]>  # Jonathan Coles <[email protected]>
4    # Frank Koormann <[email protected]>
5  #  #
6  # This program is free software under the GPL (>=v2)  # This program is free software under the GPL (>=v2)
7  # Read the file COPYING coming with Thuban for details.  # Read the file COPYING coming with Thuban for details.
# Line 13  import resource Line 14  import resource
14    
15  from wxPython.wx import *  from wxPython.wx import *
16    
17  from Thuban.Model.layer import Layer  from Thuban.Model.layer import BaseLayer
18  from Thuban.Model.map import Map  from Thuban.Model.map import Map
 from Thuban.Model.messages import *  
19  from Thuban.Model.classification import ClassGroup  from Thuban.Model.classification import ClassGroup
20    
21  from Thuban.UI.messages import *  from Thuban.Model.messages import \
22        MAP_STACKING_CHANGED, MAP_LAYERS_ADDED, MAP_LAYERS_REMOVED, LAYER_CHANGED,\
23        LAYER_VISIBILITY_CHANGED, TITLE_CHANGED
24    
25    from Thuban.UI.messages import SCALE_CHANGED
26    
27  from Thuban.UI.classifier import ClassDataPreviewer  from Thuban.UI.classifier import ClassDataPreviewer
28  from Thuban.UI.dock import DockPanel  from Thuban.UI.dock import DockPanel
29    from Thuban.UI.scalebar import ScaleBar
30    
31  from Thuban.Lib.connector import ConnectorError  from Thuban.Lib.connector import ConnectorError
32    
# Line 89  class LegendPanel(DockPanel): Line 95  class LegendPanel(DockPanel):
95    
96          panelBox.Add(self.tree, 1, wxGROW, 0)          panelBox.Add(self.tree, 1, wxGROW, 0)
97    
98            self.scalebarbitmap = ScaleBarBitmap(self, map, mainWindow)
99            panelBox.Add(self.scalebarbitmap, 0, wxGROW, 0)
100    
101          self.SetAutoLayout(True)          self.SetAutoLayout(True)
102          self.SetSizer(panelBox)          self.SetSizer(panelBox)
103          panelBox.SetSizeHints(self)          panelBox.SetSizeHints(self)
# Line 108  class LegendPanel(DockPanel): Line 117  class LegendPanel(DockPanel):
117    
118      def SetMap(self, map):      def SetMap(self, map):
119          self.tree.SetMap(map)          self.tree.SetMap(map)
120            self.scalebarbitmap.SetCanvas(self.mainWindow.canvas)
121    
122      def DoOnSelChanged(self, layer, group):      def DoOnSelChanged(self, layer, group):
123    
124          ok = isinstance(layer, Layer)          ok = isinstance(layer, BaseLayer)
125          self.__EnableButtons(ok)          self.__EnableButtons(ok)
126    
127          self.mainWindow.SelectLayer(layer)          self.mainWindow.SelectLayer(layer)
# Line 119  class LegendPanel(DockPanel): Line 129  class LegendPanel(DockPanel):
129      def DoOnProperties(self):      def DoOnProperties(self):
130          list = self.tree.GetSelectedHierarchy()          list = self.tree.GetSelectedHierarchy()
131    
132          ok = isinstance(list[0], Layer)          ok = isinstance(list[0], BaseLayer)
133          if ok:          if ok:
134              self.mainWindow.OpenLayerProperties(list[0], list[1])              self.mainWindow.OpenLayerProperties(list[0], list[1])
135    
# Line 216  class LegendTree(wxTreeCtrl): Line 226  class LegendTree(wxTreeCtrl):
226                  #self._OnMsgMapsChanged)                  #self._OnMsgMapsChanged)
227              self.__FillTree(self.map)              self.__FillTree(self.map)
228    
               
229      def MoveCurrentItemUp(self):      def MoveCurrentItemUp(self):
230          layer, group = self.GetSelectedHierarchy()          layer, group = self.GetSelectedHierarchy()
231    
# Line 240  class LegendTree(wxTreeCtrl): Line 249  class LegendTree(wxTreeCtrl):
249          data1 = self.GetPyData(item1)          data1 = self.GetPyData(item1)
250          data2 = self.GetPyData(item2)          data2 = self.GetPyData(item2)
251    
252          if isinstance(data1, Layer):          if isinstance(data1, BaseLayer):
253              layers = self.map.Layers()              layers = self.map.Layers()
254              return layers.index(data2) - layers.index(data1)              return layers.index(data2) - layers.index(data1)
255          else:          else:
256              return wxTreeCtrl.OnCompareItems(self, item1, item2)              return wxTreeCtrl.OnCompareItems(self, item1, item2)
257    
   
258      def DoOnShowLayer(self):      def DoOnShowLayer(self):
259          #self.__ShowHideLayer(True)          #self.__ShowHideLayer(True)
260          layer, group = self.GetSelectedHierarchy()          layer, group = self.GetSelectedHierarchy()
# Line 288  class LegendTree(wxTreeCtrl): Line 296  class LegendTree(wxTreeCtrl):
296          self.parent.DoOnProperties()          self.parent.DoOnProperties()
297    
298      def _OnMsgLayerChanged(self, layer):      def _OnMsgLayerChanged(self, layer):
299          assert isinstance(layer, Layer)          assert isinstance(layer, BaseLayer)
300    
301          id = self.layer2id[layer]          id = self.layer2id[layer]
302          assert id.IsOk()          assert id.IsOk()
# Line 316  class LegendTree(wxTreeCtrl): Line 324  class LegendTree(wxTreeCtrl):
324          self.__UpdateSelection()          self.__UpdateSelection()
325    
326      def _OnMsgLayerVisibilityChanged(self, layer):      def _OnMsgLayerVisibilityChanged(self, layer):
327          assert isinstance(layer, Layer)          assert isinstance(layer, BaseLayer)
328    
329          self.__ShowHideLayer(layer)          self.__ShowHideLayer(layer)
330          self.__UpdateSelection()          self.__UpdateSelection()
# Line 379  class LegendTree(wxTreeCtrl): Line 387  class LegendTree(wxTreeCtrl):
387    
388          self.DeleteChildren(pid)          self.DeleteChildren(pid)
389    
390          clazz = layer.GetClassification()          if layer.HasClassification():
391    
392                clazz = layer.GetClassification()
393    
394          shapeType = layer.ShapeType()              shapeType = layer.ShapeType()
395    
396          show = layer.Visible()              show = layer.Visible()
397          for g in clazz:              for g in clazz:
398              if g.IsVisible():                  if g.IsVisible():
399                  id = self.AppendItem(pid, g.GetDisplayText())                      id = self.AppendItem(pid, g.GetDisplayText())
400                  self.SetPyData(id, g)                      self.SetPyData(id, g)
401                  self.__SetVisibilityStyle(show, id)                      self.__SetVisibilityStyle(show, id)
402    
403                  bmp = self.__BuildGroupImage(g, shapeType)                      bmp = self.__BuildGroupImage(g, shapeType)
404    
405                  if bmp is None:                      if bmp is None:
406                      self.SetItemImage(id, self.emptyImageIndex)                          self.SetItemImage(id, self.emptyImageIndex)
407                  else:                      else:
408                      i = self.image_list.Add(bmp)                          i = self.image_list.Add(bmp)
409                      self.SetItemImage(id, i)                          self.SetItemImage(id, i)
410    
411          self.Thaw()          self.Thaw()
412    
# Line 431  class LegendTree(wxTreeCtrl): Line 441  class LegendTree(wxTreeCtrl):
441              font.SetStyle(wxNORMAL)              font.SetStyle(wxNORMAL)
442              color = wxBLACK              color = wxBLACK
443          else:          else:
444              font.SetStyle(wxITALIC)              #font.SetStyle(wxITALIC)
445                font.SetStyle(wxNORMAL)
446              color = wxLIGHT_GREY              color = wxLIGHT_GREY
447    
448          self.SetItemTextColour(id, color)          self.SetItemTextColour(id, color)
# Line 451  class LegendTree(wxTreeCtrl): Line 462  class LegendTree(wxTreeCtrl):
462              self.__SetVisibilityStyle(visible, id)              self.__SetVisibilityStyle(visible, id)
463              id, cookie = self.GetNextChild(parent, cookie)              id, cookie = self.GetNextChild(parent, cookie)
464                            
465    class ScaleBarBitmap(wxBoxSizer):
466    
467        def __init__(self, parent, map, mainWindow):
468            # While the width is fixed, get the height _now_.
469            dc = wxMemoryDC()
470            textwidth, textheight = dc.GetTextExtent("%d"%0)
471            self.width = 200
472            self.height = textheight + 3*2 + 8
473    
474            wxBoxSizer.__init__(self, wxVERTICAL)
475            bmp=wxEmptyBitmap(self.width, self.height)
476            self.scalebarBitmap = wxStaticBitmap(parent, -1, bmp)
477            self.Add(self.scalebarBitmap, 0, wxALIGN_CENTER|wxLEFT|wxTOP|wxRIGHT, 1)
478    
479            self.mainWindow = mainWindow
480            self.parent = parent
481            self.canvas = None
482            self.SetCanvas(self.mainWindow.canvas)
483    
484        def SetCanvas(self, canvas):
485            sub_list = [(SCALE_CHANGED, self._OnMsgScaleChanged)]
486    
487            if self.canvas is not None:
488                for msg, func in sub_list: self.canvas.Unsubscribe(msg, func)
489            
490            self.canvas = canvas
491            self.scalebar = ScaleBar(canvas.map)
492    
493            if self.canvas is not None:
494                for msg, func in sub_list: self.canvas.Subscribe(msg, func)
495                self.__SetScale(self.canvas.scale)
496    
497        def _OnMsgScaleChanged(self, scale):
498            self.__SetScale(scale)
499    
500        def __SetScale(self, scale):
501            bmp = wxEmptyBitmap(self.width, self.height)
502            dc = wxMemoryDC()
503            dc.SelectObject(bmp)
504            dc.Clear()
505    
506            self.scalebar.DrawScaleBar(scale, dc, (0,0), dc.GetSizeTuple())
507    
508            self.scalebarBitmap.SetBitmap(bmp)
509    

Legend:
Removed from v.795  
changed lines
  Added in v.980

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26