X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/c368d904fc27d35ae1e533155e2154dc496432e4..71aba8333cc915afff9e740c944f7fa7247abacb:/wxPython/demo/XMLtreeview.py?ds=sidebyside diff --git a/wxPython/demo/XMLtreeview.py b/wxPython/demo/XMLtreeview.py index c53e4010c9..081ac5f0f6 100644 --- a/wxPython/demo/XMLtreeview.py +++ b/wxPython/demo/XMLtreeview.py @@ -1,5 +1,5 @@ -import string, sys +import sys py2 = sys.version[0] == '2' @@ -11,9 +11,9 @@ try: else: from xml.parsers import pyexpat parsermodule = pyexpat - haveXML = true + haveXML = True except ImportError: - haveXML = false + haveXML = False #---------------------------------------------------------------------- @@ -32,6 +32,39 @@ else: wxTreeCtrl.__init__(self, parent, ID) self.nodeStack = [self.AddRoot("Root")] + # Trees need an image list to do DnD... + self.il = wxImageList(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) + + + 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) + + # Define a handler for start element events def StartElement(self, name, attrs ): if py2: @@ -43,7 +76,7 @@ else: self.nodeStack = self.nodeStack[:-1] def CharacterData(self, data ): - if string.strip(data): + if data.strip(): if py2: data = data.encode() self.AppendItem(self.nodeStack[-1], data) @@ -77,3 +110,11 @@ else: overview = """\ """ + + + + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])])