X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f6bcfd974ef26faf6f91a62cac09827e09463fd1..52f52ebc4e0be6a9899d328b08db9eb14629d219:/wxPython/demo/XMLtreeview.py diff --git a/wxPython/demo/XMLtreeview.py b/wxPython/demo/XMLtreeview.py index 853bd40b8e..0af13a34c4 100644 --- a/wxPython/demo/XMLtreeview.py +++ b/wxPython/demo/XMLtreeview.py @@ -1,31 +1,79 @@ -import string +import sys +import wx + +py2 = sys.version[0] == '2' -from wxPython.wx import * try: - from xml.parsers import pyexpat - haveXML = true + if py2: + from xml.parsers import expat + parsermodule = expat + else: + from xml.parsers import pyexpat + parsermodule = pyexpat + haveXML = True except ImportError: - haveXML = false + haveXML = False #---------------------------------------------------------------------- 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) + wx.TreeCtrl.__init__(self, parent, ID) self.nodeStack = [self.AddRoot("Root")] + # 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) + + # Define a handler for start element events def StartElement(self, name, attrs ): + if py2: + name = name.encode() + id = self.AppendItem(self.nodeStack[-1], name) self.nodeStack.append(id) @@ -33,13 +81,16 @@ 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) def LoadTree(self, filename): # Create a parser - Parser = pyexpat.ParserCreate() + Parser = parsermodule.ParserCreate() # Tell the parser what the start element handler is Parser.StartElementHandler = self.StartElement @@ -59,9 +110,11 @@ else: - - - overview = """\ """ + +if __name__ == '__main__': + import sys,os + import run + run.main(['', os.path.basename(sys.argv[0])])