1999-07-31 03:56:15 -04:00
|
|
|
|
2000-10-30 16:08:42 -05:00
|
|
|
import string, sys
|
|
|
|
|
|
|
|
py2 = sys.version[0] == '2'
|
1999-07-31 03:56:15 -04:00
|
|
|
|
|
|
|
from wxPython.wx import *
|
|
|
|
try:
|
2000-10-30 16:08:42 -05:00
|
|
|
if py2:
|
|
|
|
from xml.parsers import expat
|
|
|
|
parsermodule = expat
|
|
|
|
else:
|
|
|
|
from xml.parsers import pyexpat
|
|
|
|
parsermodule = pyexpat
|
1999-07-31 03:56:15 -04:00
|
|
|
haveXML = true
|
|
|
|
except ImportError:
|
|
|
|
haveXML = false
|
|
|
|
|
|
|
|
#----------------------------------------------------------------------
|
|
|
|
|
|
|
|
if not haveXML:
|
|
|
|
def runTest(frame, nb, log):
|
2000-10-30 16:08:42 -05:00
|
|
|
dlg = wxMessageDialog(frame, 'This demo requires the XML package. '
|
|
|
|
'See http://www.python.org/sigs/xml-sig/',
|
1999-07-31 03:56:15 -04:00
|
|
|
'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")]
|
|
|
|
|
|
|
|
# Define a handler for start element events
|
|
|
|
def StartElement(self, name, attrs ):
|
2000-10-30 16:08:42 -05:00
|
|
|
if py2:
|
|
|
|
name = name.encode()
|
1999-10-22 22:33:44 -04:00
|
|
|
id = self.AppendItem(self.nodeStack[-1], name)
|
|
|
|
self.nodeStack.append(id)
|
1999-07-31 03:56:15 -04:00
|
|
|
|
|
|
|
def EndElement(self, name ):
|
|
|
|
self.nodeStack = self.nodeStack[:-1]
|
|
|
|
|
|
|
|
def CharacterData(self, data ):
|
|
|
|
if string.strip(data):
|
2000-10-30 16:08:42 -05:00
|
|
|
if py2:
|
|
|
|
data = data.encode()
|
1999-07-31 03:56:15 -04:00
|
|
|
self.AppendItem(self.nodeStack[-1], data)
|
|
|
|
|
|
|
|
|
|
|
|
def LoadTree(self, filename):
|
|
|
|
# Create a parser
|
2000-10-30 16:08:42 -05:00
|
|
|
Parser = parsermodule.ParserCreate()
|
1999-07-31 03:56:15 -04:00
|
|
|
|
|
|
|
# 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 = """\
|
|
|
|
"""
|
|
|
|
|