commit-gnue
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[gnue] r8076 - in trunk: gnue-common/src/definitions gnue-reports/sample


From: btami
Subject: [gnue] r8076 - in trunk: gnue-common/src/definitions gnue-reports/samples/foobulations gnue-reports/src/adapters/filters/Char gnue-reports/src/adapters/filters/Char/char gnue-reports/src/adapters/filters/Char/char/CHObjects gnue-reports/src/base/layout
Date: Mon, 24 Oct 2005 08:19:02 -0500 (CDT)

Author: btami
Date: 2005-10-24 08:19:01 -0500 (Mon, 24 Oct 2005)
New Revision: 8076

Modified:
   trunk/gnue-common/src/definitions/GParser.py
   trunk/gnue-reports/samples/foobulations/char.grd
   trunk/gnue-reports/src/adapters/filters/Char/__init__.py
   trunk/gnue-reports/src/adapters/filters/Char/char/Adapter.py
   trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHLabel.py
   trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHObject.py
   trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHPageFooter.py
   trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHPageHeader.py
   trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHSummaryPage.py
   trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHTitlePage.py
   trunk/gnue-reports/src/adapters/filters/Char/char/CHParser.py
   trunk/gnue-reports/src/adapters/filters/Char/char/CHReport.py
   trunk/gnue-reports/src/adapters/filters/Char/char/Writer.py
   trunk/gnue-reports/src/base/layout/GRPassThru.py
Log:
preparing for designer's report support

Modified: trunk/gnue-common/src/definitions/GParser.py
===================================================================
--- trunk/gnue-common/src/definitions/GParser.py        2005-10-21 21:07:59 UTC 
(rev 8075)
+++ trunk/gnue-common/src/definitions/GParser.py        2005-10-24 13:19:01 UTC 
(rev 8076)
@@ -32,7 +32,7 @@
 from gnue.common.definitions.GObjects import GObj
 from gnue.common.definitions.GRootObj import GRootObj
 from gnue.common.logic.GTrigger import GTrigger
-from gnue.common.utils.FileUtils import openResource
+from gnue.common.utils.FileUtils import openResource, dyn_import
 
 try:
   from xml.sax.handler import property_lexical_handler
@@ -248,6 +248,7 @@
     self._tagCounts = {}
     self.url = None
     self.rootComments = []
+    self.doImportLayoutParser = True
 
   #
   # Called by client code to get the "root" node
@@ -300,6 +301,19 @@
     loadedxmlattrs = {}
     baseAttrs = {}
 
+    # Updating self.xmlElements with namespace specific parser definitions
+    # to let designer handle layout tags.
+    if self.default_namespace is None and self.doImportLayoutParser and ns:
+      try:
+        gnue, tool, toolNS = ns.split(':')
+        layoutParser = dyn_import('gnue.%s.adapters.filters.%s.LayoutParser' % 
\
+                                  (tool.lower(), toolNS))
+        self.xmlElements.update(layoutParser.getXMLelements())
+        self.default_namespace = ns
+      except:
+        self.doImportLayoutParser = False
+        assert gDebug (7, "No parser defined for namespace %s, using PassThru 
objects." % ns)
+
     if not ns or ns == self.default_namespace:
       #
       # No namespace qualifier
@@ -399,9 +413,13 @@
         self.root = object
         self.bootstrapflag = 1
 
-      self._tagCounts[name] += 1
+      try:
+        self._tagCounts[name] += 1
+      except KeyError:
+        pass
 
       object._xmltag = name
+      object._xmlnamespace = ns
 
     elif self.xmlMasqueradeNamespaceElements:
       #

Modified: trunk/gnue-reports/samples/foobulations/char.grd
===================================================================
--- trunk/gnue-reports/samples/foobulations/char.grd    2005-10-21 21:07:59 UTC 
(rev 8075)
+++ trunk/gnue-reports/samples/foobulations/char.grd    2005-10-24 13:19:01 UTC 
(rev 8076)
@@ -5,7 +5,7 @@
   </sources>
   <layout xmlns:out="GNUe:Reports:Char" >
   
-   <out:report width="80" height="15">
+   <out:chreport width="80" height="15">
 
     <out:pageheader height="4">
       <out:label x="0" y="0" width="80" align="center" bold="Y" 
underline="Y">Monthly Accounting Foobulation Report</out:label>
@@ -64,7 +64,7 @@
       <out:label x="65" y="2" width="10"><summ function="sum" 
section="mynameBreak" field="foobs"/></out:label>
     </out:summarypage>
 
-   </out:report>
+   </out:chreport>
 
   </layout>
 </report>

Modified: trunk/gnue-reports/src/adapters/filters/Char/__init__.py
===================================================================
--- trunk/gnue-reports/src/adapters/filters/Char/__init__.py    2005-10-21 
21:07:59 UTC (rev 8075)
+++ trunk/gnue-reports/src/adapters/filters/Char/__init__.py    2005-10-24 
13:19:01 UTC (rev 8076)
@@ -0,0 +1,4 @@
+from char import CHParser
+
+class LayoutParser(CHParser):
+  pass

Modified: trunk/gnue-reports/src/adapters/filters/Char/char/Adapter.py
===================================================================
--- trunk/gnue-reports/src/adapters/filters/Char/char/Adapter.py        
2005-10-21 21:07:59 UTC (rev 8075)
+++ trunk/gnue-reports/src/adapters/filters/Char/char/Adapter.py        
2005-10-24 13:19:01 UTC (rev 8076)
@@ -19,7 +19,7 @@
 # Copyright 2003-2004 Free Software Foundation
 #
 # $Id: Adapter.py 6763 2004-11-30 23:36:21Z jcater $
-
+
 """
 Class that contains the base filter adapter for GNUe Reports'
 "Char" markup.
@@ -72,6 +72,6 @@
   def parse(self, report):
     self.writer.initialize(report)
 
-    report.process(self.writer)
+    report.chProcess(self.writer)
 
     self.writer.finalize()

Modified: trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHLabel.py
===================================================================
--- trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHLabel.py      
2005-10-21 21:07:59 UTC (rev 8075)
+++ trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHLabel.py      
2005-10-24 13:19:01 UTC (rev 8076)
@@ -36,7 +36,7 @@
   def __init__(self, parent=None, type='CHLabel'):
     CHObject.__init__(self, parent, type=type)
 
-  def process(self, writer, band):
+  def chProcess(self, writer, band):
     writer.render(self.getChildrenAsContent(), self.x, self.y, self.width, 
band,
                   align=self.align, condensed=self.condensed, bold=self.bold,
                   italic=self.italic, underline=self.underline)

Modified: 
trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHObject.py
===================================================================
--- trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHObject.py     
2005-10-21 21:07:59 UTC (rev 8075)
+++ trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHObject.py     
2005-10-24 13:19:01 UTC (rev 8076)
@@ -30,12 +30,12 @@
 
 __all__ = ['CHObject', 'CHBand']
 
-from gnue.common.definitions.GObjects import GObj
+from gnue.reports.base.layout.GRPassThru import GRPassThru
 
 
-class CHObject(GObj):
+class CHObject(GRPassThru):
   def __init__(self, parent=None, type='CHObject'):
-    GObj.__init__(self, parent, type=type)
+    GRPassThru.__init__(self, parent, type=type)
 
 
 class CHBand:
@@ -52,9 +52,9 @@
       self.buffer.append([])
 
 
-  def process(self, writer):
+  def chProcess(self, writer):
     for child in self._children:
-      child.process(writer, self)
+      child.chProcess(writer, self)
 
     writer.renderBand(self)
     self.resetBand()

Modified: 
trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHPageFooter.py
===================================================================
--- trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHPageFooter.py 
2005-10-21 21:07:59 UTC (rev 8075)
+++ trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHPageFooter.py 
2005-10-24 13:19:01 UTC (rev 8076)
@@ -38,9 +38,9 @@
     CHObject.__init__(self, parent, type=type)
     CHBand.__init__(self)
 
-  def process(self, writer):
+  def chProcess(self, writer):
     writer.pageFooterDone = True
     if writer.currLine < writer.reportHeight - self.height:
       writer.printLines([""] * (writer.reportHeight - self.height - 
writer.currLine), self._type)
 
-    CHBand.process(self, writer)
+    CHBand.chProcess(self, writer)

Modified: 
trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHPageHeader.py
===================================================================
--- trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHPageHeader.py 
2005-10-21 21:07:59 UTC (rev 8075)
+++ trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHPageHeader.py 
2005-10-24 13:19:01 UTC (rev 8076)
@@ -38,7 +38,7 @@
     CHObject.__init__(self, parent, type=type)
     CHBand.__init__(self)
 
-  def process(self, writer):
+  def chProcess(self, writer):
     writer.pageHeaderDone = True
-    CHBand.process(self, writer)
-    
\ No newline at end of file
+    CHBand.chProcess(self, writer)
+    

Modified: 
trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHSummaryPage.py
===================================================================
--- 
trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHSummaryPage.py    
    2005-10-21 21:07:59 UTC (rev 8075)
+++ 
trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHSummaryPage.py    
    2005-10-24 13:19:01 UTC (rev 8076)
@@ -39,9 +39,9 @@
     CHBand.__init__(self)
 
 
-  def process(self, writer):
+  def chProcess(self, writer):
     if writer.PageFooter and (not writer.pageFooterDone):
-      writer.PageFooter.process(writer)
+      writer.PageFooter.chProcess(writer)
       writer.newPage()
     elif writer.currLine < writer.reportHeight:
       writer.printLines([""] * (writer.reportHeight - writer.currLine), 
self._type)
@@ -49,4 +49,4 @@
     writer.pageHeaderDone = True
     writer.pageFooterDone = True
 
-    CHBand.process(self, writer)
+    CHBand.chProcess(self, writer)

Modified: 
trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHTitlePage.py
===================================================================
--- trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHTitlePage.py  
2005-10-21 21:07:59 UTC (rev 8075)
+++ trunk/gnue-reports/src/adapters/filters/Char/char/CHObjects/CHTitlePage.py  
2005-10-24 13:19:01 UTC (rev 8076)
@@ -40,11 +40,11 @@
     CHBand.__init__(self)
     
 
-  def process(self, writer):
+  def chProcess(self, writer):
     writer.newPage()
     writer.pageHeaderDone = True
     writer.pageFooterDone = True
     
-    CHBand.process(self, writer)
+    CHBand.chProcess(self, writer)
     writer.newPage()
 

Modified: trunk/gnue-reports/src/adapters/filters/Char/char/CHParser.py
===================================================================
--- trunk/gnue-reports/src/adapters/filters/Char/char/CHParser.py       
2005-10-21 21:07:59 UTC (rev 8075)
+++ trunk/gnue-reports/src/adapters/filters/Char/char/CHParser.py       
2005-10-24 13:19:01 UTC (rev 8076)
@@ -74,7 +74,7 @@
     #
     #
     xmlElements = {
-      'report':       {
+      'chreport':       {
          'BaseClass': CHReport.CHReport,
          'Required': 1,
          'SingleInstance': 1,

Modified: trunk/gnue-reports/src/adapters/filters/Char/char/CHReport.py
===================================================================
--- trunk/gnue-reports/src/adapters/filters/Char/char/CHReport.py       
2005-10-21 21:07:59 UTC (rev 8075)
+++ trunk/gnue-reports/src/adapters/filters/Char/char/CHReport.py       
2005-10-24 13:19:01 UTC (rev 8076)
@@ -28,36 +28,36 @@
 #
 
 __all__ = ['CHReport']
-
 
-from gnue.common.definitions.GObjects import GObj
+
 from gnue.common.definitions.GRootObj import GRootObj
 from gnue.common.apps import GDebug
+from gnue.reports.base.layout.GRPassThru import GRPassThru
 import CHParser
-
 
-class CHReport(GRootObj, GObj): 
+
+class CHReport(GRootObj, GRPassThru): 
   def __init__(self, parent=None):
     GRootObj.__init__(self, 'report', CHParser.getXMLelements, CHParser)
-    GObj.__init__(self, parent, type='CHReport')
+    GRPassThru.__init__(self, parent, type='CHReport')
 
 
-  def process(self, writer):
+  def chProcess(self, writer):
     writer.PageHeader = self.findChildOfType('CHPageHeader')
     writer.PageFooter = self.findChildOfType('CHPageFooter')
-
-    TitlePage = self.findChildOfType('CHTitlePage')
-    if TitlePage:
-      TitlePage.process(writer)
 
+    TitlePage = self.findChildOfType('CHTitlePage')
+    if TitlePage:
+      TitlePage.chProcess(writer)
+
     for child in self._children:
-      if child._type in ('CHDetail', 'CHGroupHeader', 'CHGroupFooter'):
-        child.process(writer)
-
-    SummaryPage = self.findChildOfType('CHSummaryPage')
-    if SummaryPage:
-      SummaryPage.process(writer)
+      if child._type in ('CHDetail', 'CHGroupHeader', 'CHGroupFooter'):
+        child.chProcess(writer)
 
+    SummaryPage = self.findChildOfType('CHSummaryPage')
+    if SummaryPage:
+      SummaryPage.chProcess(writer)
+
     if writer.PageFooter and (not writer.pageFooterDone):
-      writer.PageFooter.process(writer)
+      writer.PageFooter.chProcess(writer)
     writer.newPage()

Modified: trunk/gnue-reports/src/adapters/filters/Char/char/Writer.py
===================================================================
--- trunk/gnue-reports/src/adapters/filters/Char/char/Writer.py 2005-10-21 
21:07:59 UTC (rev 8075)
+++ trunk/gnue-reports/src/adapters/filters/Char/char/Writer.py 2005-10-24 
13:19:01 UTC (rev 8076)
@@ -71,16 +71,16 @@
         if cx < x: 
           if self.formatter != "xml":
             outputLine += self.printdef.escape(' '*(x-cx))
-          cx = x
-
-        if self.formatter == "xml" and prefix[:6] == '<label':
+          cx = x
+
+        if self.formatter == "xml" and prefix[:6] == '<label':
           prefix = prefix % cx
 
         outputLine += prefix + \
                       self.printdef.escape(text).encode(_encoding,'replace') + 
\
                       postfix
         cx += len(text)
-
+
       self.printLine(outputLine, band._type)
 #    self.output.write("[[ End Band %s ]]" % band._type)
 
@@ -88,7 +88,7 @@
   def render(self, object, x, y, width, band,
                   align='none', condensed=False, bold=False,
                   italic=False, underline=False):
-
+
     try:
       curline = band.buffer[y]
     except: 
@@ -126,7 +126,7 @@
   def newPage(self):
     if self.pageNumber > 1: 
       self.output.write(self.printdef['page_end'])
-    self.pageNumber += 1
+    self.pageNumber += 1
     self.currLine = 0
     self.pageHeaderDone = False
     self.pageFooterDone = False
@@ -137,25 +137,25 @@
   def printLine(self, line, bandtype): 
     if self.PageFooter and (not self.pageFooterDone):
       if self.currLine + 1 > self.reportHeight - self.PageFooter.height:
-        self.PageFooter.process(self)
+        self.PageFooter.chProcess(self)
         self.newPage()
 
     if self.PageHeader and (not self.pageHeaderDone) and bandtype != 
'CHSummaryPage':
-      self.PageHeader.process(self)
+      self.PageHeader.chProcess(self)
 
     fullline = self.printdef['line_begin'] +  \
                      line +  \
-                     self.printdef['line_end']
-    if self.formatter == "xml":
-      fullline = fullline % self.currLine
-
+                     self.printdef['line_end']
+    if self.formatter == "xml":
+      fullline = fullline % self.currLine
+
     self.output.write(fullline)
     self.currLine += 1
 
 
   def printLines(self, lines, bandtype): 
     for line in lines:
-      if self.formatter == "xml":
+      if self.formatter == "xml":
         self.currLine += 1
       else:
         self.printLine(line, bandtype)
@@ -166,5 +166,5 @@
               'center' : lambda obj, width: string.center(obj, width),
               'none'   : lambda obj, width: string.ljust(obj, width),
              }
-
-_encoding = gConfig('textEncoding')
\ No newline at end of file
+
+_encoding = gConfig('textEncoding')

Modified: trunk/gnue-reports/src/base/layout/GRPassThru.py
===================================================================
--- trunk/gnue-reports/src/base/layout/GRPassThru.py    2005-10-21 21:07:59 UTC 
(rev 8075)
+++ trunk/gnue-reports/src/base/layout/GRPassThru.py    2005-10-24 13:19:01 UTC 
(rev 8076)
@@ -39,8 +39,8 @@
 # simply pass thru our layout engine
 #
 class GRPassThru(ContainerElement):
-  def __init__(self, parent):
-    ContainerElement.__init__(self, parent, 'GRPassThru')
+  def __init__(self, parent, type='GRPassThru'):
+    ContainerElement.__init__(self, parent, type=type)
 
   def process(self, dest, mapper, isfirst, islast, firstSection, nextSection):
     dest.write('<%s' % self._xmltag)





reply via email to

[Prev in Thread] Current Thread [Next in Thread]