Changed to display multiple outline levels
authorandy_robinson
Fri, 28 Apr 2000 17:04:28 +0000
changeset 180 f92b4f73b1b5
parent 179 6098115c11aa
child 181 62d7a443cbc4
Changed to display multiple outline levels
reportlab/demos/pythonpoint/pythonpoint.py
reportlab/demos/pythonpoint/pythonpoint.xml
reportlab/demos/pythonpoint/stdparser.py
--- a/reportlab/demos/pythonpoint/pythonpoint.py	Fri Apr 28 14:18:16 2000 +0000
+++ b/reportlab/demos/pythonpoint/pythonpoint.py	Fri Apr 28 17:04:28 2000 +0000
@@ -31,9 +31,12 @@
 #
 ###############################################################################
 #	$Log: pythonpoint.py,v $
+#	Revision 1.15  2000/04/28 17:04:28  andy_robinson
+#	Changed to display multiple outline levels
+#
 #	Revision 1.14  2000/04/25 14:37:18  rgbecker
 #	Commented out call of _inPage0
-#
+#	
 #	Revision 1.13  2000/04/14 12:17:05  rgbecker
 #	Splitting layout.py
 #	
@@ -78,7 +81,7 @@
 #	Revision 1.1.1.1  2000/02/15 15:08:55  rgbecker
 #	Initial setup of demos directory and contents.
 #	
-__version__=''' $Id: pythonpoint.py,v 1.14 2000/04/25 14:37:18 rgbecker Exp $ '''
+__version__=''' $Id: pythonpoint.py,v 1.15 2000/04/28 17:04:28 andy_robinson Exp $ '''
 # xml parser stuff for PythonPoint
 # PythonPoint Markup Language!
 __doc__="""
@@ -142,7 +145,7 @@
         self.description = None
         self.slides = []
         self.effectName = None
-        self.showOutline = 0   #should it be displayed when opening?
+        self.showOutline = 1   #should it be displayed when opening?
         
         #assume landscape        
         self.pageWidth = layout.DEFAULT_PAGE_SIZE[1]  
@@ -154,16 +157,12 @@
                                 pagesize = (self.pageWidth, self.pageHeight)
                                )
         canv.setPageCompression(0)
-        canv.outlineNames = []   #HACK - not a normal attribute of a canvas, we are stashing
-                        #stuff here
             
         for slide in self.slides:
             slide.drawOn(canv)
             canv.showPage()
 
-        #draw the outline
-        if canv.outlineNames <> []:
-            apply(canv.setOutlineNames0, canv.outlineNames)
+        #ensure outline visible by default
         if self.showOutline:
             canv.showOutline0()
         canv.save()        
@@ -186,6 +185,7 @@
         self.id = None
         self.title = None
         self.outlineEntry = None
+        self.outlineLevel = 0   # can be higher for sub-headings
         self.effectName = None
         self.effectDirection = 0
         self.effectDimension = 'H'
@@ -202,12 +202,14 @@
                         dimension = self.effectDimension,
                         motion = self.effectMotion
                         )
-        if self.title:
+        if self.outlineEntry:
+            #gets an outline automatically
+            self.showOutline = 1
             #put an outline entry in the left pane
             tag = self.title
             #canv._inPage0()
             canv.bookmarkPage0(tag)
-            canv.outlineNames.append(tag)
+            canv.addOutlineEntry0(tag, tag, self.outlineLevel)
             
             
         
--- a/reportlab/demos/pythonpoint/pythonpoint.xml	Fri Apr 28 14:18:16 2000 +0000
+++ b/reportlab/demos/pythonpoint/pythonpoint.xml	Fri Apr 28 17:04:28 2000 +0000
@@ -7,7 +7,7 @@
 
 
 	<!--Now for the slides-->
-    <slide id="Slide001" title="Introduction" effectname='Wipe'>
+     <slide id="Slide001" title="Introduction" effectname='Wipe'>
         <frame x="120" y="72" width="700" height="468" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading1'>Welcome to PythonPoint</para>
@@ -35,7 +35,7 @@
     </slide>
 
 
-    <slide id="Slide002" title="XML Notation" effectname='Blinds' effectdirection='0'>
+    <slide id="Slide002" title="XML Notation" effectname='Blinds' effectdirection='0' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="468" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading1'>XML Notation</para>
@@ -61,7 +61,7 @@
         </frame>
     </slide>
 
-    <slide id="Slide003" title="Page Layout" effectname='Box'>
+    <slide id="Slide003" title="Page Layout" effectname='Box' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="468" 
 			leftmargin="36" rightmargin="36" border='true'>
             <para style='Heading1'>Page Layout Model</para>
@@ -78,7 +78,7 @@
         </frame>
     </slide>
 
-    <slide id="Slide004" title="Reuse" effectname='Wipe'>
+    <slide id="Slide004" title="Reuse" effectname='Wipe' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="468" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading1'>Reuse and Consistency - Sections</para>
@@ -103,7 +103,7 @@
 		</frame>
 	</slide>
 
-    <slide id="Slide005" title="Styles" effectname='Dissolve'>
+    <slide id="Slide005" title="Styles" effectname='Dissolve' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="468" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading1'>Style Sheets</para>
@@ -123,7 +123,7 @@
         </frame>
     </slide>
 	
-    <slide id="Slide006" title="Special Effects" effectname='Dissolve'>
+    <slide id="Slide006" title="Special Effects" effectname='Dissolve' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="468" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading1'>Special Effects</para>
@@ -148,7 +148,7 @@
         </frame>
     </slide>
 
-	<slide id="Slide007" title="Outlines and Hyperlinks" effectname='Wipe'>
+	<slide id="Slide007" title="Outlines and Hyperlinks" effectname='Wipe'  outlinelevel='1'>
         <frame x="120" y="72" width="700" height="468" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading1'>Outlines and Hyperlinks</para>
@@ -166,7 +166,7 @@
         </frame>
     </slide>
 	
-	<slide id="Slide008" title="Basic Shapes" effectname='Wipe'>
+	<slide id="Slide008" title="Basic Shapes" effectname='Wipe' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="468" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading1'>Basic Shapes</para>
@@ -185,7 +185,7 @@
         <customshape module="customshapes" class="Jigsaw" initargs="(700,200,1)"/>
     </slide>
 
-	<slide id="Slide009" title="Future Features" effectname='Glitter'>
+	<slide id="Slide009" title="Future Features" effectname='Glitter' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="468" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading1'>Features Coming Soon</para>
@@ -202,7 +202,7 @@
         </frame>
     </slide>
 
-    <slide id="Part2" title="Part 2" effectname='Blinds' effectdirection='0'>
+    <slide id="Part2" title="Part 2" effectname='Blinds' effectdirection='0' outlinelevel='0'>
         <frame x="120" y="72" width="700" height="468" 
 			leftmargin="36" rightmargin="36">
 			<para/>
@@ -215,7 +215,7 @@
     </slide>
 
     <slide id="Slide201" title="Tag: Presentation"
-		 effectname='Blinds' effectdirection='0'>
+		 effectname='Blinds' effectdirection='0' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading2'>Tag "presentation"</para>
@@ -234,7 +234,7 @@
     </slide>
 
     <slide id="Slide202" title="Tag: Stylesheet"
-		 effectname='Blinds' effectdirection='0'>
+		 effectname='Blinds' effectdirection='0' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading2'>Tag "stylesheet"</para>
@@ -261,7 +261,7 @@
 
 
     <slide id="Slide203" title="Tag: Section"
-		 effectname='Blinds' effectdirection='0'>
+		 effectname='Blinds' effectdirection='0' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading2'>Tag "section"</para>
@@ -283,7 +283,7 @@
     </slide>
 
     <slide id="Slide204" title="Tag: Slide"
-		 effectname='Blinds' effectdirection='0'>
+		 effectname='Blinds' effectdirection='0' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading2'>Tag "slide"</para>
@@ -307,7 +307,7 @@
     </slide>
 
     <slide id="Slide205" title="Tag: Frame"
-		 effectname='Blinds' effectdirection='0'>
+		 effectname='Blinds' effectdirection='0' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading2'>Tag "frame"</para>
@@ -332,7 +332,7 @@
     </slide>
 
     <slide id="Slide206" title="Flowable Objects"
-		 effectname='Blinds' effectdirection='0'>
+		 effectname='Blinds' effectdirection='0' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading2'>Tag family - "Flowable Objects"</para>
@@ -351,7 +351,7 @@
     </slide>
 
     <slide id="Slide207" title="Tag: para"
-		 effectname='Blinds' effectdirection='0'>
+		 effectname='Blinds' effectdirection='0' outlinelevel='2'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading2'>Tag "para" - Paragraphs</para>
@@ -379,7 +379,7 @@
     </slide>
 
     <slide id="Slide207" title="Tag: preformat"
-		 effectname='Blinds' effectdirection='0'>
+		 effectname='Blinds' effectdirection='0' outlinelevel='2'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading2'>Tag "preformat"</para>
@@ -398,7 +398,7 @@
     </slide>
 
     <slide id="Slide208" title="Tag: image"
-		 effectname='Blinds' effectdirection='0'>
+		 effectname='Blinds' effectdirection='0' outlinelevel='2'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading2'>Tag "image" - flowing images</para>
@@ -420,7 +420,7 @@
     </slide>
 
     <slide id="Slide209" title="Drawable Objects"
-		 effectname='Blinds' effectdirection='0'>
+		 effectname='Blinds' effectdirection='0' outlinelevel='1'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading2'>Tag family - "Drawable Objects"</para>
@@ -441,7 +441,7 @@
     </slide>
 
     <slide id="Slide210" title="Tag: FixedImage"
-		 effectname='Blinds' effectdirection='0'>
+		 effectname='Blinds' effectdirection='0' outlinelevel='2'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
             <para style='Heading2'>Tag "fixedimage"</para>
@@ -460,7 +460,7 @@
         </frame>
     </slide>
 
-    <slide id="Slide211" title="Tag: Rectangle" >
+    <slide id="Slide211" title="Tag: Rectangle" outlinelevel='2'>
 		 effectname='Blinds' effectdirection='0'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
@@ -477,7 +477,7 @@
         </frame>
     </slide>
 
-    <slide id="Slide212" title="Tag: RoundRect" >
+    <slide id="Slide212" title="Tag: RoundRect" outlinelevel='2'>
 		 effectname='Blinds' effectdirection='0'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
@@ -488,7 +488,7 @@
         </frame>
     </slide>
 
-    <slide id="Slide213" title="Tag: Ellipse" >
+    <slide id="Slide213" title="Tag: Ellipse" outlinelevel='2'>
 		 effectname='Blinds' effectdirection='0'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
@@ -509,7 +509,7 @@
         </frame>
     </slide>
 
-    <slide id="Slide214" title="Tag: Polygon" >
+    <slide id="Slide214" title="Tag: Polygon" outlinelevel='2'>
 		 effectname='Blinds' effectdirection='0'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
@@ -529,7 +529,7 @@
         </frame>
     </slide>
 
-    <slide id="Slide215" title="Tag: Line" >
+    <slide id="Slide215" title="Tag: Line" outlinelevel='2'>
 		 effectname='Blinds' effectdirection='0'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
@@ -548,7 +548,7 @@
         </frame>
     </slide>
 
-    <slide id="Slide215" title="Tag: String" >
+    <slide id="Slide215" title="Tag: String" outlinelevel='2'>
 		 effectname='Blinds' effectdirection='0'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
@@ -574,7 +574,7 @@
         </frame>
     </slide>
 
-    <slide id="Slide216" title="Tag: CustomShape" >
+    <slide id="Slide216" title="Tag: CustomShape" outlinelevel='2'>
 		 effectname='Blinds' effectdirection='0'>
         <frame x="120" y="72" width="700" height="510" 
 			leftmargin="36" rightmargin="36">
--- a/reportlab/demos/pythonpoint/stdparser.py	Fri Apr 28 14:18:16 2000 +0000
+++ b/reportlab/demos/pythonpoint/stdparser.py	Fri Apr 28 17:04:28 2000 +0000
@@ -31,9 +31,12 @@
 #
 ###############################################################################
 #	$Log: stdparser.py,v $
+#	Revision 1.4  2000/04/28 17:04:28  andy_robinson
+#	Changed to display multiple outline levels
+#
 #	Revision 1.3  2000/04/14 12:17:05  rgbecker
 #	Splitting layout.py
-#
+#	
 #	Revision 1.2  2000/04/06 12:15:38  andy_robinson
 #	Updated example XML to include full tag reference
 #	
@@ -92,7 +95,8 @@
             'effectdimension':'H',   # H or V - horizontal or vertical
             'effectmotion':'I',     # Inwards or Outwards
             'effectduration':'1',    #seconds,
-            'outlineEntry':'None'
+            'outlineentry':'None',
+            'outlinelevel':'0'       # 1 is a child, 2 is a grandchild etc.
             },
         'para': {
             'style':'Normal',
@@ -250,8 +254,11 @@
 
 
         #HACK - may not belong here in the long run...
-        if args['outlineEntry'] <> 'None':
-            s.outlineEntry = args['outlineEntry']
+        if args['outlineentry'] <> 'None':
+            s.outlineEntry = args['outlineentry']
+        else:
+            s.outlineEntry = args['title']
+        s.outlineLevel = string.atoi(args['outlinelevel'])
         
 
         #let it know its section, which may be none