]> git.saurik.com Git - wxWidgets.git/blobdiff - utils/wxPython/tests/txml.py
wxPython 2.1b1:
[wxWidgets.git] / utils / wxPython / tests / txml.py
diff --git a/utils/wxPython/tests/txml.py b/utils/wxPython/tests/txml.py
new file mode 100644 (file)
index 0000000..9c87e27
--- /dev/null
@@ -0,0 +1,87 @@
+"""
+Build a GUI Tree (wxWindows) from an XML file
+using pyExpat
+"""
+
+import sys,string
+from xml.parsers import pyexpat
+
+from wxPython.wx import *
+
+class MyFrame(wxFrame):
+        def __init__(self, parent, id, title):
+                wxFrame.__init__(self, parent, id, title, wxPoint(100, 100), wxSize(160,100))
+                menu = wxMenu()
+                menu.Append (1001,"Open")
+                menu.Append (1002,"Close")
+                menu.Append (1003,"Exit")
+                menubar = wxMenuBar()
+                menubar.Append (menu,"File")
+                self.SetMenuBar(menubar)
+
+class MyApp(wxApp):
+        def OnInit(self):
+                self.frame = MyFrame(NULL, -1, "Tree View of XML")
+                self.tree = wx.wxTreeCtrl(self.frame, -1)
+                EVT_MENU(self, 1001, self.OnOpen)
+                EVT_MENU(self, 1002, self.OnClose)
+                EVT_MENU(self, 1003, self.OnExit)
+                self.frame.Show(true)
+                self.SetTopWindow(self.frame)
+                return true
+
+        def OnOpen(self,event):
+                f = wxFileDialog(self.frame,"Select a file",".","","*.xml",wxOPEN)
+                if f.ShowModal() == wxID_OK:
+                        LoadTree(f.GetPath())
+
+        def OnClose(self,event):
+                self.tree = wx.wxTreeCtrl(self.frame, -1)
+                pass
+
+        def OnExit(self,event):
+                self.OnCloseWindow(event)
+
+        def OnCloseWindow(self, event):
+                self.frame.Destroy()
+
+
+NodeStack = []
+
+# Define a handler for start element events
+def StartElement( name, attrs ):
+        global NodeStack
+        NodeStack.append(app.tree.AppendItem(NodeStack[-1],name))
+
+def EndElement( name ):
+        global NodeStack
+        NodeStack = NodeStack[:-1]
+
+def CharacterData ( data ):
+        global NodeStack
+        if string.strip(data):
+                app.tree.AppendItem(NodeStack[-1],data)
+
+
+def LoadTree (f):
+        print f
+        # Create a parser
+        Parser = pyexpat.ParserCreate()
+
+        # Tell the parser what the start element handler is
+        Parser.StartElementHandler = StartElement
+        Parser.EndElementHandler = EndElement
+        Parser.CharacterDataHandler = CharacterData
+
+        # Parse the XML File
+        ParserStatus = Parser.Parse(open(f,'r').read(), 1)
+        if ParserStatus == 0:
+                print "oops!"
+                raise SystemExit
+
+app = MyApp(0)
+NodeStack = [app.tree.AddRoot("Root")]
+
+
+app.MainLoop()
+raise SystemExit