/[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 1115 by bh, Fri May 30 16:30:26 2003 UTC revision 1231 by jonathan, Wed Jun 18 14:46:57 2003 UTC
# Line 201  class LegendTree(wxTreeCtrl): Line 201  class LegendTree(wxTreeCtrl):
201          self.mainWindow = mainWindow          self.mainWindow = mainWindow
202          self.map = None          self.map = None
203          self.parent = parent          self.parent = parent
         self.layer2id = {}  
204          self.changing_selection = 0          self.changing_selection = 0
205    
206          #          #
# Line 221  class LegendTree(wxTreeCtrl): Line 220  class LegendTree(wxTreeCtrl):
220    
221          self.previewer = ClassDataPreviewer()          self.previewer = ClassDataPreviewer()
222    
223            self.preventExpandCollapse = False
224    
225          EVT_TREE_ITEM_ACTIVATED(self, ID_LEGEND_TREE, self._OnItemActivated)          EVT_TREE_ITEM_ACTIVATED(self, ID_LEGEND_TREE, self._OnItemActivated)
226          EVT_TREE_SEL_CHANGED(self, ID_LEGEND_TREE, self._OnSelChanged)          EVT_TREE_SEL_CHANGED(self, ID_LEGEND_TREE, self._OnSelChanged)
227            EVT_TREE_ITEM_EXPANDING(self, ID_LEGEND_TREE, self.OnItemExpandCollapse)
228            EVT_TREE_ITEM_COLLAPSING(self, ID_LEGEND_TREE, self.OnItemExpandCollapse)
229    
230          EVT_CLOSE(self, self._OnClose)          EVT_CLOSE(self, self._OnClose)
231    
232          self.SetMap(map)          self.SetMap(map)
233    
234        def find_layer(self, layer):
235            """Return the tree item for the layer"""
236            root = self.GetRootItem()
237            id, cookie = self.GetFirstChild(root, 0)
238            while id.IsOk():
239                if self.GetPyData(id) is layer:
240                    return id
241                id, cookie = self.GetNextChild(root, cookie)
242            return None
243    
244      def _OnClose(self, event):      def _OnClose(self, event):
245          self.SetMap(None)          self.SetMap(None)
246    
# Line 372  class LegendTree(wxTreeCtrl): Line 385  class LegendTree(wxTreeCtrl):
385              self.changing_selection = 0              self.changing_selection = 0
386    
387    
388        def OnItemExpandCollapse(self, event):
389            if self.preventExpandCollapse:
390                event.Veto()
391                self.preventExpandCollapse = False
392    
393      def _OnItemActivated(self, event):      def _OnItemActivated(self, event):
394            self.preventExpandCollapse = True
395          self.parent.DoOnProperties()          self.parent.DoOnProperties()
396    
397      def _OnMsgLayerChanged(self, layer):      def _OnMsgLayerChanged(self, layer):
398          assert isinstance(layer, BaseLayer)          assert isinstance(layer, BaseLayer)
399    
400          id = self.layer2id[layer]          id = self.find_layer(layer)
401          assert id.IsOk()          assert id is not None
402    
403          self.__FillTreeLayer(id)          self.__FillTreeLayer(id)
404          self.__UpdateSelection()          self.__UpdateSelection()
# Line 395  class LegendTree(wxTreeCtrl): Line 414  class LegendTree(wxTreeCtrl):
414      def _OnMsgMapLayersAdded(self, map):      def _OnMsgMapLayersAdded(self, map):
415          assert map is self.map          assert map is self.map
416    
417            # Build a dict with all layers known by the the tree as keys
418            layers = {}
419          root = self.GetRootItem()          root = self.GetRootItem()
420            id, cookie = self.GetFirstChild(root, 0)
421            while id.IsOk():
422                layers[self.GetPyData(id)] = 1
423                id, cookie = self.GetNextChild(root, cookie)
424    
425            # Add layers in the map but not in the dict
426          i = 0          i = 0
427          for l in map.Layers():          for l in map.Layers():
428              if not self.layer2id.has_key(l):              if not l in layers:
429                  self.__AddLayer(i, l)                  self.__AddLayer(i, l)
430    
431          self.__UpdateSelection()          self.__UpdateSelection()
# Line 407  class LegendTree(wxTreeCtrl): Line 433  class LegendTree(wxTreeCtrl):
433      def _OnMsgMapLayersRemoved(self, map):      def _OnMsgMapLayersRemoved(self, map):
434          assert map is self.map          assert map is self.map
435    
         layer, group = self.GetSelectedHierarchy()  
   
         if layer is None:  
             assert False, "Shouldn't be allowed."  
             return  
   
436          layers = map.Layers()          layers = map.Layers()
437    
438          for layer, id in self.layer2id.items():          root = self.GetRootItem()
439              if layer not in layers:          id, cookie = self.GetFirstChild(root, 0)
440                  if id.IsOk():          while id.IsOk():
441                      self.__RemoveLayer(id)              if self.GetPyData(id) not in layers:
442                    self.__RemoveLayer(id)
443                id, cookie = self.GetNextChild(root, cookie)
444    
445    
446          self.__UpdateSelection()          self.__UpdateSelection()
447    
# Line 430  class LegendTree(wxTreeCtrl): Line 453  class LegendTree(wxTreeCtrl):
453    
454      def _OnMsgLayerTitleChanged(self, layer):      def _OnMsgLayerTitleChanged(self, layer):
455    
456          id = self.layer2id[layer]          id = self.find_layer(layer)
457          if id.IsOk():          if id.IsOk():
458              self.SetItemText(id, layer.Title())              self.SetItemText(id, layer.Title())
459          self.__UpdateSelection()          self.__UpdateSelection()
# Line 522  class LegendTree(wxTreeCtrl): Line 545  class LegendTree(wxTreeCtrl):
545          self.SetPyData(id, l)          self.SetPyData(id, l)
546          self.__SetVisibilityStyle(l.Visible(), id)          self.__SetVisibilityStyle(l.Visible(), id)
547    
         self.layer2id[l] = id  
   
548          self.__FillTreeLayer(id)          self.__FillTreeLayer(id)
549          self.Expand(id)          self.Expand(id)
550    
# Line 543  class LegendTree(wxTreeCtrl): Line 564  class LegendTree(wxTreeCtrl):
564          layer.Unsubscribe(TITLE_CHANGED, self._OnMsgLayerTitleChanged)          layer.Unsubscribe(TITLE_CHANGED, self._OnMsgLayerTitleChanged)
565    
566          self.Delete(id)          self.Delete(id)
         del self.layer2id[layer]  
567    
568      def DeleteChildren(self, pid):      def DeleteChildren(self, pid):
569          id, cookie = self.GetFirstChild(pid, 123)          id, cookie = self.GetFirstChild(pid, 123)
# Line 595  class LegendTree(wxTreeCtrl): Line 615  class LegendTree(wxTreeCtrl):
615          self.SetItemFont(id, font)          self.SetItemFont(id, font)
616                    
617      def __ShowHideLayer(self, layer):      def __ShowHideLayer(self, layer):
618          parent = self.layer2id[layer]          parent = self.find_layer(layer)
619          assert parent.IsOk()          assert parent.IsOk()
620    
621          visible = layer.Visible()          visible = layer.Visible()
# Line 649  class ScaleBarBitmap(wxBoxSizer): Line 669  class ScaleBarBitmap(wxBoxSizer):
669          dc.SelectObject(bmp)          dc.SelectObject(bmp)
670          dc.Clear()          dc.Clear()
671    
672          self.scalebar.DrawScaleBar(scale, dc, (0,0), dc.GetSizeTuple())          if self.canvas.map is not None \
673                and self.canvas.map.projection is not None:
674                self.scalebar.DrawScaleBar(scale, dc, (0,0), dc.GetSizeTuple())
675    
676          self.scalebarBitmap.SetBitmap(bmp)          self.scalebarBitmap.SetBitmap(bmp)
677    

Legend:
Removed from v.1115  
changed lines
  Added in v.1231

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26