+ # Trees need an image list to do DnD...
+ self.il = wx.ImageList(16,16)
+ self.SetImageList(self.il)
+
+ # event handlers for DnD
+ self.Bind(wx.EVT_TREE_BEGIN_DRAG, self.OnBeginDrag)
+ self.Bind(wx.EVT_TREE_END_DRAG, self.OnEndDrag)
+
+
+ def OnBeginDrag(self, event):
+ item = event.GetItem()
+
+ if item != self.GetRootItem():
+ self.draggingItem = item
+ event.Allow() # if DnD of this item is okay Allow it.
+
+
+ def OnEndDrag(self, evt):
+ itemSrc = self.draggingItem
+ itemDst = evt.GetItem()
+ self.draggingItem = None
+
+ if not itemDst.IsOk():
+ print "Can't drag to here..."
+ return
+
+ # For this simple example just take the text of the source item
+ # and append it to the destination item. In real life you would
+ # possibly want to copy subtrees...
+ text = self.GetItemText(itemSrc)
+ self.AppendItem(itemDst, text)
+ self.Delete(itemSrc)
+
+