/[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 572 by jonathan, Fri Mar 28 17:06:50 2003 UTC revision 632 by jonathan, Wed Apr 9 10:10:53 2003 UTC
# Line 112  class LegendPanel(DockPanel): Line 112  class LegendPanel(DockPanel):
112          if ok:          if ok:
113              self.mainWindow.OpenClassifier(list[0], list[1])              self.mainWindow.OpenClassifier(list[0], list[1])
114    
115        def Destroy(self):
116            self.__Close()
117    
118      def _OnClassify(self, event):      def _OnClassify(self, event):
119          self.DoOnClassify()          self.DoOnClassify()
120    
# Line 125  class LegendPanel(DockPanel): Line 128  class LegendPanel(DockPanel):
128          self.tree.DoOnShowLayer()          self.tree.DoOnShowLayer()
129          pass          pass
130    
131        #def Close(self, force = False):
132            #DockPanel.Close(self, force)
133            
134      def _OnClose(self, event):      def _OnClose(self, event):
135          self.tree.Close()          self.__Close()
136    
137      def _OnHideLayer(self, event):      def _OnHideLayer(self, event):
138          self.tree.DoOnHideLayer()          self.tree.DoOnHideLayer()
# Line 136  class LegendPanel(DockPanel): Line 142  class LegendPanel(DockPanel):
142          for b in self.buttons:          for b in self.buttons:
143              b.Enable(on)              b.Enable(on)
144    
145        def __Close(self):
146            self.tree.Close()
147    
148  class LegendTree(wxTreeCtrl):  class LegendTree(wxTreeCtrl):
149    
150      def __init__(self, parent, id, map, mainWindow):      def __init__(self, parent, id, map, mainWindow):
# Line 161  class LegendTree(wxTreeCtrl): Line 170  class LegendTree(wxTreeCtrl):
170          self.SetMap(map)          self.SetMap(map)
171    
172      def _OnClose(self, event):      def _OnClose(self, event):
         print "LegendTree destroyed"  
173          self.SetMap(None)          self.SetMap(None)
174    
175      def GetMap(self):      def GetMap(self):
# Line 197  class LegendTree(wxTreeCtrl): Line 205  class LegendTree(wxTreeCtrl):
205                            
206      def MoveCurrentItemUp(self):      def MoveCurrentItemUp(self):
207          cur_id = self.GetSelection()          cur_id = self.GetSelection()
208          assert(cur_id.IsOk())          assert cur_id.IsOk()
209    
210          cur_data = self.GetPyData(cur_id)          cur_data = self.GetPyData(cur_id)
211    
# Line 213  class LegendTree(wxTreeCtrl): Line 221  class LegendTree(wxTreeCtrl):
221          elif isinstance(cur_data, ClassGroup):          elif isinstance(cur_data, ClassGroup):
222              pass              pass
223          else:          else:
224              assert(False, "Shouldn't be here.")              assert False, "Shouldn't be here."
225              pass              pass
226    
227      def MoveCurrentItemDown(self):      def MoveCurrentItemDown(self):
228          cur_id = self.GetSelection()          cur_id = self.GetSelection()
229          assert(cur_id.IsOk())          assert cur_id.IsOk()
230    
231          cur_data = self.GetPyData(cur_id)          cur_data = self.GetPyData(cur_id)
232    
# Line 227  class LegendTree(wxTreeCtrl): Line 235  class LegendTree(wxTreeCtrl):
235          elif isinstance(cur_data, ClassGroup):          elif isinstance(cur_data, ClassGroup):
236              pass              pass
237          else:          else:
238              assert(False, "Shouldn't be here.")              assert False, "Shouldn't be here."
239              pass              pass
240    
241    
# Line 255  class LegendTree(wxTreeCtrl): Line 263  class LegendTree(wxTreeCtrl):
263    
264  #   def DoOnClassify(self):  #   def DoOnClassify(self):
265  #       id = self.GetSelection()  #       id = self.GetSelection()
266  #       assert(id.IsOk())  #       assert id.IsOk()
267    
268  #       item = self.GetPyData(id)  #       item = self.GetPyData(id)
269  #       if isinstance(item, ClassGroup):  #       if isinstance(item, ClassGroup):
270  #           id = self.GetItemParent(id)  #           id = self.GetItemParent(id)
271  #           assert(id.IsOk())  #           assert id.IsOk()
272  #           item = self.GetPyData(id)  #           item = self.GetPyData(id)
273    
274  #       # XXX: THIS IS SUCH AWFUL STYLE! YUCK!  #       # XXX: THIS IS SUCH AWFUL STYLE! YUCK!
275  #       self.parent.mainWindow.OpenClassifier(item)  #       self.parent.mainWindow.OpenClassifier(item)
276  #       #assert(False, "XXX: FIXME HERE")  #       #assert False, "XXX: FIXME HERE"
277    
278      def Sort(self):      def Sort(self):
279          self.SortChildren(self.GetRootItem())          self.SortChildren(self.GetRootItem())
# Line 284  class LegendTree(wxTreeCtrl): Line 292  class LegendTree(wxTreeCtrl):
292          self.parent.DoOnClassify()          self.parent.DoOnClassify()
293    
294      def _OnMsgLayerChanged(self, layer):      def _OnMsgLayerChanged(self, layer):
295          assert(isinstance(layer, Layer))          assert isinstance(layer, Layer)
296    
297          id = self.layer2id[layer]          id = self.layer2id[layer]
298            assert id.IsOk()
299    
300          self.__FillTreeLayer(id)          # XXX: yikes! this is so bad, we should be doing what is
301            #      commented out, but there is a problem with keeping
302            #      track of the images in the image list when we replace
303            #      a layer. it ends up causing a seg fault.
304            self.__FillTree(self.map)
305            #self.__FillTreeLayer(id)
306    
307      def _OnMsgMapStackingChanged(self, *args):      def _OnMsgMapStackingChanged(self, *args):
308          self.Sort()          self.Sort()
# Line 298  class LegendTree(wxTreeCtrl): Line 312  class LegendTree(wxTreeCtrl):
312              self.EnsureVisible(id)              self.EnsureVisible(id)
313    
314      def _OnMsgMapLayersAddedRemoved(self, map):      def _OnMsgMapLayersAddedRemoved(self, map):
315          assert(map is self.map)          assert map is self.map
316    
317          self.__FillTree(self.map)          self.__FillTree(self.map)
318    
319      def _OnMsgLayerVisibilityChanged(self, layer):      def _OnMsgLayerVisibilityChanged(self, layer):
320          assert(isinstance(layer, Layer))          assert isinstance(layer, Layer)
321    
322          self.__ShowHideLayer(layer)          self.__ShowHideLayer(layer)
323    
324      def GetSelectedHierarchy(self):      def GetSelectedHierarchy(self):
325          id = self.GetSelection()          id = self.GetSelection()
326          assert(id.IsOk())          assert id.IsOk()
327    
328          layer = self.GetPyData(id)          layer = self.GetPyData(id)
329          group = None          group = None
330    
331          if isinstance(layer, ClassGroup):          if isinstance(layer, ClassGroup):
332              id = self.GetItemParent(id)              id = self.GetItemParent(id)
333              assert(id.IsOk())              assert id.IsOk()
334              group = layer              group = layer
335              layer = self.GetPyData(id)              layer = self.GetPyData(id)
336    
# Line 324  class LegendTree(wxTreeCtrl): Line 338  class LegendTree(wxTreeCtrl):
338    
339      def __FillTree(self, map):      def __FillTree(self, map):
340    
341          assert(isinstance(map, Map))          assert isinstance(map, Map)
342    
343          self.Freeze()          self.Freeze()
344    
# Line 354  class LegendTree(wxTreeCtrl): Line 368  class LegendTree(wxTreeCtrl):
368                  l.Subscribe(LAYER_VISIBILITY_CHANGED,                  l.Subscribe(LAYER_VISIBILITY_CHANGED,
369                              self._OnMsgLayerVisibilityChanged)                              self._OnMsgLayerVisibilityChanged)
370                  self.SetPyData(id, l)                  self.SetPyData(id, l)
371                  font = self.GetItemFont(id)                  self.__SetVisibilityStyle(l.Visible(), id)
                 if not l.Visible():  
                     font.SetStyle(wxITALIC)  
                     self.SetItemFont(id, font)  
372    
373                  self.layer2id[l] = id                  self.layer2id[l] = id
374    
# Line 377  class LegendTree(wxTreeCtrl): Line 388  class LegendTree(wxTreeCtrl):
388    
389          shapeType = layer.ShapeType()          shapeType = layer.ShapeType()
390    
391            show = layer.Visible()
392          for g in clazz:          for g in clazz:
393              id = self.AppendItem(pid, g.GetDisplayText())              id = self.AppendItem(pid, g.GetDisplayText())
394              self.SetPyData(id, g)              self.SetPyData(id, g)
395                self.__SetVisibilityStyle(show, id)
396    
397              bmp = self.__BuildGroupImage(g, shapeType)              bmp = self.__BuildGroupImage(g, shapeType)
398    
# Line 389  class LegendTree(wxTreeCtrl): Line 402  class LegendTree(wxTreeCtrl):
402                  i = self.image_list.Add(bmp)                  i = self.image_list.Add(bmp)
403                  self.SetItemImage(id, i)                  self.SetItemImage(id, i)
404    
             #self.layer2id[g] = id  
   
405          self.Thaw()          self.Thaw()
406    
407      def __BuildGroupImage(self, group, shapeType):      def __BuildGroupImage(self, group, shapeType):
408          assert(isinstance(group, ClassGroup))          assert isinstance(group, ClassGroup)
409    
410          bmp = wxEmptyBitmap(BMP_SIZE_W, BMP_SIZE_H)          bmp = wxEmptyBitmap(BMP_SIZE_W, BMP_SIZE_H)
411          #brush = wxBrush(Color2wxColour(item[1]), wxSOLID)          #brush = wxBrush(Color2wxColour(item[1]), wxSOLID)
# Line 407  class LegendTree(wxTreeCtrl): Line 418  class LegendTree(wxTreeCtrl):
418          return bmp          return bmp
419    
420      def __DeleteAllItems(self):      def __DeleteAllItems(self):
         self.DeleteAllItems()  
421    
422          while len(self.layer2id) > 0:          while len(self.layer2id) > 0:
423              layer, id = self.layer2id.popitem()              layer, id = self.layer2id.popitem()
# Line 415  class LegendTree(wxTreeCtrl): Line 425  class LegendTree(wxTreeCtrl):
425                                self._OnMsgLayerChanged)                                self._OnMsgLayerChanged)
426              layer.Unsubscribe(LAYER_VISIBILITY_CHANGED,              layer.Unsubscribe(LAYER_VISIBILITY_CHANGED,
427                                self._OnMsgLayerVisibilityChanged)                                self._OnMsgLayerVisibilityChanged)
   
428    
429      def __ShowHideHelper(self, show, id):          self.DeleteAllItems()
430    
431        def __SetVisibilityStyle(self, visible, id):
432          font = self.GetItemFont(id)          font = self.GetItemFont(id)
433    
434          if show:          if visible:
435              font.SetStyle(wxNORMAL)              font.SetStyle(wxNORMAL)
436              color = wxBLACK              color = wxBLACK
437          else:          else:
# Line 432  class LegendTree(wxTreeCtrl): Line 443  class LegendTree(wxTreeCtrl):
443                    
444      def __ShowHideLayer(self, layer):      def __ShowHideLayer(self, layer):
445          parent = self.layer2id[layer]          parent = self.layer2id[layer]
446          assert(parent.IsOk())          assert parent.IsOk()
   
         show = layer.Visible()  
447    
448            visible = layer.Visible()
449    
450          self.__ShowHideHelper(show, parent)          self.__SetVisibilityStyle(visible, parent)
451    
452          id, cookie = self.GetFirstChild(parent, 123)          id, cookie = self.GetFirstChild(parent, 123)
453    
454          while id.IsOk():          while id.IsOk():
455              self.__ShowHideHelper(show, id)              self.__SetVisibilityStyle(visible, id)
456              id, cookie = self.GetNextChild(parent, cookie)              id, cookie = self.GetNextChild(parent, cookie)
457                            

Legend:
Removed from v.572  
changed lines
  Added in v.632

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26