X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/1fded56b375bf7a4687af1cdb182899614c1b2a8..170b04bae6c1ca98bcb62db69f38d7ab0f46c808:/wxPython/demo/XMLtreeview.py diff --git a/wxPython/demo/XMLtreeview.py b/wxPython/demo/XMLtreeview.py index 081ac5f0f6..91a624e179 100644 --- a/wxPython/demo/XMLtreeview.py +++ b/wxPython/demo/XMLtreeview.py @@ -1,9 +1,9 @@ -import sys +import sys +import wx py2 = sys.version[0] == '2' -from wxPython.wx import * try: if py2: from xml.parsers import expat @@ -19,34 +19,48 @@ except ImportError: if not haveXML: def runTest(frame, nb, log): - dlg = wxMessageDialog(frame, 'This demo requires the XML package. ' - 'See http://www.python.org/sigs/xml-sig/', - 'Sorry', wxOK | wxICON_INFORMATION) + dlg = wx.MessageDialog( + frame, 'This demo requires the XML package. ' + 'See http://www.python.org/sigs/xml-sig/', + 'Sorry', wx.OK | wx.ICON_INFORMATION + ) + dlg.ShowModal() dlg.Destroy() else: - class XMLTree(wxTreeCtrl): + class XMLTree(wx.TreeCtrl): def __init__(self, parent, ID): - wxTreeCtrl.__init__(self, parent, ID) - self.nodeStack = [self.AddRoot("Root")] + wx.TreeCtrl.__init__(self, parent, ID) + self._root = self.AddRoot("Root") + self.nodeStack = [self._root] # Trees need an image list to do DnD... - self.il = wxImageList(16,16) + self.il = wx.ImageList(16,16) self.SetImageList(self.il) # event handlers for DnD - EVT_TREE_BEGIN_DRAG(self, ID, self.OnBeginDrag) - EVT_TREE_END_DRAG(self, ID, self.OnEndDrag) + 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 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 @@ -57,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... @@ -69,6 +87,7 @@ else: def StartElement(self, name, attrs ): if py2: name = name.encode() + id = self.AppendItem(self.nodeStack[-1], name) self.nodeStack.append(id) @@ -79,6 +98,7 @@ else: if data.strip(): if py2: data = data.encode() + self.AppendItem(self.nodeStack[-1], data) @@ -104,17 +124,11 @@ else: - - - 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:])