X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/95bfd958bda8955ac81277c78e5627c926154f39..1dd82eff99693729c49a1c578f3b47356c5c6f0c:/wxPython/demo/XMLtreeview.py diff --git a/wxPython/demo/XMLtreeview.py b/wxPython/demo/XMLtreeview.py index 0af13a34c4..91a624e179 100644 --- a/wxPython/demo/XMLtreeview.py +++ b/wxPython/demo/XMLtreeview.py @@ -33,7 +33,8 @@ else: class XMLTree(wx.TreeCtrl): def __init__(self, parent, ID): wx.TreeCtrl.__init__(self, parent, ID) - self.nodeStack = [self.AddRoot("Root")] + self._root = self.AddRoot("Root") + self.nodeStack = [self._root] # Trees need an image list to do DnD... self.il = wx.ImageList(16,16) @@ -51,6 +52,15 @@ else: self.draggingItem = item event.Allow() # if DnD of this item is okay Allow it. + def IsDescendant(self, firstItem, secondItem): + "Recursive check if firstItem is a descendant of a secondItem." + if firstItem == self._root: + return False + parentItem = self.GetItemParent(firstItem) + if parentItem == secondItem: + return True + else: + return self.IsDescendant(parentItem, secondItem) def OnEndDrag(self, evt): itemSrc = self.draggingItem @@ -61,6 +71,10 @@ else: print "Can't drag to here..." return + if self.IsDescendant(itemDst, itemSrc): + print "Can't move item to its descendant" + 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... @@ -117,4 +131,4 @@ overview = """\ if __name__ == '__main__': import sys,os import run - run.main(['', os.path.basename(sys.argv[0])]) + run.main(['', os.path.basename(sys.argv[0])] + sys.argv[1:])