/[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 668 by jonathan, Mon Apr 14 17:12:57 2003 UTC revision 882 by jonathan, Fri May 9 16:34:28 2003 UTC
# Line 15  from wxPython.wx import * Line 15  from wxPython.wx import *
15    
16  from Thuban.Model.layer import Layer  from Thuban.Model.layer import Layer
17  from Thuban.Model.map import Map  from Thuban.Model.map import Map
 from Thuban.Model.messages import *  
18  from Thuban.Model.classification import ClassGroup  from Thuban.Model.classification import ClassGroup
19    
20  from Thuban.UI.messages import *  from Thuban.Model.messages import \
21        MAP_STACKING_CHANGED, MAP_LAYERS_ADDED, MAP_LAYERS_REMOVED, LAYER_CHANGED,\
22        LAYER_VISIBILITY_CHANGED, TITLE_CHANGED
23    
24    from Thuban.UI.messages import SCALE_CHANGED
25    
26  from Thuban.UI.classifier import ClassDataPreviewer  from Thuban.UI.classifier import ClassDataPreviewer
27  from Thuban.UI.dock import DockPanel  from Thuban.UI.dock import DockPanel
28    from Thuban.UI.scalebar import ScaleBar
29    
30  from Thuban.Lib.connector import ConnectorError  from Thuban.Lib.connector import ConnectorError
31    
# Line 89  class LegendPanel(DockPanel): Line 94  class LegendPanel(DockPanel):
94    
95          panelBox.Add(self.tree, 1, wxGROW, 0)          panelBox.Add(self.tree, 1, wxGROW, 0)
96    
97            self.scalebarbitmap = ScaleBarBitmap(self, map, mainWindow)
98            panelBox.Add(self.scalebarbitmap, 0, wxGROW, 0)
99    
100          self.SetAutoLayout(True)          self.SetAutoLayout(True)
101          self.SetSizer(panelBox)          self.SetSizer(panelBox)
102          panelBox.SetSizeHints(self)          panelBox.SetSizeHints(self)
# Line 108  class LegendPanel(DockPanel): Line 116  class LegendPanel(DockPanel):
116    
117      def SetMap(self, map):      def SetMap(self, map):
118          self.tree.SetMap(map)          self.tree.SetMap(map)
119            self.scalebarbitmap.SetCanvas(self.mainWindow.canvas)
120    
121      def DoOnSelChanged(self, layer, group):      def DoOnSelChanged(self, layer, group):
122    
# Line 216  class LegendTree(wxTreeCtrl): Line 225  class LegendTree(wxTreeCtrl):
225                  #self._OnMsgMapsChanged)                  #self._OnMsgMapsChanged)
226              self.__FillTree(self.map)              self.__FillTree(self.map)
227    
               
228      def MoveCurrentItemUp(self):      def MoveCurrentItemUp(self):
229          cur_id = self.GetSelection()          layer, group = self.GetSelectedHierarchy()
         assert cur_id.IsOk()  
   
         cur_data = self.GetPyData(cur_id)  
   
         #prev_id = self.GetPrevSibling(cur_id)  
   
         #  
         # Get out if there's nowhere to go  
         #  
         #if prev_id == INVALID_TREE_ID: return  
230    
231          if isinstance(cur_data, Layer):          if layer is not None:
232              self.map.RaiseLayer(cur_data)              self.map.RaiseLayer(layer)
         elif isinstance(cur_data, ClassGroup):  
             pass  
233          else:          else:
234              assert False, "Shouldn't be here."              assert False, "Shouldn't be allowed."
235              pass              pass
236    
237      def MoveCurrentItemDown(self):      def MoveCurrentItemDown(self):
238          cur_id = self.GetSelection()          layer, group = self.GetSelectedHierarchy()
         assert cur_id.IsOk()  
   
         cur_data = self.GetPyData(cur_id)  
239    
240          if isinstance(cur_data, Layer):          if layer is not None:
241              self.map.LowerLayer(cur_data)              self.map.LowerLayer(layer)
         elif isinstance(cur_data, ClassGroup):  
             pass  
242          else:          else:
243              assert False, "Shouldn't be here."              assert False, "Shouldn't be allowed."
244              pass              pass
245    
   
246      def OnCompareItems(self, item1, item2):      def OnCompareItems(self, item1, item2):
247    
248          data1 = self.GetPyData(item1)          data1 = self.GetPyData(item1)
# Line 264  class LegendTree(wxTreeCtrl): Line 254  class LegendTree(wxTreeCtrl):
254          else:          else:
255              return wxTreeCtrl.OnCompareItems(self, item1, item2)              return wxTreeCtrl.OnCompareItems(self, item1, item2)
256    
   
257      def DoOnShowLayer(self):      def DoOnShowLayer(self):
258          #self.__ShowHideLayer(True)          #self.__ShowHideLayer(True)
259          layer, group = self.GetSelectedHierarchy()          layer, group = self.GetSelectedHierarchy()
# Line 352  class LegendTree(wxTreeCtrl): Line 341  class LegendTree(wxTreeCtrl):
341                    
342      def __FillTree(self, map):      def __FillTree(self, map):
343    
         assert isinstance(map, Map)  
   
344          self.Freeze()          self.Freeze()
345    
346          self.__DeleteAllItems()          self.__DeleteAllItems()
# Line 421  class LegendTree(wxTreeCtrl): Line 408  class LegendTree(wxTreeCtrl):
408          self.Thaw()          self.Thaw()
409    
410      def __BuildGroupImage(self, group, shapeType):      def __BuildGroupImage(self, group, shapeType):
         assert isinstance(group, ClassGroup)  
411    
412          bmp = wxEmptyBitmap(BMP_SIZE_W, BMP_SIZE_H)          bmp = wxEmptyBitmap(BMP_SIZE_W, BMP_SIZE_H)
413          #brush = wxBrush(Color2wxColour(item[1]), wxSOLID)          #brush = wxBrush(Color2wxColour(item[1]), wxSOLID)
# Line 472  class LegendTree(wxTreeCtrl): Line 458  class LegendTree(wxTreeCtrl):
458              self.__SetVisibilityStyle(visible, id)              self.__SetVisibilityStyle(visible, id)
459              id, cookie = self.GetNextChild(parent, cookie)              id, cookie = self.GetNextChild(parent, cookie)
460                            
461    class ScaleBarBitmap(wxBoxSizer):
462    
463        def __init__(self, parent, map, mainWindow):
464            # While the width is fixed, get the height _now_.
465            dc = wxMemoryDC()
466            textwidth, textheight = dc.GetTextExtent("%d"%0)
467            self.width = 200
468            self.height = textheight + 3*2 + 8
469    
470            wxBoxSizer.__init__(self, wxVERTICAL)
471            bmp=wxEmptyBitmap(self.width, self.height)
472            self.scalebarBitmap = wxStaticBitmap(parent, -1, bmp)
473            self.Add(self.scalebarBitmap, 0, wxALIGN_CENTER|wxLEFT|wxTOP|wxRIGHT, 1)
474    
475            self.mainWindow = mainWindow
476            self.parent = parent
477            self.canvas = None
478            self.SetCanvas(self.mainWindow.canvas)
479    
480        def SetCanvas(self, canvas):
481            sub_list = [(SCALE_CHANGED, self._OnMsgScaleChanged)]
482    
483            if self.canvas is not None:
484                for msg, func in sub_list: self.canvas.Unsubscribe(msg, func)
485            
486            self.canvas = canvas
487            self.scalebar = ScaleBar(canvas.map)
488    
489            if self.canvas is not None:
490                for msg, func in sub_list: self.canvas.Subscribe(msg, func)
491                self.__SetScale(self.canvas.scale)
492    
493        def _OnMsgScaleChanged(self, scale):
494            self.__SetScale(scale)
495    
496        def __SetScale(self, scale):
497            bmp = wxEmptyBitmap(self.width, self.height)
498            dc = wxMemoryDC()
499            dc.SelectObject(bmp)
500            dc.Clear()
501    
502            self.scalebar.DrawScalebar(scale, dc)
503    
504            self.scalebarBitmap.SetBitmap(bmp)
505    

Legend:
Removed from v.668  
changed lines
  Added in v.882

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26