/[thuban]/branches/WIP-pyshapelib-bramz/Thuban/UI/tree.py
ViewVC logotype

Diff of /branches/WIP-pyshapelib-bramz/Thuban/UI/tree.py

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 488 by jonathan, Fri Mar 7 18:21:25 2003 UTC revision 521 by jonathan, Wed Mar 12 13:18:50 2003 UTC
# Line 23  from Thuban.Model.layer import Layer Line 23  from Thuban.Model.layer import Layer
23  from Thuban.Model.map import Map  from Thuban.Model.map import Map
24    
25  from dialogs import NonModalDialog  from dialogs import NonModalDialog
26  from messages import SESSION_CHANGED, SELECTED_LAYER  from messages import SESSION_REPLACED, SELECTED_LAYER
27    
28  BMP_SIZE = 15  BMP_SIZE = 15
29    
# Line 62  class SessionTreeCtrl(wxTreeCtrl): Line 62  class SessionTreeCtrl(wxTreeCtrl):
62          # Dictionary mapping layer id's to tree items          # Dictionary mapping layer id's to tree items
63          self.layer_to_item = {}          self.layer_to_item = {}
64    
65          self.app.Subscribe(SESSION_CHANGED, self.session_changed)          self.app.Subscribe(SESSION_REPLACED, self.session_changed)
66          self.app.interactor.Subscribe(SELECTED_LAYER, self.layer_selected)          self.app.interactor.Subscribe(SELECTED_LAYER, self.layer_selected)
67    
68          # the session currently displayed in the tree          # the session currently displayed in the tree
69          self.session = None          self.session = None
70    
         self.image_list = wxImageList(BMP_SIZE, BMP_SIZE)  
         self.AssignImageList(self.image_list)  
71    
72          # pretend the session has changed to build the initial tree          # pretend the session has changed to build the initial tree
73          self.session_changed()          self.session_changed()
# Line 80  class SessionTreeCtrl(wxTreeCtrl): Line 78  class SessionTreeCtrl(wxTreeCtrl):
78          if self.session is not None:          if self.session is not None:
79              self.session.Unsubscribe(CHANGED, self.update_tree)              self.session.Unsubscribe(CHANGED, self.update_tree)
80              self.session = None              self.session = None
81          self.app.Unsubscribe(SESSION_CHANGED, self.session_changed)          self.app.Unsubscribe(SESSION_REPLACED, self.session_changed)
82          self.app.interactor.Unsubscribe(SELECTED_LAYER, self.layer_selected)          self.app.interactor.Unsubscribe(SELECTED_LAYER, self.layer_selected)
83    
84      def update_tree(self, *args):      def update_tree(self, *args):
85          """Clear and rebuild the tree"""          """Clear and rebuild the tree"""
86          self.DeleteAllItems()          self.DeleteAllItems()
87          self.layer_to_item.clear()          self.layer_to_item.clear()
88            self.image_list = wxImageList(BMP_SIZE, BMP_SIZE, False, 0)
89    
90            bmp = wxEmptyBitmap(BMP_SIZE, BMP_SIZE)
91            dc = wxMemoryDC()
92            dc.SelectObject(bmp)
93            dc.SetBrush(wxBLACK_BRUSH)
94            dc.Clear()
95            dc.SelectObject(wxNullBitmap)
96    
97            self.emptyImageIndex = \
98                self.image_list.AddWithColourMask(bmp, wxColour(0, 0, 0))
99    
100            self.AssignImageList(self.image_list)
101    
102          session = self.app.session          session = self.app.session
103          info = session.TreeInfo()          info = session.TreeInfo()
104          root = self.AddRoot(info[0])          root = self.AddRoot(info[0], -1, -1, None)
105            self.SetItemImage(root, self.emptyImageIndex)
106          self.add_items(root, info[1])          self.add_items(root, info[1])
107          self.Expand(root)          self.Expand(root)
108          # select the selected layer          # select the selected layer
# Line 114  class SessionTreeCtrl(wxTreeCtrl): Line 126  class SessionTreeCtrl(wxTreeCtrl):
126              if hasattr(item, "TreeInfo"):              if hasattr(item, "TreeInfo"):
127                  # Supports the TreeInfo protocol                  # Supports the TreeInfo protocol
128                  info = item.TreeInfo()                  info = item.TreeInfo()
129                  treeitem = self.AppendItem(parent, info[0])                  treeitem = self.AppendItem(parent, info[0], -1, -1, None)
130                    self.SetItemImage(treeitem, self.emptyImageIndex)
131                  self.SetPyData(treeitem, item)                  self.SetPyData(treeitem, item)
132                  self.add_items(treeitem, info[1])                  self.add_items(treeitem, info[1])
133                  self.Expand(treeitem)                  self.Expand(treeitem)
# Line 123  class SessionTreeCtrl(wxTreeCtrl): Line 136  class SessionTreeCtrl(wxTreeCtrl):
136              elif isinstance(item, StringType) or \              elif isinstance(item, StringType) or \
137                   isinstance(item, UnicodeType):                   isinstance(item, UnicodeType):
138                  # it's a string                  # it's a string
139                  self.AppendItem(parent, item)                  treeitem = self.AppendItem(parent, item, -1, -1, None)
140                    self.SetItemImage(treeitem, self.emptyImageIndex)
141              else:              else:
142                  # assume its a sequence (title, items)                  # assume its a sequence (title, items)
143                  if isinstance(item[1], Color):                  if isinstance(item[1], Color):
# Line 144  class SessionTreeCtrl(wxTreeCtrl): Line 158  class SessionTreeCtrl(wxTreeCtrl):
158                      i = self.image_list.Add(bmp)                      i = self.image_list.Add(bmp)
159                      self.SetItemImage(treeitem, i)                      self.SetItemImage(treeitem, i)
160                  else:                  else:
161                      treeitem = self.AppendItem(parent, item[0])                      treeitem = self.AppendItem(parent, item[0], -1, -1, None)
162                        self.SetItemImage(treeitem, self.emptyImageIndex)
163                      self.add_items(treeitem, item[1])                      self.add_items(treeitem, item[1])
164                  self.Expand(treeitem)                  self.Expand(treeitem)
165    
# Line 212  class SessionTreeView(NonModalDialog): Line 227  class SessionTreeView(NonModalDialog):
227                                  _("Session"))                                  _("Session"))
228          self.tree = SessionTreeCtrl(self, -1, app)          self.tree = SessionTreeCtrl(self, -1, app)
229    
230      def Shutdown(self):      def OnClose(self, event):
231            NonModalDialog.OnClose(self, event)
232    
233          # if there were a way to get notified when the tree control          # if there were a way to get notified when the tree control
234          # itself is destroyed we could use that to unsubscribe instead          # itself is destroyed we could use that to unsubscribe instead
235          # of doing it here. (EVT_WINDOW_DESTROY doesn't seem to sent at          # of doing it here. (EVT_WINDOW_DESTROY doesn't seem to sent at
236          # all)          # all)
237          self.tree.unsubscribe_all()          self.tree.unsubscribe_all()
238    
         # this needs to come last because Destroy will be called  
         NonModalDialog.Shutdown(self)  
   

Legend:
Removed from v.488  
changed lines
  Added in v.521

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26