Divide BaseDoc into BaseDoc, TextDoc and DrawDoc. TextDoc and DrawDoc are abstract interfaces that must be implemented by the corresponding document generators.

svn: r8431
This commit is contained in:
Brian Matherly
2007-04-30 01:56:34 +00:00
parent 6544ab67ad
commit d7423fff15
16 changed files with 137 additions and 125 deletions

View File

@@ -51,7 +51,7 @@ mime_type = ""
# Class Definitions
#
#-------------------------------------------------------------------------
class AbiWordDoc(BaseDoc.BaseDoc):
class AbiWordDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
"""AbiWord document generator. Inherits from the BaseDoc generic
document interface class."""

View File

@@ -121,7 +121,7 @@ def reformat_para(para='',left=0,right=72,just=LEFT,right_pad=0,first=0):
# Ascii
#
#------------------------------------------------------------------------
class AsciiDoc(BaseDoc.BaseDoc):
class AsciiDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
#--------------------------------------------------------------------
#
@@ -169,28 +169,17 @@ class AsciiDoc(BaseDoc.BaseDoc):
def end_page(self):
self.f.write('\012')
#--------------------------------------------------------------------
#
# Force a line break
#
#--------------------------------------------------------------------
def line_break(self):
if self.in_cell:
self.cellpars[self.cellnum] = self.cellpars[self.cellnum] + '\n'
else:
self.f.write('\n')
def start_bold(self):
pass
def end_bold(self):
pass
def start_superscript(self):
if self.in_cell:
self.cellpars[self.cellnum] = self.cellpars[self.cellnum] + '['
else:
self.f.write('[')
self.text = self.text + '['
def end_superscript(self):
if self.in_cell:
self.cellpars[self.cellnum] = self.cellpars[self.cellnum] + ']'
else:
self.f.write(']')
self.text = self.text + ']'
#--------------------------------------------------------------------
#
@@ -347,7 +336,7 @@ class AsciiDoc(BaseDoc.BaseDoc):
if self.cell_lines[self.cellnum] > self.maxlines:
self.maxlines = self.cell_lines[self.cellnum]
def add_photo(self,name,pos,x,y):
def add_media_object(self, name, align, w_cm, h_cm):
this_text = '(photo)'
if self.in_cell:
self.cellpars[self.cellnum] = self.cellpars[self.cellnum] + this_text

View File

@@ -348,7 +348,7 @@ class CairoJob(object):
#
#
#------------------------------------------------------------------------
class GtkDoc(BaseDoc.BaseDoc):
class GtkDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc,BaseDoc.DrawDoc):
def open(self,filename):
self._job = CairoJob()

View File

@@ -95,7 +95,7 @@ _bottom = [
# HtmlDoc
#
#------------------------------------------------------------------------
class HtmlDoc(BaseDoc.BaseDoc):
class HtmlDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
def __init__(self,styles,type,template):
BaseDoc.BaseDoc.__init__(self,styles,None,template)

View File

@@ -57,7 +57,7 @@ def points(val):
#
#
#------------------------------------------------------------------------
class KwordDoc(BaseDoc.BaseDoc):
class KwordDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
def open(self,filename):
self.media_list = []

View File

@@ -492,7 +492,7 @@ class GnomePrintPhoto:
# LPRDoc class
#
#------------------------------------------------------------------------
class LPRDoc(BaseDoc.BaseDoc):
class LPRDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc,BaseDoc.DrawDoc):
"""Gnome-print document interface class. Derived from BaseDoc."""
#------------------------------------------------------------------------
@@ -579,17 +579,6 @@ class LPRDoc(BaseDoc.BaseDoc):
"Override generic Fontscale-based width."
return get_text_width(text,fontstyle)
def line_break(self):
"Forces a line break within a paragraph."
# Add previously held text to the paragraph,
# then add line break directive,
# then start accumulating further text
append_to_paragraph(self.paragraph,self.paragraph_directive,
self.paragraph_text)
self.paragraph.add_piece(_LINE_BREAK,"")
self.paragraph_text = ""
self.brand_new_page = 0
def start_paragraph(self,style_name,leader=None):
"""Paragraphs handling - A Gramps paragraph is any
single body of text, from a single word, to several sentences.

View File

@@ -128,7 +128,7 @@ class TexFont:
# LaTeXDon
#
#------------------------------------------------------------------------
class LaTeXDoc(BaseDoc.BaseDoc):
class LaTeXDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
"""LaTeX document interface class. Derived from BaseDoc"""
def open(self,filename):

View File

@@ -74,7 +74,7 @@ _esc_map = {
# ODFDoc
#
#-------------------------------------------------------------------------
class ODFDoc(BaseDoc.BaseDoc):
class ODFDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc,BaseDoc.DrawDoc):
def __init__(self,styles,type,template):
BaseDoc.BaseDoc.__init__(self,styles,type,template)
@@ -945,13 +945,13 @@ class ODFDoc(BaseDoc.BaseDoc):
self.meta.write('<dc:description>')
self.meta.write('</dc:description>\n')
self.meta.write('<meta:initial-creator>')
self.meta.write(self.name)
self.meta.write(self.get_creator())
self.meta.write('</meta:initial-creator>\n')
self.meta.write('<meta:creation-date>')
self.meta.write(self.time)
self.meta.write('</meta:creation-date>\n')
self.meta.write('<dc:creator>')
self.meta.write(self.name)
self.meta.write(self.get_creator())
self.meta.write('</dc:creator>\n')
self.meta.write('<dc:date>')
self.meta.write(self.time)

View File

@@ -69,7 +69,7 @@ _esc_map = {
# OpenOfficeDoc
#
#-------------------------------------------------------------------------
class OpenOfficeDoc(BaseDoc.BaseDoc):
class OpenOfficeDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc,BaseDoc.DrawDoc):
def __init__(self,styles,type,template):
BaseDoc.BaseDoc.__init__(self,styles,type,template)
@@ -800,13 +800,13 @@ class OpenOfficeDoc(BaseDoc.BaseDoc):
self.meta.write(const.program_name + ' ' + const.version)
self.meta.write('</meta:generator>\n')
self.meta.write('<meta:initial-creator>')
self.meta.write(self.name)
self.meta.write(self.get_creator())
self.meta.write('</meta:initial-creator>\n')
self.meta.write('<meta:creation-date>')
self.meta.write(self.time)
self.meta.write('</meta:creation-date>\n')
self.meta.write('<dc:creator>')
self.meta.write(self.name)
self.meta.write(self.get_creator())
self.meta.write('</dc:creator>\n')
self.meta.write('<dc:date>')
self.meta.write(self.time)

View File

@@ -69,7 +69,7 @@ if print_label == None:
# PSDrawDoc
#
#-------------------------------------------------------------------------
class PSDrawDoc(BaseDoc.BaseDoc):
class PSDrawDoc(BaseDoc.BaseDoc,BaseDoc.DrawDoc):
def __init__(self,styles,type,template):
BaseDoc.BaseDoc.__init__(self,styles,type,template)

View File

@@ -119,7 +119,7 @@ class GrampsDocTemplate(BaseDocTemplate):
#
#
#------------------------------------------------------------------------
class PdfDoc(BaseDoc.BaseDoc):
class PdfDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc,BaseDoc.DrawDoc):
def open(self,filename):
if filename[-4:] != ".pdf":

View File

@@ -60,7 +60,7 @@ def twips(cm):
# use style sheets. Instead it writes raw formatting.
#
#------------------------------------------------------------------------
class RTFDoc(BaseDoc.BaseDoc):
class RTFDoc(BaseDoc.BaseDoc,BaseDoc.TextDoc):
#--------------------------------------------------------------------
#
@@ -336,7 +336,7 @@ class RTFDoc(BaseDoc.BaseDoc):
self.f.write('\\clbrdrl\\brdrs\\brdrw10\n')
if s.get_right_border():
self.f.write('\\clbrdrr\\brdrs\\brdrw10\n')
table_width = float(self.get_usable_width())
table_width = float(self.paper.get_usable_width())
for cell in range(self.cell,self.cell+span):
self.cell_percent = self.cell_percent + float(self.tbl_style.get_column_width(cell))
cell_width = twips((table_width * self.cell_percent)/100.0)

View File

@@ -42,7 +42,7 @@ import Errors
# SvgDrawDoc
#
#-------------------------------------------------------------------------
class SvgDrawDoc(BaseDoc.BaseDoc):
class SvgDrawDoc(BaseDoc.BaseDoc,BaseDoc.DrawDoc):
def __init__(self,styles,type,template):
BaseDoc.BaseDoc.__init__(self,styles,type,template)