[Synopsis-changes] Synopsis/Synopsis/Synopsis/Formatters/HTML/Pages DirBrowse.py,1.11,1.12 FileSource.py,1.7,1.8 FileTreeJS.py,1.10,1.11 FramesIndex.py,1.10,1.11 InheritanceGraph.py,1.27,1.28 InheritanceTree.py,1.13,1.14 JSTree.py,1.6,1.7 ModuleIndexer.py,1.16,1.17 ModuleListing.py,1.14,1.15 ModuleListingJS.py,1.12,1.13 NameIndex.py,1.13,1.14 RawFilePages.py,1.9,1.10 ScopePages.py,1.23,1.24 XRefPages.py,1.13,1.14

Stefan Seefeld stefan at synopsis.fresco.org
Sat Nov 15 19:01:55 UTC 2003


Update of /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages
In directory frida:/tmp/cvs-serv3771/Synopsis/Formatters/HTML/Pages

Modified Files:
	DirBrowse.py FileSource.py FileTreeJS.py FramesIndex.py 
	InheritanceGraph.py InheritanceTree.py JSTree.py 
	ModuleIndexer.py ModuleListing.py ModuleListingJS.py 
	NameIndex.py RawFilePages.py ScopePages.py XRefPages.py 
Log Message:
more work to get rid of core.py

Index: DirBrowse.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/DirBrowse.py,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -p -d -r1.11 -r1.12
--- DirBrowse.py	14 Nov 2003 17:39:04 -0000	1.11
+++ DirBrowse.py	15 Nov 2003 19:01:53 -0000	1.12
@@ -48,7 +48,6 @@ class DirBrowse(Page):
       self.__filename = self.processor.file_layout.nameOfSpecial('dir')
       self.__title = 'Directory Listing'
       self.__start = self.__base = processor.output
-      #if not self.__base: return
       processor.set_main_page(self.__filename)
       self.processor.addRootPage(self.__filename, 'Files', 'main', 2)
 

Index: FileSource.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/FileSource.py,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -p -d -r1.7 -r1.8
--- FileSource.py	14 Nov 2003 17:39:04 -0000	1.7
+++ FileSource.py	15 Nov 2003 19:01:53 -0000	1.8
@@ -110,7 +110,7 @@ class FileSource(Page):
          f_link = self.linkpath%source
          #print "file: %s    link: %s    out: %s"%(f_in, f_link, f_out)
          try:
-            link.link(toclist, f_in, f_out, f_link, self.scope) #, config.types)
+            link.link(toclist, f_in, f_out, f_link, self.scope)
          except link.error, msg:
             print "An error occurred:",msg
          try:

Index: FileTreeJS.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/FileTreeJS.py,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -p -d -r1.10 -r1.11
--- FileTreeJS.py	14 Nov 2003 14:51:09 -0000	1.10
+++ FileTreeJS.py	15 Nov 2003 19:01:53 -0000	1.11
@@ -7,23 +7,23 @@
 # see the file COPYING for details.
 #
 
+from Synopsis import config
 from Synopsis.Processor import Parameter
 from Synopsis import AST, Util
 from JSTree import JSTree
-from Synopsis.Formatters.HTML.core import config
 from Synopsis.Formatters.HTML.Tags import *
 
 import os
 
 class FileTree(JSTree):
 
+   link_to_pages = Parameter(False, 'some docs...')
+
    def register(self, processor):
 
       JSTree.register(self, processor)
       filename = self.processor.file_layout.nameOfSpecial('FileTree')
       self.processor.addRootPage(filename, 'File Tree', 'contents', 2)
-      myconfig = config.obj.FileTree
-      self._link_pages = myconfig.link_to_pages
    
    def filename(self):
       """since FileTree generates a whole file hierarchy, this method returns the current filename,
@@ -50,10 +50,10 @@ class FileTree(JSTree):
       self.start_file(filename, 'File Tree')
       self.write(self.processor.formatHeader(filename, 2))
       # recursively visit all nodes
-      self.processFileTreeNode(config.fileTree.root())
+      self.processFileTreeNode(self.processor.fileTree.root())
       self.end_file()
       # recursively create all node pages
-      self.processFileTreeNodePage(config.fileTree.root())
+      self.processFileTreeNodePage(self.processor.fileTree.root())
 
    def _node_sorter(self, a, b):
       a_leaf = hasattr(a, 'decls')
@@ -99,7 +99,7 @@ class FileTree(JSTree):
 
       self.start_file()
       self.write(entity('b', string.join(name, os.sep))+'<br>')
-      if self._link_pages:
+      if self.link_to_pages:
          link = self.processor.file_layout.nameOfScopedSpecial('page', name)
          self.write(href(link, '[Source]', target="main")+'<br>')
       for name, decl in node.decls.items():

Index: FramesIndex.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/FramesIndex.py,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -p -d -r1.10 -r1.11
--- FramesIndex.py	14 Nov 2003 14:51:09 -0000	1.10
+++ FramesIndex.py	15 Nov 2003 19:01:53 -0000	1.11
@@ -8,7 +8,6 @@
 #
 
 from Synopsis.Formatters.HTML.Page import Page
-from Synopsis.Formatters.HTML.core import config
 from Synopsis.Formatters.HTML.Tags import *
 
 import os
@@ -19,7 +18,7 @@ class FramesIndex(Page):
    def register(self, processor):
 
       Page.register(self, processor)
-      config.set_main_page(self.filename())
+      processor.set_main_page(self.filename())
 
    def filename(self): return self.processor.file_layout.nameOfIndex()
 
@@ -31,8 +30,8 @@ class FramesIndex(Page):
       me = self.filename()
       # TODO use project name..
       self.start_file(body='')
-      fcontents = rel(me, config.page_contents)
-      findex = rel(me, config.page_index)
+      fcontents = rel(me, self.processor.contents_page)
+      findex = rel(me, self.processor.index_page)
       # Find something to link to
       fglobal = findex
       decls = [start]

Index: InheritanceGraph.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/InheritanceGraph.py,v
retrieving revision 1.27
retrieving revision 1.28
diff -u -p -d -r1.27 -r1.28
--- InheritanceGraph.py	14 Nov 2003 14:51:09 -0000	1.27
+++ InheritanceGraph.py	15 Nov 2003 19:01:53 -0000	1.28
@@ -10,18 +10,22 @@
 from Synopsis.Processor import Parameter
 from Synopsis import AST, Type, Util
 from Synopsis.Formatters.HTML.Page import Page
-from Synopsis.Formatters.HTML.core import config
 from Synopsis.Formatters.HTML.Tags import *
 
 import os
 
-class ToDecl(Type.Visitor):
+class DeclarationFinder(Type.Visitor):
+   def __init__(self, types, verbose):
+
+      self.types = types
+      self.verbose = verbose
+
    def __call__(self, name):
       try:
-         typeobj = config.types[name]
+         typeobj = self.types[name]
       except KeyError:
          # Eg: Unknown parent which has been NameMapped
-         #if config.verbose: print "Warning: %s not found in types dict."%(name,)
+         if self.verbose: print "Warning: %s not found in type dict."%(name,)
          return None
       self.__decl = None
       typeobj.accept(self)
@@ -58,7 +62,7 @@ class InheritanceGraph(Page):
    def register(self, processor):
 
       Page.register(self, processor)
-      self.__todecl = ToDecl()
+      self.decl_finder = DeclarationFinder(processor.ast.types(), processor.verbose)
       self.processor.addRootPage(self.filename(), 'Inheritance Graph', 'main', 1)
 
    def filename(self): return self.processor.file_layout.nameOfSpecial('InheritanceGraph')
@@ -116,7 +120,7 @@ class InheritanceGraph(Page):
       # Create a toc file for Dot to use
       toc_file = filename + "-dot.toc"
       self.processor.toc.store(toc_file)
-      graphs = config.classTree.graphs()
+      graphs = self.processor.classTree.graphs()
       count = 0
       # Consolidate the graphs, and sort to make the largest appear first
       lensorter = lambda a, b: cmp(len(b),len(a))
@@ -130,21 +134,22 @@ class InheritanceGraph(Page):
             self.write('<div class="inheritance-group">')
             scoped_name = string.split(name,'::')
             type_str = ''
-            if core.config.types.has_key(scoped_name):
-               type = core.config.types[scoped_name]
-               if isinstance(type, Type.Declared):
-                  type_str = type.declaration().type() + ' '
+            types = self.processor.ast.types()
+            type = types.get(scoped_name, None)
+            if isinstance(type, Type.Declared):
+               type_str = type.declaration().type() + ' '
             self.write('Graphs in '+type_str+name+':<br>')
          for graph in graphs:
             try:
                if core.verbose: print "Creating graph #%s - %s classes"%(count,len(graph))
                # Find declarations
-               declarations = map(self.__todecl, graph)
+               declarations = map(self.decl_finder, graph)
                declarations = filter(lambda x: x is not None, declarations)
                # Call Dot formatter
-               output = os.path.join(config.basename, os.path.splitext(self.filename())[0]) + '-%s'%count
+               output = os.path.join(self.processor.output,
+                                     os.path.splitext(self.filename())[0]) + '-%s'%count
                dot = Dot.Formatter()
-               ast = AST.AST({}, declarations, config.types)
+               ast = AST.AST({}, declarations, self.processor.ast.types())
                dot.process(ast,
                            output=output,
                            format='html',

Index: InheritanceTree.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/InheritanceTree.py,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -p -d -r1.13 -r1.14
--- InheritanceTree.py	14 Nov 2003 14:51:09 -0000	1.13
+++ InheritanceTree.py	15 Nov 2003 19:01:53 -0000	1.14
@@ -10,7 +10,6 @@
 from Synopsis.Processor import Parameter
 from Synopsis import Util
 from Synopsis.Formatters.HTML.Page import Page
-from Synopsis.Formatters.HTML.core import config
 from Synopsis.Formatters.HTML.Tags import *
 
 import os
@@ -29,7 +28,7 @@ class InheritanceTree(Page):
    def process(self, start):
       """Creates a file with the inheritance tree"""
 
-      roots = config.classTree.roots()
+      roots = self.processor.classTree.roots()
       self.start_file()
       self.write(self.processor.formatHeader(self.filename()))
       self.write(entity('h1', "Inheritance Tree"))
@@ -42,10 +41,10 @@ class InheritanceTree(Page):
       name, rel_name = args
       self.write('<li>')
       self.write(self.reference(name, rel_name))
-      parents = config.classTree.superclasses(name)
+      parents = self.processor.classTree.superclasses(name)
       if parents:
          self.write(' <i>(%s)</i>'%string.join(map(Util.ccolonName, parents), ", "))
-      subs = config.classTree.subclasses(name)
+      subs = self.processor.classTree.subclasses(name)
       if subs:
          self.write('<ul>')
          map(self.process_class_inheritance, map(lambda a,b=name:(a,b), subs))

Index: JSTree.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/JSTree.py,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -p -d -r1.6 -r1.7
--- JSTree.py	14 Nov 2003 14:51:09 -0000	1.6
+++ JSTree.py	15 Nov 2003 19:01:53 -0000	1.7
@@ -8,9 +8,8 @@
 #
 
 from Synopsis.Processor import Parameter
-from Page import Page
-from core import config
-from Tags import *
+from Synopsis.Formatter.HTML.Page import Page
+from Synopsis.Formatter.HTML.Tags import *
 
 #The javascript that goes up the top
 top_js = """<script language="JavaScript1.2"><!--

Index: ModuleIndexer.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/ModuleIndexer.py,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -p -d -r1.16 -r1.17
--- ModuleIndexer.py	14 Nov 2003 14:51:09 -0000	1.16
+++ ModuleIndexer.py	15 Nov 2003 19:01:53 -0000	1.17
@@ -10,7 +10,6 @@
 from Synopsis.Processor import Parameter
 from Synopsis import AST, Util
 from Synopsis.Formatters.HTML.Page import Page
-from Synopsis.Formatters.HTML.core import config
 from Synopsis.Formatters.HTML.Tags import *
 
 import os
@@ -24,9 +23,9 @@ class ModuleIndexer(Page):
       """Register first page as index page"""
 
       Page.register(self, processor)
-      config.set_using_module_index()
+      processor.set_using_module_index()
       self.__filename = self.processor.file_layout.nameOfModuleIndex(())
-      config.set_index_page(self.__filename)
+      processor.set_index_page(self.__filename)
 
    def filename(self): return self.__filename
 
@@ -36,7 +35,7 @@ class ModuleIndexer(Page):
       """Creates indexes for all modules"""
 
       start_file = self.processor.file_layout.nameOfModuleIndex(start.name())
-      config.set_index_page(start_file)
+      self.processor.set_index_page(start_file)
       self.__namespaces = [start]
       while self.__namespaces:
          ns = self.__namespaces.pop(0)
@@ -60,9 +59,10 @@ class ModuleIndexer(Page):
    def processNamespaceIndex(self, ns):
       "Index one module"
 
-      config.sorter.set_scope(ns)
-      config.sorter.sort_section_names()
-      config.sorter.sort_sections()
+      sorter = self.processor.sorter
+      sorter.set_scope(ns)
+      sorter.sort_section_names()
+      sorter.sort_sections()
 
       self.__filename = self.processor.file_layout.nameOfModuleIndex(ns.name())
       self.__title = Util.ccolonName(ns.name()) or 'Global Namespace'
@@ -87,12 +87,12 @@ class ModuleIndexer(Page):
       self.write(entity('script', load_script, type='text/javascript'))
 
       # Loop throught all the types of children
-      for section in config.sorter.sections():
+      for section in sorter.sections():
          if section[-1] == 's': heading = section+'es'
          else: heading = section+'s'
          heading = '<br>'+entity('i', heading)+'<br>'
          # Get a list of children of this type
-         for child in config.sorter.children(section):
+         for child in sorter.children(section):
             # Print out summary for the child
             if not isinstance(child, AST.Scope):
                continue
@@ -117,6 +117,6 @@ class ModuleIndexer(Page):
       self.end_file()
 
       # Queue child namespaces
-      for child in config.sorter.children():
+      for child in sorter.children():
          if isinstance(child, AST.Module):
             self.__namespaces.append(child)

Index: ModuleListing.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/ModuleListing.py,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -p -d -r1.14 -r1.15
--- ModuleListing.py	14 Nov 2003 14:51:09 -0000	1.14
+++ ModuleListing.py	15 Nov 2003 19:01:53 -0000	1.15
@@ -10,7 +10,6 @@
 from Synopsis.Processor import Parameter
 from Synopsis import AST, Util
 from Synopsis.Formatters.HTML.Page import Page
-from Synopsis.Formatters.HTML.core import config
 from Synopsis.Formatters.HTML.Tags import *
 
 import os
@@ -19,14 +18,14 @@ class ModuleListing(Page):
    """Create an index of all modules."""
 
    short_title = Parameter('Modules', 'short title')
+   child_types = Parameter(None, 'the types of children to include')
 
    def register(self, processor):
 
       Page.register(self, processor)
-      self.child_types = None
       self._children_cache = {}
       filename = self.filename()
-      config.set_contents_page(filename)
+      processor.set_contents_page(filename)
       self.processor.addRootPage(filename, self.short_title, 'contents', 2)
       self._link_target = 'index'
 
@@ -39,9 +38,6 @@ class ModuleListing(Page):
       # Init tree
       self.tree = self.processor.tree_formatter
       self.tree.register(self)
-      # Init list of module types to display
-      try: self.child_types = config.obj.ModuleListing.child_types
-      except AttributeError: pass
       # Create the file
       self.start_file()
       self.write(self.processor.formatHeader(self.filename(), 2))
@@ -69,9 +65,11 @@ class ModuleListing(Page):
 
       try: return self._children_cache[decl]
       except KeyError: pass
-      config.sorter.set_scope(decl)
-      config.sorter.sort_sections()
-      children = config.sorter.children()
+
+      sorter = self.processor.sorter
+      sorter.set_scope(decl)
+      sorter.sort_sections()
+      children = sorter.children()
       children = filter(self._child_filter, children)
       self._children_cache[decl] = children
       return children

Index: ModuleListingJS.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/ModuleListingJS.py,v
retrieving revision 1.12
retrieving revision 1.13
diff -u -p -d -r1.12 -r1.13
--- ModuleListingJS.py	14 Nov 2003 14:51:09 -0000	1.12
+++ ModuleListingJS.py	15 Nov 2003 19:01:53 -0000	1.13
@@ -7,10 +7,10 @@
 # see the file COPYING for details.
 #
 
+from Synopsis import config
 from Synopsis import AST, Util
-from JSTree import JSTree
-from Synopsis.Formatters.HTML.core import config
 from Synopsis.Formatters.HTML.Tags import *
+from JSTree import JSTree
 
 import os
 
@@ -28,7 +28,7 @@ class ModuleListingJS(JSTree):
       "Sets _filename and registers the page with the manager"
 
       filename = self.processor.file_layout.nameOfSpecial('ModuleTree')
-      config.set_contents_page(filename)
+      self.processor.set_contents_page(filename)
       self.manager.addRootPage(filename, 'Modules', 'contents', 2)
       self._link_target = 'index'
 
@@ -62,9 +62,10 @@ class ModuleListingJS(JSTree):
 
       try: return self._children_cache[decl]
       except KeyError: pass
-      config.sorter.set_scope(decl)
-      config.sorter.sort_sections()
-      children = config.sorter.children()
+      sorter = self.processor.sorter
+      sorter.set_scope(decl)
+      sorter.sort_sections()
+      children = sorter.children()
       children = filter(self._child_filter, children)
       self._children_cache[decl] = children
       return children

Index: NameIndex.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/NameIndex.py,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -p -d -r1.13 -r1.14
--- NameIndex.py	14 Nov 2003 14:51:09 -0000	1.13
+++ NameIndex.py	15 Nov 2003 19:01:53 -0000	1.14
@@ -12,13 +12,14 @@ from Synopsis import AST, Type
 from Synopsis.Formatters.HTML import core, Tags
 from Synopsis.Formatters.HTML.Page import Page
 from Synopsis.Formatters.HTML.Tags import *
-from Synopsis.Formatters.HTML.core import config
 
 import os
 
 class NameIndex(Page):
    """Creates an index of all names on one page in alphabetical order"""
 
+   columns = Parameter(2, 'the number of columns for the listing')
+
    def register(self, processor):
 
       Page.register(self, processor)
@@ -41,20 +42,19 @@ class NameIndex(Page):
       dict = self._makeDict()
       keys = dict.keys()
       keys.sort()
-      columns = 2 # TODO set from config
       linker = lambda key: '<a href="#%s">%s</a>'%(ord(key),key)
       self.write(div('nameindex-index', string.join(map(linker, keys))))
       for key in keys:
          self.write('<a name="%s">'%ord(key)+'</a>')
          self.write(entity('h2', key))
          self.write('<table border=0 width="100%" summary="table of names">')
-         self.write('<col width="*">'*columns)
+         self.write('<col width="*">'*self.columns)
          self.write('<tr>')
          items = dict[key]
          numitems = len(items)
          start = 0
-         for column in range(columns):
-            end = numitems * (column+1) / columns
+         for column in range(self.columns):
+            end = numitems * (column + 1) / self.columns
             self.write('<td valign=top>')
             for item in items[start:end]:
                self._processItem(item)
@@ -86,7 +86,7 @@ class NameIndex(Page):
          if dict.has_key(key): dict[key].append(type)
          else: dict[key] = [type]
       # Fill the dict
-      map(hasher, filter(decl_filter, config.types.values()))
+      map(hasher, filter(decl_filter, self.processor.ast.types().values()))
       # Now sort the dict
       for items in dict.values():
          items.sort(name_cmp)

Index: RawFilePages.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/RawFilePages.py,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -p -d -r1.9 -r1.10
--- RawFilePages.py	14 Nov 2003 14:51:09 -0000	1.9
+++ RawFilePages.py	15 Nov 2003 19:01:53 -0000	1.10
@@ -9,23 +9,22 @@
 
 from Synopsis.Processor import Parameter
 from Synopsis import AST, Util
-from Part import Page
-import ASTFormatter
-from core import config
-from Tags import *
+from Synopsis.Formatters.HTML.Part import Page
+from Synopsis.Formatters.HTML import ASTFormatter
+from Synopsis.Formatters.HTML.Tags import *
 
 import time, os, stat, os.path, string
 
 class RawFilePages(Page):
    """A module for creating a page for each file with hyperlinked source"""
 
+   exclude = Parameter([], 'TODO: define an exclusion mechanism (glob based ?)')
+
    def register(self, processor):
 
       Page.register(self, processor)
-      self.__base = config.base_dir
-      self.__start = config.start_dir
+      self.__start = self.__base = processor.output
       self.__files = None
-      self.__exclude_globs = config.exclude_globs
 
    def filename(self):
       """since RawFilePages generates a whole file hierarchy, this method returns the current filename,
@@ -49,19 +48,20 @@ class RawFilePages(Page):
          dir = dirs.pop(0)
          for entry in os.listdir(os.path.abspath(dir)):
             # Check if entry is in exclude list
-            exclude = 0
-            for re in self.__exclude_globs:
-               if re.match(entry):
-                  exclude = 1
-            if exclude:
-               continue
-            entry_path = os.path.join(dir, entry)
-            info = os.stat(entry_path)
-            if stat.S_ISDIR(info[stat.ST_MODE]):
-               dirs.append(entry_path)
-            else:
-               filename = self.processor.file_layout.nameOfFileSource(entry_path)
-               self.__files.append( (entry_path, filename) )
+            #exclude = 0
+            #for re in self.__exclude_globs:
+            #   if re.match(entry):
+            #      exclude = 1
+            #if exclude:
+            #   continue
+            #entry_path = os.path.join(dir, entry)
+            #info = os.stat(entry_path)
+            #if stat.S_ISDIR(info[stat.ST_MODE]):
+            #   dirs.append(entry_path)
+            #else:
+            #   filename = self.processor.file_layout.nameOfFileSource(entry_path)
+            #   self.__files.append( (entry_path, filename) )
+            pass
       return self.__files
 
    def process(self, start):

Index: ScopePages.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/ScopePages.py,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -p -d -r1.23 -r1.24
--- ScopePages.py	14 Nov 2003 14:51:09 -0000	1.23
+++ ScopePages.py	15 Nov 2003 19:01:53 -0000	1.24
@@ -7,16 +7,16 @@
 # see the file COPYING for details.
 #
 
+from Synopsis import config
 from Synopsis.Processor import Parameter
 from Synopsis import AST
 from Synopsis.Formatters.TOC import TOC
 from Synopsis.Formatters.HTML.Page import Page
-from Synopsis.Formatters.HTML.core import config
 from Synopsis.Formatters.HTML.Tags import *
-
+from Synopsis.Formatters.HTML.ASTFormatter import *
 import time, os
 
-class ScopePages(Page):
+class Scope(Page):
    """A module for creating a page for each Scope with summaries and
    details. This module is highly modular, using the classes from
    ASTFormatter to do the actual formatting. The classes to use may be
@@ -24,6 +24,11 @@ class ScopePages(Page):
    @see ASTFormatter The ASTFormatter module
    @see Config.Formatters.HTML.ScopePages Config for ScopePages
    """
+
+   parts = Parameter([Heading(),
+                      Summary(),
+                      Detail()],
+                     '')
    
    def register(self, processor):
 
@@ -31,24 +36,13 @@ class ScopePages(Page):
       share = config.datadir
       self.syn_logo = 'synopsis200.jpg'
       self.processor.file_layout.copyFile(os.path.join(share, 'synopsis200.jpg'),
-                                          os.path.join(config.basename, self.syn_logo))
-      self.__parts = []
-      self._get_parts()
+                                          os.path.join(processor.output, self.syn_logo))
+
+      for part in self.parts: part.register(self)
+
       self.__namespaces = []
       self.__toc = None
       
-   def _get_parts(self):
-      "Loads the list of parts from config"
-
-      try:
-         parts = config.obj.ScopePages.parts
-      except AttributeError:
-         parts = ['Heading', 'Summary', 'Detail']
-      base = 'Synopsis.Formatters.HTML.ASTFormatter.'
-      for part in parts:
-         obj = core.import_object(part, basePackage=base)(self)
-         self.__parts.append(obj)
-    
    def get_toc(self, start):
       """Returns the TOC for the whole AST starting at start"""
       

Index: XRefPages.py
===================================================================
RCS file: /cvs/synopsis/Synopsis/Synopsis/Formatters/HTML/Pages/XRefPages.py,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -p -d -r1.13 -r1.14
--- XRefPages.py	14 Nov 2003 14:51:09 -0000	1.13
+++ XRefPages.py	15 Nov 2003 19:01:53 -0000	1.14
@@ -27,31 +27,30 @@ class XRefLinker(Linker):
 
       return file
 
-class XRefPages(Page):
+class XRef(Page):
    """A module for creating pages full of xref infos"""
 
+   xref_file = Parameter('', '')
+   link_to_scope = Parameter(True, '')
+
    def register(self, processor):
 
       Page.register(self, processor)
-      self.xref = config.xref
       self.__filename = None
       self.__title = None
       self.__toc = None
-      self.__link_to_scopepages = 0
-      if hasattr(config.obj, 'XRefPages'):
-         if hasattr(config.obj.XRefPages, 'xref_file'):
-            self.xref.load(config.obj.XRefPages.xref_file)
-         if hasattr(config.obj.XRefPages, 'link_to_scopepages'):
-            self.__link_to_scopepages = config.obj.XRefPages.link_to_scopepages
+      if self.xref_file:
+         processor.xref.load(self.xref_file)
 
    def get_toc(self, start):
-      """Returns the toc for XRefPages"""
+      """Returns the toc for XRef"""
 
       if self.__toc: return self.__toc
       self.__toc = TOC(None)
       # Add an entry for every xref
-      for name in self.xref.get_all_names():
-         page = self.xref.get_page_for(name)
+      xref = self.processor.xref
+      for name in xref.get_all_names():
+         page = xref.get_page_for(name)
          file = self.processor.file_layout.nameOfSpecial('xref%d'%page)
          file = file + '#' + Util.quote(string.join(name,'::'))
          self.__toc.insert(TOC.Entry(name, file, 'C++', 'xref'))
@@ -72,7 +71,7 @@ class XRefPages(Page):
    def process(self, start):
       """Creates a page for every bunch of xref infos"""
 
-      page_info = self.xref.get_page_info()
+      page_info = self.processor.xref.get_page_info()
       if not page_info: return
       for i in range(len(page_info)):
          self.__filename = self.processor.file_layout.nameOfSpecial('xref%d'%i)
@@ -89,7 +88,7 @@ class XRefPages(Page):
    def register_filenames(self, start):
       """Registers each page"""
 
-      page_info = self.xref.get_page_info()
+      page_info = self.processor.xref.get_page_info()
       if not page_info: return
       for i in range(len(page_info)):
          filename = self.processor.file_layout.nameOfSpecial('xref%d'%i)
@@ -133,7 +132,7 @@ class XRefPages(Page):
    def process_name(self, name):
       """Outputs the info for a given name"""
       
-      target_data = self.xref.get_info(name)
+      target_data = self.processor.xref.get_info(name)
       if not target_data: return
 
       jname = string.join(name, '::')
@@ -147,12 +146,12 @@ class XRefPages(Page):
             desc = self.describe_decl(decl)
       self.write(entity('h2', desc + jname) + '<ul>\n')
 	
-      if self.__link_to_scopepages:
-         if config.types.has_key(name):
-            type = config.types[name]
-            if isinstance(type, Type.Declared):
-               link = self.processor.file_layout.link(type.declaration())
-               self.write('<li>'+href(rel(self.__filename, link), 'Documentation')+'</li>')
+      if self.link_to_scope:
+         types = 
+         type = self.processor.ast.types().get(name, None)
+         if isinstance(type, Type.Declared):
+            link = self.processor.file_layout.link(type.declaration())
+            self.write('<li>'+href(rel(self.__filename, link), 'Documentation')+'</li>')
       if target_data[0]:
          self.write('<li>Defined at:<ul>\n')
          for file, line, scope in target_data[0]:





More information about the Synopsis-changes mailing list