/[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 639 by jonathan, Thu Apr 10 14:35:39 2003 UTC
# Line 25  from Thuban.Lib.connector import Connect Line 25  from Thuban.Lib.connector import Connect
25  ID_LEGEND_MOVEUP = 4001  ID_LEGEND_MOVEUP = 4001
26  ID_LEGEND_MOVEDOWN = 4002  ID_LEGEND_MOVEDOWN = 4002
27  ID_LEGEND_TREE = 4003  ID_LEGEND_TREE = 4003
28  ID_LEGEND_CLASSIFY = 4004  ID_LEGEND_PROPS = 4004
29  ID_LEGEND_SHOWLAYER = 4005  ID_LEGEND_SHOWLAYER = 4005
30  ID_LEGEND_HIDELAYER = 4006  ID_LEGEND_HIDELAYER = 4006
31    
# Line 54  class LegendPanel(DockPanel): Line 54  class LegendPanel(DockPanel):
54          buttonBox.Add(button, 0, wxGROW | wxLEFT | wxRIGHT, 0)          buttonBox.Add(button, 0, wxGROW | wxLEFT | wxRIGHT, 0)
55          self.buttons.append(button)          self.buttons.append(button)
56    
57          button = wxButton(self, ID_LEGEND_CLASSIFY, _("Classify"))          button = wxButton(self, ID_LEGEND_PROPS, _("Properties"))
58          buttonBox.Add(button, 0, wxGROW | wxLEFT | wxRIGHT, 0)          buttonBox.Add(button, 0, wxGROW | wxLEFT | wxRIGHT, 0)
59          self.buttons.append(button)          self.buttons.append(button)
60    
# Line 68  class LegendPanel(DockPanel): Line 68  class LegendPanel(DockPanel):
68    
69          EVT_BUTTON(self, ID_LEGEND_MOVEUP, self._OnMoveUp)          EVT_BUTTON(self, ID_LEGEND_MOVEUP, self._OnMoveUp)
70          EVT_BUTTON(self, ID_LEGEND_MOVEDOWN, self._OnMoveDown)          EVT_BUTTON(self, ID_LEGEND_MOVEDOWN, self._OnMoveDown)
71          EVT_BUTTON(self, ID_LEGEND_CLASSIFY, self._OnClassify)          EVT_BUTTON(self, ID_LEGEND_PROPS, self._OnProperties)
72          EVT_BUTTON(self, ID_LEGEND_SHOWLAYER, self._OnShowLayer)          EVT_BUTTON(self, ID_LEGEND_SHOWLAYER, self._OnShowLayer)
73          EVT_BUTTON(self, ID_LEGEND_HIDELAYER, self._OnHideLayer)          EVT_BUTTON(self, ID_LEGEND_HIDELAYER, self._OnHideLayer)
74    
# Line 105  class LegendPanel(DockPanel): Line 105  class LegendPanel(DockPanel):
105          if ok:          if ok:
106              self.mainWindow.SelectLayer(layer)              self.mainWindow.SelectLayer(layer)
107    
108      def DoOnClassify(self):      def DoOnProperties(self):
109          list = self.tree.GetSelectedHierarchy()          list = self.tree.GetSelectedHierarchy()
110    
111          ok = isinstance(list[0], Layer)          ok = isinstance(list[0], Layer)
112          if ok:          if ok:
113              self.mainWindow.OpenClassifier(list[0], list[1])              self.mainWindow.OpenLayerProperties(list[0], list[1])
114    
115      def _OnClassify(self, event):      def Destroy(self):
116          self.DoOnClassify()          self.__Close()
117    
118        def _OnProperties(self, event):
119            self.DoOnProperties()
120    
121      def _OnMoveUp(self, event):      def _OnMoveUp(self, event):
122          self.tree.MoveCurrentItemUp()          self.tree.MoveCurrentItemUp()
# 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 253  class LegendTree(wxTreeCtrl): Line 261  class LegendTree(wxTreeCtrl):
261          layer, group = self.GetSelectedHierarchy()          layer, group = self.GetSelectedHierarchy()
262          layer.SetVisible(False)          layer.SetVisible(False)
263    
 #   def DoOnClassify(self):  
 #       id = self.GetSelection()  
 #       assert(id.IsOk())  
   
 #       item = self.GetPyData(id)  
 #       if isinstance(item, ClassGroup):  
 #           id = self.GetItemParent(id)  
 #           assert(id.IsOk())  
 #           item = self.GetPyData(id)  
   
 #       # XXX: THIS IS SUCH AWFUL STYLE! YUCK!  
 #       self.parent.mainWindow.OpenClassifier(item)  
 #       #assert(False, "XXX: FIXME HERE")  
   
264      def Sort(self):      def Sort(self):
265          self.SortChildren(self.GetRootItem())          self.SortChildren(self.GetRootItem())
266    
267      def _OnMsgMapsChanged(self):      def _OnMsgMapsChanged(self):
268          print "ADfsadfsadfsadfsa"          #print self.map is self.mainWindow.Map()
         print self.map is self.mainWindow.Map()  
269          self.SetMap(self.mainWindow.Map())          self.SetMap(self.mainWindow.Map())
270                    
271      def _OnSelChanged(self, event):      def _OnSelChanged(self, event):
# Line 281  class LegendTree(wxTreeCtrl): Line 274  class LegendTree(wxTreeCtrl):
274          self.parent.DoOnSelChanged(layer, group)          self.parent.DoOnSelChanged(layer, group)
275    
276      def _OnItemActivated(self, event):      def _OnItemActivated(self, event):
277          self.parent.DoOnClassify()          self.parent.DoOnProperties()
278    
279      def _OnMsgLayerChanged(self, layer):      def _OnMsgLayerChanged(self, layer):
280          assert(isinstance(layer, Layer))          assert isinstance(layer, Layer)
281    
282          id = self.layer2id[layer]          id = self.layer2id[layer]
283            assert id.IsOk()
284    
285          self.__FillTreeLayer(id)          # XXX: yikes! this is so bad, we should be doing what is
286            #      commented out, but there is a problem with keeping
287            #      track of the images in the image list when we replace
288            #      a layer. it ends up causing a seg fault.
289            self.__FillTree(self.map)
290            #self.__FillTreeLayer(id)
291    
292      def _OnMsgMapStackingChanged(self, *args):      def _OnMsgMapStackingChanged(self, *args):
293          self.Sort()          self.Sort()
# Line 298  class LegendTree(wxTreeCtrl): Line 297  class LegendTree(wxTreeCtrl):
297              self.EnsureVisible(id)              self.EnsureVisible(id)
298    
299      def _OnMsgMapLayersAddedRemoved(self, map):      def _OnMsgMapLayersAddedRemoved(self, map):
300          assert(map is self.map)          assert map is self.map
301    
302          self.__FillTree(self.map)          self.__FillTree(self.map)
303    
304      def _OnMsgLayerVisibilityChanged(self, layer):      def _OnMsgLayerVisibilityChanged(self, layer):
305          assert(isinstance(layer, Layer))          assert isinstance(layer, Layer)
306    
307          self.__ShowHideLayer(layer)          self.__ShowHideLayer(layer)
308    
309      def GetSelectedHierarchy(self):      def GetSelectedHierarchy(self):
310          id = self.GetSelection()          id = self.GetSelection()
311          assert(id.IsOk())          assert id.IsOk()
312    
313          layer = self.GetPyData(id)          layer = self.GetPyData(id)
314          group = None          group = None
315    
316          if isinstance(layer, ClassGroup):          if isinstance(layer, ClassGroup):
317              id = self.GetItemParent(id)              id = self.GetItemParent(id)
318              assert(id.IsOk())              assert id.IsOk()
319              group = layer              group = layer
320              layer = self.GetPyData(id)              layer = self.GetPyData(id)
321    
# Line 324  class LegendTree(wxTreeCtrl): Line 323  class LegendTree(wxTreeCtrl):
323    
324      def __FillTree(self, map):      def __FillTree(self, map):
325    
326          assert(isinstance(map, Map))          assert isinstance(map, Map)
327    
328          self.Freeze()          self.Freeze()
329    
# Line 354  class LegendTree(wxTreeCtrl): Line 353  class LegendTree(wxTreeCtrl):
353                  l.Subscribe(LAYER_VISIBILITY_CHANGED,                  l.Subscribe(LAYER_VISIBILITY_CHANGED,
354                              self._OnMsgLayerVisibilityChanged)                              self._OnMsgLayerVisibilityChanged)
355                  self.SetPyData(id, l)                  self.SetPyData(id, l)
356                  font = self.GetItemFont(id)                  self.__SetVisibilityStyle(l.Visible(), id)
                 if not l.Visible():  
                     font.SetStyle(wxITALIC)  
                     self.SetItemFont(id, font)  
357    
358                  self.layer2id[l] = id                  self.layer2id[l] = id
359    
# Line 377  class LegendTree(wxTreeCtrl): Line 373  class LegendTree(wxTreeCtrl):
373    
374          shapeType = layer.ShapeType()          shapeType = layer.ShapeType()
375    
376            show = layer.Visible()
377          for g in clazz:          for g in clazz:
378              id = self.AppendItem(pid, g.GetDisplayText())              if g.IsVisible():
379              self.SetPyData(id, g)                  id = self.AppendItem(pid, g.GetDisplayText())
380                    self.SetPyData(id, g)
381              bmp = self.__BuildGroupImage(g, shapeType)                  self.__SetVisibilityStyle(show, id)
382    
383              if bmp is None:                  bmp = self.__BuildGroupImage(g, shapeType)
384                  self.SetItemImage(id, self.emptyImageIndex)  
385              else:                  if bmp is None:
386                  i = self.image_list.Add(bmp)                      self.SetItemImage(id, self.emptyImageIndex)
387                  self.SetItemImage(id, i)                  else:
388                        i = self.image_list.Add(bmp)
389              #self.layer2id[g] = id                      self.SetItemImage(id, i)
390    
391          self.Thaw()          self.Thaw()
392    
393      def __BuildGroupImage(self, group, shapeType):      def __BuildGroupImage(self, group, shapeType):
394          assert(isinstance(group, ClassGroup))          assert isinstance(group, ClassGroup)
395    
396          bmp = wxEmptyBitmap(BMP_SIZE_W, BMP_SIZE_H)          bmp = wxEmptyBitmap(BMP_SIZE_W, BMP_SIZE_H)
397          #brush = wxBrush(Color2wxColour(item[1]), wxSOLID)          #brush = wxBrush(Color2wxColour(item[1]), wxSOLID)
# Line 407  class LegendTree(wxTreeCtrl): Line 404  class LegendTree(wxTreeCtrl):
404          return bmp          return bmp
405    
406      def __DeleteAllItems(self):      def __DeleteAllItems(self):
         self.DeleteAllItems()  
407    
408          while len(self.layer2id) > 0:          while len(self.layer2id) > 0:
409              layer, id = self.layer2id.popitem()              layer, id = self.layer2id.popitem()
# Line 415  class LegendTree(wxTreeCtrl): Line 411  class LegendTree(wxTreeCtrl):
411                                self._OnMsgLayerChanged)                                self._OnMsgLayerChanged)
412              layer.Unsubscribe(LAYER_VISIBILITY_CHANGED,              layer.Unsubscribe(LAYER_VISIBILITY_CHANGED,
413                                self._OnMsgLayerVisibilityChanged)                                self._OnMsgLayerVisibilityChanged)
   
414    
415      def __ShowHideHelper(self, show, id):          self.DeleteAllItems()
416    
417        def __SetVisibilityStyle(self, visible, id):
418          font = self.GetItemFont(id)          font = self.GetItemFont(id)
419    
420          if show:          if visible:
421              font.SetStyle(wxNORMAL)              font.SetStyle(wxNORMAL)
422              color = wxBLACK              color = wxBLACK
423          else:          else:
# Line 432  class LegendTree(wxTreeCtrl): Line 429  class LegendTree(wxTreeCtrl):
429                    
430      def __ShowHideLayer(self, layer):      def __ShowHideLayer(self, layer):
431          parent = self.layer2id[layer]          parent = self.layer2id[layer]
432          assert(parent.IsOk())          assert parent.IsOk()
   
         show = layer.Visible()  
433    
434            visible = layer.Visible()
435    
436          self.__ShowHideHelper(show, parent)          self.__SetVisibilityStyle(visible, parent)
437    
438          id, cookie = self.GetFirstChild(parent, 123)          id, cookie = self.GetFirstChild(parent, 123)
439    
440          while id.IsOk():          while id.IsOk():
441              self.__ShowHideHelper(show, id)              self.__SetVisibilityStyle(visible, id)
442              id, cookie = self.GetNextChild(parent, cookie)              id, cookie = self.GetNextChild(parent, cookie)
443                            

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26