--- /usr/local/lib/python2.3/site-packages/PI/tree.py	2004-10-05 19:29:10.000000000 +0100
+++ /home/jamesc/src/PI/PI/PI/tree.py	2004-10-15 15:34:17.000000000 +0100
@@ -74,7 +74,15 @@
         #self.graph = Dot(size="3.5,4",page="4.5,6",center="TRUE",rankdir="TB")
         self.subgraph = Subgraph("subG", rank="same")
 
-        self._traverse(self)
+        # james xml file open and write header
+        self.xmlfile = open(output + ".mm", 'w') 
+        self.xmlfile.write('<map version="0.7.1" james="MuahaahahahahaHAHAHA :)">\n')
+
+        self._traverse(self,0)
+
+        # james xml file write end and close
+        self.xmlfile.write('\n</map>\n') 
+        self.xmlfile.close()
 
         self.graph.add_subgraph(self.subgraph)
 
@@ -86,7 +94,9 @@
         #else:
         #    raise "UnknownFormat"
 
-    def _traverse(self, root):
+    def _traverse(self, root, level):
+
+        indent = "\n" + "   " * level # indent nodes by level in tree                  
 
         if root.getParent():
 
@@ -114,6 +124,13 @@
                 node2 = Node(v2, shape="plaintext", ratio="auto", label=l)
 
             if root.getIsLeaf():
+                s = "<node TEXT=\"%(node)d-%(percent)s\"/>" %  { 'node':v1, 'percent':l}
+            else:
+                s = "<node TEXT=\"%(percent)s\">" %  { 'percent':l}
+
+            self.xmlfile.write( indent + s ) 
+
+            if root.getIsLeaf():
                 self.subgraph.add_node(node1)
 
             self.graph.add_node(node1)
@@ -123,8 +140,14 @@
 
             self.graph.add_edge(edge)
 
+        level += 1
+        
         if root.getLeft():
-            self._traverse(root.getLeft())
+            self._traverse(root.getLeft(),level)
 
         if root.getRight():
-            self._traverse(root.getRight())
+            self._traverse(root.getRight(),level)
+
+        if root.getParent():
+            if not root.getIsLeaf():
+                self.xmlfile.write(indent + '</node>') 
