/[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 520 by jonathan, Wed Mar 12 10:35:49 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            self.AssignImageList(self.image_list)
90            bmp = wxEmptyBitmap(0, 0)
91            self.image_list.AddWithColourMask(bmp, wxColour(0, 0, 0))
92    
93          session = self.app.session          session = self.app.session
94          info = session.TreeInfo()          info = session.TreeInfo()
95          root = self.AddRoot(info[0])          root = self.AddRoot(info[0], 0, -1, None)
96          self.add_items(root, info[1])          self.add_items(root, info[1])
97          self.Expand(root)          self.Expand(root)
98          # select the selected layer          # select the selected layer
# Line 114  class SessionTreeCtrl(wxTreeCtrl): Line 116  class SessionTreeCtrl(wxTreeCtrl):
116              if hasattr(item, "TreeInfo"):              if hasattr(item, "TreeInfo"):
117                  # Supports the TreeInfo protocol                  # Supports the TreeInfo protocol
118                  info = item.TreeInfo()                  info = item.TreeInfo()
119                  treeitem = self.AppendItem(parent, info[0])                  #treeitem = self.AppendItem(parent, info[0])
120                    treeitem = self.AppendItem(parent, info[0], 0, -1, None)
121                  self.SetPyData(treeitem, item)                  self.SetPyData(treeitem, item)
122                  self.add_items(treeitem, info[1])                  self.add_items(treeitem, info[1])
123                  self.Expand(treeitem)                  self.Expand(treeitem)
# Line 123  class SessionTreeCtrl(wxTreeCtrl): Line 126  class SessionTreeCtrl(wxTreeCtrl):
126              elif isinstance(item, StringType) or \              elif isinstance(item, StringType) or \
127                   isinstance(item, UnicodeType):                   isinstance(item, UnicodeType):
128                  # it's a string                  # it's a string
129                  self.AppendItem(parent, item)                  treeitem = self.AppendItem(parent, item, 0, -1, None)
130                    #self.SetItemImage(treeitem, -1)
131              else:              else:
132                  # assume its a sequence (title, items)                  # assume its a sequence (title, items)
133                  if isinstance(item[1], Color):                  if isinstance(item[1], Color):
# Line 144  class SessionTreeCtrl(wxTreeCtrl): Line 148  class SessionTreeCtrl(wxTreeCtrl):
148                      i = self.image_list.Add(bmp)                      i = self.image_list.Add(bmp)
149                      self.SetItemImage(treeitem, i)                      self.SetItemImage(treeitem, i)
150                  else:                  else:
151                      treeitem = self.AppendItem(parent, item[0])                      #treeitem = self.AppendItem(parent, item[0])
152                        treeitem = self.AppendItem(parent, item[0], 0, -1, None)
153                      self.add_items(treeitem, item[1])                      self.add_items(treeitem, item[1])
154                  self.Expand(treeitem)                  self.Expand(treeitem)
155    
# Line 212  class SessionTreeView(NonModalDialog): Line 217  class SessionTreeView(NonModalDialog):
217                                  _("Session"))                                  _("Session"))
218          self.tree = SessionTreeCtrl(self, -1, app)          self.tree = SessionTreeCtrl(self, -1, app)
219    
220      def Shutdown(self):      def OnClose(self, event):
221            NonModalDialog.OnClose(self, event)
222    
223          # if there were a way to get notified when the tree control          # if there were a way to get notified when the tree control
224          # itself is destroyed we could use that to unsubscribe instead          # itself is destroyed we could use that to unsubscribe instead
225          # 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
226          # all)          # all)
227          self.tree.unsubscribe_all()          self.tree.unsubscribe_all()
228    
         # this needs to come last because Destroy will be called  
         NonModalDialog.Shutdown(self)  
   

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

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26