/[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 914 by frank, Fri May 16 16:25:41 2003 UTC revision 1119 by bh, Mon Jun 2 10:37:59 2003 UTC
# Line 14  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
19  from Thuban.Model.classification import ClassGroup  from Thuban.Model.classification import ClassGroup
20    
# Line 30  from Thuban.UI.scalebar import ScaleBar Line 30  from Thuban.UI.scalebar import ScaleBar
30    
31  from Thuban.Lib.connector import ConnectorError  from Thuban.Lib.connector import ConnectorError
32    
33  ID_LEGEND_RAISE = 4001  ID_LEGEND_TOP = 4001
34  ID_LEGEND_LOWER = 4002  ID_LEGEND_RAISE = 4002
35  ID_LEGEND_TREE = 4003  ID_LEGEND_LOWER = 4003
36  ID_LEGEND_PROPS = 4004  ID_LEGEND_BOTTOM = 4004
37  ID_LEGEND_SHOWLAYER = 4005  ID_LEGEND_TREE = 4005
38  ID_LEGEND_HIDELAYER = 4006  ID_LEGEND_PROPS = 4006
39    ID_LEGEND_SHOWLAYER = 4007
40    ID_LEGEND_HIDELAYER = 4008
41    
42  BMP_SIZE_W = 30  BMP_SIZE_W = 15
43  BMP_SIZE_H = 15  BMP_SIZE_H = 15
44    
45    TOP_BMP = "top_layer"
46  RAISE_BMP = "raise_layer"  RAISE_BMP = "raise_layer"
47  LOWER_BMP = "lower_layer"  LOWER_BMP = "lower_layer"
48    BOTTOM_BMP = "bottom_layer"
49  SHOW_BMP  = "show_layer"  SHOW_BMP  = "show_layer"
50  HIDE_BMP  = "hide_layer"  HIDE_BMP  = "hide_layer"
51  PROPS_BMP = "layer_properties"  PROPS_BMP = "layer_properties"
# Line 62  class LegendPanel(DockPanel): Line 66  class LegendPanel(DockPanel):
66          self.toolBar = wxToolBar(self, -1)          self.toolBar = wxToolBar(self, -1)
67          self.toolBar.SetToolBitmapSize(wxSize(24, 24))          self.toolBar.SetToolBitmapSize(wxSize(24, 24))
68    
69            bmp = resource.GetBitmapResource(TOP_BMP, wxBITMAP_TYPE_XPM)
70            self.toolBar.AddTool(ID_LEGEND_TOP, bmp,
71                shortHelpString=_("Top Layer"))
72    
73          bmp = resource.GetBitmapResource(RAISE_BMP, wxBITMAP_TYPE_XPM)          bmp = resource.GetBitmapResource(RAISE_BMP, wxBITMAP_TYPE_XPM)
74          self.toolBar.AddTool(ID_LEGEND_RAISE, bmp,          self.toolBar.AddTool(ID_LEGEND_RAISE, bmp,
75              shortHelpString=_("Raise Layer"))              shortHelpString=_("Raise Layer"))
# Line 70  class LegendPanel(DockPanel): Line 78  class LegendPanel(DockPanel):
78          self.toolBar.AddTool(ID_LEGEND_LOWER, bmp,          self.toolBar.AddTool(ID_LEGEND_LOWER, bmp,
79              shortHelpString=_("Lower Layer"))              shortHelpString=_("Lower Layer"))
80    
81            bmp = resource.GetBitmapResource(BOTTOM_BMP, wxBITMAP_TYPE_XPM)
82            self.toolBar.AddTool(ID_LEGEND_BOTTOM, bmp,
83                shortHelpString=_("Bottom Layer"))
84    
85          bmp = resource.GetBitmapResource(SHOW_BMP, wxBITMAP_TYPE_XPM)          bmp = resource.GetBitmapResource(SHOW_BMP, wxBITMAP_TYPE_XPM)
86          self.toolBar.AddTool(ID_LEGEND_SHOWLAYER, bmp,          self.toolBar.AddTool(ID_LEGEND_SHOWLAYER, bmp,
87              shortHelpString=_("Show Layer"))              shortHelpString=_("Show Layer"))
# Line 85  class LegendPanel(DockPanel): Line 97  class LegendPanel(DockPanel):
97          self.toolBar.Realize()          self.toolBar.Realize()
98          panelBox.Add(self.toolBar, 0, wxGROW, 0)          panelBox.Add(self.toolBar, 0, wxGROW, 0)
99    
100            EVT_TOOL(self, ID_LEGEND_TOP, self._OnMoveTop)
101          EVT_TOOL(self, ID_LEGEND_RAISE, self._OnMoveUp)          EVT_TOOL(self, ID_LEGEND_RAISE, self._OnMoveUp)
102          EVT_TOOL(self, ID_LEGEND_LOWER, self._OnMoveDown)          EVT_TOOL(self, ID_LEGEND_LOWER, self._OnMoveDown)
103            EVT_TOOL(self, ID_LEGEND_BOTTOM, self._OnMoveBottom)
104          EVT_TOOL(self, ID_LEGEND_PROPS, self._OnProperties)          EVT_TOOL(self, ID_LEGEND_PROPS, self._OnProperties)
105          EVT_TOOL(self, ID_LEGEND_SHOWLAYER, self._OnShowLayer)          EVT_TOOL(self, ID_LEGEND_SHOWLAYER, self._OnShowLayer)
106          EVT_TOOL(self, ID_LEGEND_HIDELAYER, self._OnHideLayer)          EVT_TOOL(self, ID_LEGEND_HIDELAYER, self._OnHideLayer)
# Line 121  class LegendPanel(DockPanel): Line 135  class LegendPanel(DockPanel):
135    
136      def DoOnSelChanged(self, layer, group):      def DoOnSelChanged(self, layer, group):
137    
138          ok = isinstance(layer, Layer)          ok = isinstance(layer, BaseLayer)
139          self.__EnableButtons(ok)          self.__EnableButtons(ok)
140    
141          self.mainWindow.SelectLayer(layer)          self.mainWindow.SelectLayer(layer)
# Line 129  class LegendPanel(DockPanel): Line 143  class LegendPanel(DockPanel):
143      def DoOnProperties(self):      def DoOnProperties(self):
144          list = self.tree.GetSelectedHierarchy()          list = self.tree.GetSelectedHierarchy()
145    
146          ok = isinstance(list[0], Layer)          ok = isinstance(list[0], BaseLayer)
147          if ok:          if ok:
148              self.mainWindow.OpenLayerProperties(list[0], list[1])              self.mainWindow.OpenLayerProperties(list[0], list[1])
149    
# Line 139  class LegendPanel(DockPanel): Line 153  class LegendPanel(DockPanel):
153      def _OnProperties(self, event):      def _OnProperties(self, event):
154          self.DoOnProperties()          self.DoOnProperties()
155    
156        def _OnMoveTop(self, event):
157            self.tree.MoveCurrentItemTop()
158            
159      def _OnMoveUp(self, event):      def _OnMoveUp(self, event):
160          self.tree.MoveCurrentItemUp()          self.tree.MoveCurrentItemUp()
161    
162      def _OnMoveDown(self, event):      def _OnMoveDown(self, event):
163          self.tree.MoveCurrentItemDown()          self.tree.MoveCurrentItemDown()
164    
165        def _OnMoveBottom(self, event):
166            self.tree.MoveCurrentItemBottom()
167    
168      def _OnShowLayer(self, event):      def _OnShowLayer(self, event):
169          self.tree.DoOnShowLayer()          self.tree.DoOnShowLayer()
170          pass          pass
# Line 160  class LegendPanel(DockPanel): Line 180  class LegendPanel(DockPanel):
180          pass          pass
181    
182      def __EnableButtons(self, on):      def __EnableButtons(self, on):
183            self.toolBar.EnableTool(ID_LEGEND_TOP, on)
184          self.toolBar.EnableTool(ID_LEGEND_RAISE, on)          self.toolBar.EnableTool(ID_LEGEND_RAISE, on)
185          self.toolBar.EnableTool(ID_LEGEND_LOWER, on)          self.toolBar.EnableTool(ID_LEGEND_LOWER, on)
186            self.toolBar.EnableTool(ID_LEGEND_BOTTOM, on)
187          self.toolBar.EnableTool(ID_LEGEND_SHOWLAYER,  on)          self.toolBar.EnableTool(ID_LEGEND_SHOWLAYER,  on)
188          self.toolBar.EnableTool(ID_LEGEND_HIDELAYER,  on)          self.toolBar.EnableTool(ID_LEGEND_HIDELAYER,  on)
189          self.toolBar.EnableTool(ID_LEGEND_PROPS, on)          self.toolBar.EnableTool(ID_LEGEND_PROPS, on)
# Line 180  class LegendTree(wxTreeCtrl): Line 202  class LegendTree(wxTreeCtrl):
202          self.map = None          self.map = None
203          self.parent = parent          self.parent = parent
204          self.layer2id = {}          self.layer2id = {}
205            self.changing_selection = 0
206    
207            #
208            # The image list used by the wxTreeCtrl causes problems when
209            # we remove layers and/or change a classification because it
210            # changes the image indices if you remove images from the list.
211            # Rather than removing unused images we use this list to keep
212            # track of which indices are available in the image list
213            # (because of a previous removal) and then  replace those indices
214            # with new images rather than appending to the end of the image
215            # list (assuming there are any that are available).
216            #
217            self.availImgListIndices = []
218    
219          self.image_list = None          self.image_list = None
220          self.emptyImageIndex = 0          self.emptyImageIndex = 0
# Line 202  class LegendTree(wxTreeCtrl): Line 237  class LegendTree(wxTreeCtrl):
237      def SetMap(self, map):      def SetMap(self, map):
238    
239          sub_list = [(MAP_STACKING_CHANGED, self._OnMsgMapStackingChanged),          sub_list = [(MAP_STACKING_CHANGED, self._OnMsgMapStackingChanged),
240                      (MAP_LAYERS_ADDED, self._OnMsgMapLayersAddedRemoved),                      (MAP_LAYERS_ADDED, self._OnMsgMapLayersAdded),
241                      (MAP_LAYERS_REMOVED, self._OnMsgMapLayersAddedRemoved)]                      (MAP_LAYERS_REMOVED, self._OnMsgMapLayersRemoved)]
242    
243          if self.map is not None:          if self.map is not None:
244              for msg, func in sub_list: self.map.Unsubscribe(msg, func)              for msg, func in sub_list: self.map.Unsubscribe(msg, func)
# Line 214  class LegendTree(wxTreeCtrl): Line 249  class LegendTree(wxTreeCtrl):
249                      #self._OnMsgMapsChanged)                      #self._OnMsgMapsChanged)
250              #except ConnectorError:              #except ConnectorError:
251                  #pass                  #pass
252              self.__DeleteAllItems()              self.DeleteAllItems()
253                    
254          self.map = map          self.map = map
255    
# Line 226  class LegendTree(wxTreeCtrl): Line 261  class LegendTree(wxTreeCtrl):
261                  #self._OnMsgMapsChanged)                  #self._OnMsgMapsChanged)
262              self.__FillTree(self.map)              self.__FillTree(self.map)
263    
264        def MoveCurrentItemTop(self):
265            layer, group = self.GetSelectedHierarchy()
266    
267            if layer is not None:
268                self.map.MoveLayerToTop(layer)
269            else:
270                assert False, "Shouldn't be allowed."
271                pass
272    
273      def MoveCurrentItemUp(self):      def MoveCurrentItemUp(self):
274          layer, group = self.GetSelectedHierarchy()          layer, group = self.GetSelectedHierarchy()
275    
# Line 244  class LegendTree(wxTreeCtrl): Line 288  class LegendTree(wxTreeCtrl):
288              assert False, "Shouldn't be allowed."              assert False, "Shouldn't be allowed."
289              pass              pass
290    
291        def MoveCurrentItemBottom(self):
292            layer, group = self.GetSelectedHierarchy()
293    
294            if layer is not None:
295                self.map.MoveLayerToBottom(layer)
296            else:
297                assert False, "Shouldn't be allowed."
298                pass
299    
300      def OnCompareItems(self, item1, item2):      def OnCompareItems(self, item1, item2):
301    
302          data1 = self.GetPyData(item1)          data1 = self.GetPyData(item1)
303          data2 = self.GetPyData(item2)          data2 = self.GetPyData(item2)
304    
305          if isinstance(data1, Layer):          if isinstance(data1, BaseLayer):
306              layers = self.map.Layers()              layers = self.map.Layers()
307              return layers.index(data2) - layers.index(data1)              return layers.index(data2) - layers.index(data1)
308          else:          else:
309              return wxTreeCtrl.OnCompareItems(self, item1, item2)              return wxTreeCtrl.OnCompareItems(self, item1, item2)
310    
311      def DoOnShowLayer(self):      def DoOnShowLayer(self):
         #self.__ShowHideLayer(True)  
312          layer, group = self.GetSelectedHierarchy()          layer, group = self.GetSelectedHierarchy()
313          layer.SetVisible(True)          layer.SetVisible(True)
314    
315      def DoOnHideLayer(self):      def DoOnHideLayer(self):
         #self.__ShowHideLayer(False)  
316          layer, group = self.GetSelectedHierarchy()          layer, group = self.GetSelectedHierarchy()
317          layer.SetVisible(False)          layer.SetVisible(False)
318    
# Line 290  class LegendTree(wxTreeCtrl): Line 341  class LegendTree(wxTreeCtrl):
341          self.SetMap(self.mainWindow.Map())          self.SetMap(self.mainWindow.Map())
342                    
343      def _OnSelChanged(self, event):      def _OnSelChanged(self, event):
344            # If we change the selection from normalize_selection do nothing.
345            if self.changing_selection:
346                return
347    
348            self.normalize_selection()
349          self.__UpdateSelection()          self.__UpdateSelection()
350    
351        def normalize_selection(self):
352            """Select the layer containing currently selected item"""
353            # This is really a workaround for a bug in wx where deleting a
354            # subtree with DeleteChildren does not update the selection
355            # properly and can lead to segfaults later because the return
356            # value of GetSelection points to invalid data.
357            item = self.GetSelection()
358            while item.IsOk():
359                object = self.GetPyData(item)
360                if isinstance(object, BaseLayer):
361                    break
362                item = self.GetItemParent(item)
363            else:
364                # No layer was found in the chain of parents, so there's
365                # nothing we can do.
366                return
367    
368            self.changing_selection = 1
369            try:
370                self.SelectItem(item)
371            finally:
372                self.changing_selection = 0
373    
374    
375      def _OnItemActivated(self, event):      def _OnItemActivated(self, event):
376          self.parent.DoOnProperties()          self.parent.DoOnProperties()
377    
378      def _OnMsgLayerChanged(self, layer):      def _OnMsgLayerChanged(self, layer):
379          assert isinstance(layer, Layer)          assert isinstance(layer, BaseLayer)
380    
381          id = self.layer2id[layer]          id = self.layer2id[layer]
382          assert id.IsOk()          assert id.IsOk()
383    
384          # XXX: yikes! this is so bad, we should be doing what is          self.__FillTreeLayer(id)
         #      commented out, but there is a problem with keeping  
         #      track of the images in the image list when we replace  
         #      a layer. it ends up causing a seg fault.  
         self.__FillTree(self.map)  
385          self.__UpdateSelection()          self.__UpdateSelection()
         #self.__FillTreeLayer(id)  
386    
387      def _OnMsgMapStackingChanged(self, *args):      def _OnMsgMapStackingChanged(self, *args):
388          self.Sort()          self.Sort()
# Line 317  class LegendTree(wxTreeCtrl): Line 392  class LegendTree(wxTreeCtrl):
392              self.EnsureVisible(id)              self.EnsureVisible(id)
393          self.__UpdateSelection()          self.__UpdateSelection()
394    
395      def _OnMsgMapLayersAddedRemoved(self, map):      def _OnMsgMapLayersAdded(self, map):
396          assert map is self.map          assert map is self.map
397    
398          self.__FillTree(self.map)          root = self.GetRootItem()
399    
400            i = 0
401            for l in map.Layers():
402                if not self.layer2id.has_key(l):
403                    self.__AddLayer(i, l)
404    
405            self.__UpdateSelection()
406    
407        def _OnMsgMapLayersRemoved(self, map):
408            assert map is self.map
409    
410            layers = map.Layers()
411    
412            for layer, id in self.layer2id.items():
413                if layer not in layers:
414                    if id.IsOk():
415                        self.__RemoveLayer(id)
416    
417          self.__UpdateSelection()          self.__UpdateSelection()
418    
419      def _OnMsgLayerVisibilityChanged(self, layer):      def _OnMsgLayerVisibilityChanged(self, layer):
420          assert isinstance(layer, Layer)          assert isinstance(layer, BaseLayer)
421    
422          self.__ShowHideLayer(layer)          self.__ShowHideLayer(layer)
423          self.__UpdateSelection()          self.__UpdateSelection()
# Line 344  class LegendTree(wxTreeCtrl): Line 437  class LegendTree(wxTreeCtrl):
437    
438          self.Freeze()          self.Freeze()
439    
440          self.__DeleteAllItems()          self.DeleteAllItems()
441    
442          if map.HasLayers():          if map.HasLayers():
443                root = self.GetRootItem()
             self.image_list = wxImageList(BMP_SIZE_W, BMP_SIZE_H, False, 0)  
                                                                                   
             bmp = wxEmptyBitmap(BMP_SIZE_W, BMP_SIZE_H)  
             dc = wxMemoryDC()  
             dc.SelectObject(bmp)  
             dc.SetBrush(wxBLACK_BRUSH)  
             dc.Clear()  
             dc.SelectObject(wxNullBitmap)  
                                                                                   
             self.emptyImageIndex = \  
                 self.image_list.AddWithColourMask(bmp, wxColour(0, 0, 0))  
                                                                                   
             self.AssignImageList(self.image_list)  
   
             root = self.AddRoot("")  
   
444              for l in map.Layers():              for l in map.Layers():
445                  id = self.PrependItem(root, l.Title())                  self.__AddLayer(0, l)
                 l.Subscribe(LAYER_CHANGED, self._OnMsgLayerChanged)  
                 l.Subscribe(LAYER_VISIBILITY_CHANGED,  
                             self._OnMsgLayerVisibilityChanged)  
                 l.Subscribe(TITLE_CHANGED, self._OnMsgLayerTitleChanged)  
                 self.SetPyData(id, l)  
                 self.__SetVisibilityStyle(l.Visible(), id)  
   
                 self.layer2id[l] = id  
   
                 self.__FillTreeLayer(id)  
                 self.Expand(id)  
446    
447          self.Thaw()          self.Thaw()
448    
# Line 387  class LegendTree(wxTreeCtrl): Line 453  class LegendTree(wxTreeCtrl):
453    
454          self.DeleteChildren(pid)          self.DeleteChildren(pid)
455    
456          clazz = layer.GetClassification()          if layer.HasClassification():
457    
458          shapeType = layer.ShapeType()              clazz = layer.GetClassification()
459    
460          show = layer.Visible()              shapeType = layer.ShapeType()
461          for g in clazz:  
462              if g.IsVisible():              show = layer.Visible()
463                  id = self.AppendItem(pid, g.GetDisplayText())              for g in clazz:
464                  self.SetPyData(id, g)                  if g.IsVisible():
465                  self.__SetVisibilityStyle(show, id)                      id = self.AppendItem(pid, g.GetDisplayText())
466                        self.SetPyData(id, g)
467                  bmp = self.__BuildGroupImage(g, shapeType)                      self.__SetVisibilityStyle(show, id)
468    
469                  if bmp is None:                      bmp = self.__BuildGroupImage(g, shapeType)
470                      self.SetItemImage(id, self.emptyImageIndex)  
471                  else:                      if bmp is None:
472                      i = self.image_list.Add(bmp)                          self.SetItemImage(id, -1)
473                      self.SetItemImage(id, i)                          self.SetItemSelectedImage(id, -1)
474                        else:
475                            if self.availImgListIndices:
476                                i = self.availImgListIndices.pop(0)
477                                self.image_list.Replace(i, bmp)
478                            else:
479                                i = self.image_list.Add(bmp)
480    
481                            self.SetItemImage(id, i)
482                            self.SetItemSelectedImage(id, i)
483    
484          self.Thaw()          self.Thaw()
485    
# Line 420  class LegendTree(wxTreeCtrl): Line 495  class LegendTree(wxTreeCtrl):
495    
496          return bmp          return bmp
497    
498      def __DeleteAllItems(self):      def DeleteAllItems(self):
499    
500          while len(self.layer2id) > 0:          pid = self.GetRootItem()
             layer, id = self.layer2id.popitem()  
             layer.Unsubscribe(LAYER_CHANGED,  
                               self._OnMsgLayerChanged)  
             layer.Unsubscribe(LAYER_VISIBILITY_CHANGED,  
                               self._OnMsgLayerVisibilityChanged)  
             layer.Unsubscribe(TITLE_CHANGED, self._OnMsgLayerTitleChanged)  
501    
502          self.DeleteAllItems()          id, cookie = self.GetFirstChild(pid, 123)
503            while id.IsOk():
504                self.__RemoveLayer(id)
505                id, cookie = self.GetNextChild(pid, cookie)
506    
507            wxTreeCtrl.DeleteAllItems(self)
508    
509        def __AddLayer(self, before, l):
510            root = self.GetRootItem()
511            id = self.InsertItemBefore(root, before,
512                                l.Title(),
513                                self.mapImageIndex,
514                                self.mapImageIndex)
515    
516            self.SetPyData(id, l)
517            self.__SetVisibilityStyle(l.Visible(), id)
518    
519            self.layer2id[l] = id
520    
521            self.__FillTreeLayer(id)
522            self.Expand(id)
523    
524            l.Subscribe(LAYER_CHANGED, self._OnMsgLayerChanged)
525            l.Subscribe(LAYER_VISIBILITY_CHANGED,
526                        self._OnMsgLayerVisibilityChanged)
527            l.Subscribe(TITLE_CHANGED, self._OnMsgLayerTitleChanged)
528    
529        def __RemoveLayer(self, id):
530            self.DeleteChildren(id)
531    
532            layer = self.GetPyData(id)
533            layer.Unsubscribe(LAYER_CHANGED,
534                              self._OnMsgLayerChanged)
535            layer.Unsubscribe(LAYER_VISIBILITY_CHANGED,
536                              self._OnMsgLayerVisibilityChanged)
537            layer.Unsubscribe(TITLE_CHANGED, self._OnMsgLayerTitleChanged)
538    
539            self.Delete(id)
540            del self.layer2id[layer]
541    
542        def DeleteChildren(self, pid):
543            id, cookie = self.GetFirstChild(pid, 123)
544            while id.IsOk():
545                self.availImgListIndices.append(self.GetItemImage(id))
546                id, cookie = self.GetNextChild(pid, cookie)
547            wxTreeCtrl.DeleteChildren(self, pid)
548    
549        def GetRootItem(self):
550            root = wxTreeCtrl.GetRootItem(self)
551    
552            if not root.IsOk():
553                self.image_list = wxImageList(BMP_SIZE_W, BMP_SIZE_H, False, 0)
554    
555                bmp = wxEmptyBitmap(BMP_SIZE_W, BMP_SIZE_H)
556                dc = wxMemoryDC()
557                dc.SelectObject(bmp)
558                dc.SetBrush(wxBLACK_BRUSH)
559                dc.Clear()
560                dc.SelectObject(wxNullBitmap)
561    
562                self.emptyImageIndex = \
563                    self.image_list.AddWithColourMask(bmp, wxColour(0, 0, 0))
564    
565                bmp = resource.GetBitmapResource("legend_icon_layer",
566                                                  wxBITMAP_TYPE_XPM)
567                self.mapImageIndex = \
568                    self.image_list.Add(bmp)
569    
570                self.AssignImageList(self.image_list)
571                self.availImgListIndices = []
572    
573                root = self.AddRoot("")
574    
575            return root
576    
577      def __SetVisibilityStyle(self, visible, id):      def __SetVisibilityStyle(self, visible, id):
578          font = self.GetItemFont(id)          font = self.GetItemFont(id)
# Line 439  class LegendTree(wxTreeCtrl): Line 581  class LegendTree(wxTreeCtrl):
581              font.SetStyle(wxNORMAL)              font.SetStyle(wxNORMAL)
582              color = wxBLACK              color = wxBLACK
583          else:          else:
584              font.SetStyle(wxITALIC)              #font.SetStyle(wxITALIC)
585                font.SetStyle(wxNORMAL)
586              color = wxLIGHT_GREY              color = wxLIGHT_GREY
587    
588          self.SetItemTextColour(id, color)          self.SetItemTextColour(id, color)
# Line 465  class ScaleBarBitmap(wxBoxSizer): Line 608  class ScaleBarBitmap(wxBoxSizer):
608          # While the width is fixed, get the height _now_.          # While the width is fixed, get the height _now_.
609          dc = wxMemoryDC()          dc = wxMemoryDC()
610          textwidth, textheight = dc.GetTextExtent("%d"%0)          textwidth, textheight = dc.GetTextExtent("%d"%0)
611          self.width = 200          self.width = 210
612          self.height = textheight + 3*2 + 8          self.height = textheight + 3*2 + 8
613    
614          wxBoxSizer.__init__(self, wxVERTICAL)          wxBoxSizer.__init__(self, wxVERTICAL)

Legend:
Removed from v.914  
changed lines
  Added in v.1119

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26