6.4.6.2.5. Table of contents

6.4.6.2.5. Table of contents

Start python section to interscript/weavers/web.py[6]
   358: #line 461 "web_weaver.ipk"
   359:   def mk_contents(self,toc_filename,target):
   360:     self.toc_sink = named_file_sink(
   361:       self.pass_frame,
   362:       self.basedir+toc_filename,
   363:       self.master.weaver_prefix,
   364:       eol=self.eol)
   365:     self.mk_head(self.toc_sink)
   366:     w = self.toc_sink.writeline
   367:     w( '<BODY onload="loadHandler()">')
   368:     tocline= """
   369: <SCRIPT type="text/javascript">
   370: <!--
   371: function clickHandler() {
   372:   var targetId, srcElement, targetElement;
   373:   srcElement = window.event.srcElement;
   374:   if (srcElement.className == "Button") {
   375:     targetId = srcElement.id + "d";
   376:     targetElement = document.all(targetId);
   377:     if(targetElement.style.display == "none") {
   378:       targetElement.style.display = "";
   379:       srcElement.checked = true;
   380:     } else {
   381:       targetElement.style.display = "none";
   382:       srcElement.checked = false;
   383:     }
   384:   }
   385: }
   386: 
   387: // this function restores the status of the contents tree
   388: // IE4 preserves the buttons states, but not the visibility
   389: function loadHandler() {
   390:   for (var srcId in document.all) {
   391:     srcElement = document.all(srcId);
   392:     if (srcElement != null && srcElement.className == "Button") {
   393:       var targetId = srcId + "d";
   394:       var targetElement = document.all(targetId);
   395:       if(srcElement.checked == true) {
   396:         targetElement.style.display = "";
   397:       } else {
   398:         targetElement.style.display = "none";
   399:       }
   400:     }
   401:   }
   402: }
   403: document.onclick = clickHandler
   404: document.onload = loadHandler
   405: // -->
   406: </SCRIPT>
   407: """
   408:     if not target:
   409:       nav = '<DIV CLASS="NAVIGATION">'+self.home_anchor+' '+self.frames_anchor+'<BR><HR></DIV>'
   410:       self.toc_sink.writeline(nav)
   411:     w('<H1>Table of Contents</H1>')
   412:     w(tocline)
   413:     last_level = -1
   414:     if self.toc:
   415:       i = 0
   416:       level, hnum, href, text = self.toc[i]
   417:       next_level = 0
   418:       if len(self.toc) > i+1: next_level = self.toc[i+1][0]
   419:       self.emit_contents_line(level, hnum, href, text, level<next_level, target)
   420:       divid = 'h'+hnum+'d'
   421:       w('<DIV ID='+divid+' style="display:">')
   422:       last_level = level
   423:     for i in range(1, len(self.toc)):
   424:       level, hnum, href, text = self.toc[i]
   425:       next_level = 0
   426:       if len(self.toc) > i+1: next_level = self.toc[i+1][0]
   427:       while level <= last_level:
   428:         self.toc_sink.writeline('</DIV>')
   429:         last_level = last_level - 1
   430:       self.emit_contents_line(level, hnum, href, text, level<next_level, target)
   431:       divid = 'h'+hnum+'d'
   432:       w('<DIV ID='+divid+' style="display:">')
   433:       last_level = level
   434:     while 1 <= last_level:
   435:       w('</DIV>')
   436:       last_level = last_level - 1
   437:     w( '</BODY>')
   438:     w( '</HTML>')
   439:     del self.toc_sink
   440:     print 'stacked contents done'
   441: 
   442:   def emit_contents_line(self, level, hnum, href, text, enabled, target):
   443:     self.toc_sink.writeline(' '*(3*level))
   444:     headid ='h'+hnum
   445:     flag = 'disabled'
   446:     if enabled: flag = ''
   447:     self.toc_sink.writeline('<INPUT ID='+headid+' CLASS="Button" TYPE="Radio" '+flag+'>')
   448:     if target:
   449:       self.toc_sink.writeline('<A HREF="'+href+'" TARGET="'+target+'">'+text+'</A>')
   450:     else:
   451:       self.toc_sink.writeline('<A HREF="'+href+'">'+text+'</A>')
   452: 
End python section to interscript/weavers/web.py[6]