-import sys
+import sys
+import wx
py2 = sys.version[0] == '2'
-from wxPython.wx import *
try:
if py2:
from xml.parsers import expat
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
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...
def StartElement(self, name, attrs ):
if py2:
name = name.encode()
+
id = self.AppendItem(self.nodeStack[-1], name)
self.nodeStack.append(id)
if data.strip():
if py2:
data = data.encode()
+
self.AppendItem(self.nodeStack[-1], data)
-
-
-
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:])