git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@10838 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
		
			
				
	
	
		
			113 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			113 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| 
 | |
| import string, sys
 | |
| 
 | |
| py2 = sys.version[0] == '2'
 | |
| 
 | |
| from wxPython.wx import *
 | |
| try:
 | |
|     if py2:
 | |
|         from xml.parsers import expat
 | |
|         parsermodule = expat
 | |
|     else:
 | |
|         from xml.parsers import pyexpat
 | |
|         parsermodule = pyexpat
 | |
|     haveXML = true
 | |
| except ImportError:
 | |
|     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.ShowModal()
 | |
|         dlg.Destroy()
 | |
| 
 | |
| else:
 | |
| 
 | |
|     class XMLTree(wxTreeCtrl):
 | |
|         def __init__(self, parent, ID):
 | |
|             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:
 | |
|                 name = name.encode()
 | |
|             id = self.AppendItem(self.nodeStack[-1], name)
 | |
|             self.nodeStack.append(id)
 | |
| 
 | |
|         def EndElement(self,  name ):
 | |
|             self.nodeStack = self.nodeStack[:-1]
 | |
| 
 | |
|         def CharacterData(self, data ):
 | |
|             if string.strip(data):
 | |
|                 if py2:
 | |
|                     data = data.encode()
 | |
|                 self.AppendItem(self.nodeStack[-1], data)
 | |
| 
 | |
| 
 | |
|         def LoadTree(self, filename):
 | |
|             # Create a parser
 | |
|             Parser = parsermodule.ParserCreate()
 | |
| 
 | |
|             # Tell the parser what the start element handler is
 | |
|             Parser.StartElementHandler = self.StartElement
 | |
|             Parser.EndElementHandler = self.EndElement
 | |
|             Parser.CharacterDataHandler = self.CharacterData
 | |
| 
 | |
|             # Parse the XML File
 | |
|             ParserStatus = Parser.Parse(open(filename,'r').read(), 1)
 | |
| 
 | |
| 
 | |
|     def runTest(frame, nb, log):
 | |
|         win = XMLTree(nb, -1)
 | |
|         win.LoadTree("paper.xml")
 | |
|         return win
 | |
| 
 | |
| #----------------------------------------------------------------------
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| 
 | |
| overview = """\
 | |
| """
 | |
| 
 |