2707: Add markup notes to html output. Finished

svn: r12654
This commit is contained in:
Benny Malengier 2009-06-11 13:01:27 +00:00
parent a3f59f2717
commit f78db6f418
7 changed files with 140 additions and 110 deletions

View File

@ -58,7 +58,9 @@ from QuestionDialog import WarningDialog
import logging import logging
LOG = logging.getLogger(".htmldoc") LOG = logging.getLogger(".htmldoc")
_TEXTDOCSCREEN = 'grampstextdoc.css'
_HTMLSCREEN = 'grampshtml.css' _HTMLSCREEN = 'grampshtml.css'
#------------------------------------------------------------------------ #------------------------------------------------------------------------
# #
# HtmlDoc # HtmlDoc
@ -76,6 +78,10 @@ class HtmlDoc(BaseDoc, TextDoc):
paragraphs paragraphs
id="grampsnote" : start of part with a note. This id is normally not id="grampsnote" : start of part with a note. This id is normally not
used used
The styles as defined in the stylesheed of the textdoc, will be converted
to css class. Color is removed to avoid conflicts with the css. Also
Fontface is removed. Size, italic, bold, margins, borders are retained
""" """
def __init__(self, styles, paper_style): def __init__(self, styles, paper_style):
@ -83,7 +89,7 @@ class HtmlDoc(BaseDoc, TextDoc):
self.style_declaration = '' self.style_declaration = ''
self.htmllist = [] self.htmllist = []
self._backend = None self._backend = None
self.css_filename = None self.css_filename = ''
self.warn_dir = True self.warn_dir = True
self._col = 0 self._col = 0
self._tbl = None self._tbl = None
@ -96,7 +102,10 @@ class HtmlDoc(BaseDoc, TextDoc):
Set the css file to use. The path must be included. Set the css file to use. The path must be included.
Note: DocReportDialog sets this for html doc Note: DocReportDialog sets this for html doc
""" """
self.css_filename = css_filename if os.path.basename(css_filename):
self.css_filename = css_filename
else:
self.css_filename = ''
def open(self, filename): def open(self, filename):
""" """
@ -122,17 +131,21 @@ class HtmlDoc(BaseDoc, TextDoc):
#set styles of the report as inline css #set styles of the report as inline css
self.build_style_declaration() self.build_style_declaration()
self._backend.html_header += self.style_declaration
# GRAMPS favicon en css # GRAMPS favicon en css
fname1 = '/'.join([self._backend.datadir(), 'favicon.ico']) fname1 = '/'.join([self._backend.datadir(), 'favicon.ico'])
fname2 = '/'.join([self._backend.datadir(), _HTMLSCREEN]) fname2 = '/'.join([self._backend.datadir(), _TEXTDOCSCREEN])
fname3 = '/'.join([self._backend.datadir(), _HTMLSCREEN])
# links for GRAMPS favicon and stylesheets # links for GRAMPS favicon and stylesheets
links = Html('link', rel='shortcut icon', href=fname1, links = Html('link', rel='shortcut icon', href=fname1,
type='image/x-icon') + ( type='image/x-icon') + (
Html('link', rel='stylesheet', href=fname2, type='text/css', Html('link', rel='stylesheet', href=fname2, type='text/css',
media='screen', indent=False) media='screen', indent=False),)
if self.css_filename:
links += (Html('link', rel='stylesheet', href=fname3,
type='text/css', media='screen', indent=False),
) )
self._backend.html_header += (meta, links) self._backend.html_header += (meta, links)
@ -239,7 +252,8 @@ class HtmlDoc(BaseDoc, TextDoc):
'to_dir' is the relative path name in the destination root. It will 'to_dir' is the relative path name in the destination root. It will
be prepended before 'to_fname'. be prepended before 'to_fname'.
""" """
dest = os.path.join(self._backend.datadir(), to_dir, to_fname) #build absolute path
dest = os.path.join(self._backend.datadirfull(), to_dir, to_fname)
destdir = os.path.dirname(dest) destdir = os.path.dirname(dest)
if not os.path.isdir(destdir): if not os.path.isdir(destdir):
@ -262,8 +276,14 @@ class HtmlDoc(BaseDoc, TextDoc):
""" """
Copy support files to the datadir that needs to hold them Copy support files to the datadir that needs to hold them
""" """
#css of textdoc styles
tdfile = open(os.path.join(self._backend.datadirfull(),
_TEXTDOCSCREEN), 'w')
tdfile.write(self.style_declaration)
tdfile.close()
#css file #css file
self.copy_file(os.path.join(const.DATA_DIR, self.css_filename), if self.css_filename:
self.copy_file(os.path.join(const.DATA_DIR, self.css_filename),
_HTMLSCREEN) _HTMLSCREEN)
#favicon #favicon
self.copy_file(os.path.join(const.IMAGE_DIR, 'favicon.ico'), self.copy_file(os.path.join(const.IMAGE_DIR, 'favicon.ico'),
@ -310,8 +330,7 @@ class HtmlDoc(BaseDoc, TextDoc):
Add title field to header Add title field to header
""" """
self._backend.html_header += Html('title', self.title, self._backend.html_header += Html('title', self.title,
inline=True, indent=True) inline=True)
def start_table(self, name, style): def start_table(self, name, style):
""" """
@ -326,7 +345,6 @@ class HtmlDoc(BaseDoc, TextDoc):
""" """
Overwrite base method Overwrite base method
""" """
self.write_text('\n')
self.__reduce_list() self.__reduce_list()
def start_row(self): def start_row(self):
@ -340,7 +358,6 @@ class HtmlDoc(BaseDoc, TextDoc):
""" """
Overwrite base method Overwrite base method
""" """
self.write_text('\n')
self.__reduce_list() self.__reduce_list()
def start_cell(self, style_name, span=1): def start_cell(self, style_name, span=1):
@ -348,23 +365,21 @@ class HtmlDoc(BaseDoc, TextDoc):
Overwrite base method Overwrite base method
""" """
self._empty = 1 self._empty = 1
#self.f.write('<td valign="top"')
if span > 1: if span > 1:
self.htmllist += [Html('td', colspan=str(span), self.htmllist += (Html('td', colspan=str(span),
class_=style_name)] class_=style_name),)
self._col += span self._col += span
else: else:
self.htmllist += [Html('td', colspan=str(span), self.htmllist += (Html('td', colspan=str(span),
width=str(self._tbl.get_column_width( width=str(self._tbl.get_column_width(
self._col))+ '%%', self._col))+ '%%',
class_=style_name)] class_=style_name),)
self._col += 1 self._col += 1
def end_cell(self): def end_cell(self):
""" """
Overwrite base method Overwrite base method
""" """
self.write_text('\n')
self.__reduce_list() self.__reduce_list()
def start_paragraph(self, style_name, leader=None): def start_paragraph(self, style_name, leader=None):
@ -376,22 +391,22 @@ class HtmlDoc(BaseDoc, TextDoc):
level = style.get_header_level() level = style.get_header_level()
if level == 0: if level == 0:
#a normal paragraph #a normal paragraph
self.htmllist += [Html('p', class_=style_name)] self.htmllist += (Html('p', class_=style_name),)
elif level == 1: elif level == 1:
if self.__title_written == -1 and \ if self.__title_written == -1 and \
style_name.upper().find('TITLE') != -1: style_name.upper().find('TITLE') != -1:
self.__title_written == 0 self.__title_written = 0
self.htmllist += [Html('div', id="header")] self.htmllist += (Html('div', id="header"),)
self.htmllist += [Html('h1', id='SiteTitle')] self.htmllist += (Html('h1', id='SiteTitle'),)
else: else:
self.htmllist += [Html('h1', class_=style_name)] self.htmllist += (Html('h1', class_=style_name),)
elif 2<= level <= 5: elif 2<= level <= 5:
tag = 'h'+str(level+1) tag = 'h'+str(level+1)
self.htmllist += [Html(tag, class_=style_name)] self.htmllist += (Html(tag, class_=style_name),)
else: else:
# a low level header # a low level header
self.htmllist += [Html('div', id='grampsheading', self.htmllist += (Html('div', id='grampsheading',
class_=style_name)] class_=style_name),)
if leader is not None: if leader is not None:
self.write_text(leader+' ') self.write_text(leader+' ')
@ -399,7 +414,6 @@ class HtmlDoc(BaseDoc, TextDoc):
""" """
Overwrite base method Overwrite base method
""" """
self.write_text('\n')
if self._empty == 1: if self._empty == 1:
self.__empty_char() self.__empty_char()
self._empty = 0 self._empty = 0
@ -444,7 +458,8 @@ class HtmlDoc(BaseDoc, TextDoc):
# User should use write_styled_note for correct behavior, in this # User should use write_styled_note for correct behavior, in this
# more basic method we convert all to a monospace character # more basic method we convert all to a monospace character
self.htmllist += [Html('pre', class_=style_name, self.htmllist += [Html('pre', class_=style_name,
style = 'font-family: courier, monospace')] style = 'font-family: courier, monospace',
indent=None, inline=True)]
self.write_text(text) self.write_text(text)
#end pre element #end pre element
self.__reduce_list() self.__reduce_list()
@ -476,7 +491,7 @@ class HtmlDoc(BaseDoc, TextDoc):
#preformatted, retain whitespace. #preformatted, retain whitespace.
#so use \n\n for paragraph detection #so use \n\n for paragraph detection
#FIXME: following split should be regex to match \n\s*\n instead? #FIXME: following split should be regex to match \n\s*\n instead?
self.htmllist += [Html('pre')] self.htmllist += [Html('pre', indent=None, inline=True)]
for line in markuptext.split('\n\n'): for line in markuptext.split('\n\n'):
self.start_paragraph(style_name) self.start_paragraph(style_name)
for realline in line.split('\n'): for realline in line.split('\n'):
@ -503,7 +518,7 @@ class HtmlDoc(BaseDoc, TextDoc):
size = int(max(w_cm, h_cm) * float(150.0/2.54)) size = int(max(w_cm, h_cm) * float(150.0/2.54))
refname = "is%s" % os.path.basename(name) refname = "is%s" % os.path.basename(name)
imdir = self._backend.datadir() imdir = self._backend.datadirfull()
try: try:
ImgManip.resize_to_jpeg(name, imdir + os.sep + refname, size, size) ImgManip.resize_to_jpeg(name, imdir + os.sep + refname, size, size)

View File

@ -183,12 +183,13 @@ class Html(list):
) )
# #
@staticmethod @staticmethod
def head(title='Title', encoding='utf-8', *args, **keywargs): def head(title=_('Title'), encoding='utf-8', *args, **keywargs):
""" """
Build and return a properly-formated <head> object Build and return a properly-formated <head> object
@type title: string @type title: string or None
@param title: title for HTML page. Default='Title' @param title: title for HTML page. Default='Title'. If None no
title tag is written
@type encoding: string @type encoding: string
@param encoding: encoding to be used. Default = 'utf-8' @param encoding: encoding to be used. Default = 'utf-8'
@rtype reference to new Html instance @rtype reference to new Html instance
@ -196,15 +197,17 @@ class Html(list):
""" """
meta1 = 'http-equiv="content-type" content="text/html;charset=%s"' meta1 = 'http-equiv="content-type" content="text/html;charset=%s"'
meta2 = 'http-equiv="Content-Style-Type" content="text/css"' meta2 = 'http-equiv="Content-Style-Type" content="text/css"'
head = Html('head', *args, **keywargs) + ( head = Html('head', *args, **keywargs)
Html('title', title, inline=True, indent=True), if title != None:
head += (Html('title', title, inline=True, indent=True))
head += (
Html('meta', attr=meta1 % encoding, indent=True), Html('meta', attr=meta1 % encoding, indent=True),
Html('meta', attr=meta2, indent=True) Html('meta', attr=meta2, indent=True)
) )
return head return head
# #
@staticmethod @staticmethod
def page(title='Title', encoding='utf-8', lang='en', *args, **keywargs): def page(title=_('Title'), encoding='utf-8', lang='en', *args, **keywargs):
""" """
This function prepares a new Html class based page and returns This function prepares a new Html class based page and returns
@ -242,9 +245,10 @@ class Html(list):
@type args: optional positional parameters @type args: optional positional parameters
@param args: 0 more positional arguments to be inserted between @param args: 0 more positional arguments to be inserted between
opening and closing HTML tags. opening and closing HTML tags.
@type indent: boolean @type indent: boolean or None
@param indent: True ==> indent this object with respect to its parent @param indent: True ==> indent this object with respect to its parent
False ==> do not indent this object False ==> do not indent this object
None ==> no indent for this object (use eg for pre tag)
Defaults to False Defaults to False
@type inline: boolean @type inline: boolean
@param inline: True ==> instructs the write() method to output this @param inline: True ==> instructs the write() method to output this
@ -399,7 +403,7 @@ class Html(list):
@type indent: string @type indent: string
@param indenf: string to use for indentation. Default = '\t' (tab) @param indenf: string to use for indentation. Default = '\t' (tab)
@type tabs: string @type tabs: string
@oaram tabs: starting indentation @param tabs: starting indentation
""" """
if self.indent is None: if self.indent is None:
tabs = '' tabs = ''

View File

@ -67,7 +67,7 @@ class HtmlBackend(DocBackend):
""" """
STYLETAG_TO_PROPERTY = { STYLETAG_TO_PROPERTY = {
DocBackend.FONTCOLOR : 'font-color:%s;', DocBackend.FONTCOLOR : 'color:%s;',
DocBackend.HIGHLIGHT : 'background-color:%s;', DocBackend.HIGHLIGHT : 'background-color:%s;',
DocBackend.FONTFACE : "font-family:'%s';", DocBackend.FONTFACE : "font-family:'%s';",
DocBackend.FONTSIZE : 'font-size:%spx;', DocBackend.FONTSIZE : 'font-size:%spx;',
@ -103,7 +103,7 @@ class HtmlBackend(DocBackend):
self.html_header = None self.html_header = None
self.html_body = None self.html_body = None
self._subdir = None self._subdir = None
self.title = 'GRAMPS Html Document' self.title = None
def _create_xmltag(self, tagtype, value): def _create_xmltag(self, tagtype, value):
""" """
@ -115,6 +115,9 @@ class HtmlBackend(DocBackend):
if tagtype == DocBackend.FONTSIZE: if tagtype == DocBackend.FONTSIZE:
#size is in points #size is in points
value = str(value) value = str(value)
elif tagtype == DocBackend.FONTFACE:
#fonts can have strange symbols in them, ' needs to be escaped
value = value.replace("'", "\\'")
return ('<span style="%s">' % (self.STYLETAG_TO_PROPERTY[tagtype] % return ('<span style="%s">' % (self.STYLETAG_TO_PROPERTY[tagtype] %
(value)), (value)),
@ -128,7 +131,7 @@ class HtmlBackend(DocBackend):
if not len(fparts) >= 2 and not (fparts[-1] == 'html' or if not len(fparts) >= 2 and not (fparts[-1] == 'html' or
fparts[-1] == 'htm' or fparts[-1] == 'php'): fparts[-1] == 'htm' or fparts[-1] == 'php'):
self._filename = self._filename + ".htm" self._filename = self._filename + ".htm"
fparts = self._filename.split('.') fparts = os.path.basename(self._filename).split('.')
self._subdir = '.'.join(fparts[:-1]) self._subdir = '.'.join(fparts[:-1])
def set_title(self, title): def set_title(self, title):
@ -143,15 +146,15 @@ class HtmlBackend(DocBackend):
close close
""" """
DocBackend.open(self) DocBackend.open(self)
if not os.path.isdir(self._subdir): if not os.path.isdir(self.datadirfull()):
os.mkdir(self._subdir) os.mkdir(self.datadirfull())
self.html_page, self.html_header, self.html_body = Html.page( self.html_page, self.html_header, self.html_body = Html.page(
lang=xml_lang(), title=self.title) lang=xml_lang(), title=self.title)
def __write(self, string): def __write(self, string):
""" a write to the file """ a write to the file
""" """
DocBackend.write(self, string) DocBackend.write(self, string + '\n')
def write(self, obj): def write(self, obj):
""" write to the html page. One can pass a html object, or a string """ write to the html page. One can pass a html object, or a string
@ -162,7 +165,7 @@ class HtmlBackend(DocBackend):
""" """
write out the html to the page write out the html to the page
""" """
self.html_page.write(self.__write, indent='') self.html_page.write(self.__write, indent=' ')
DocBackend.close(self) DocBackend.close(self)
def datadir(self): def datadir(self):
@ -170,6 +173,12 @@ class HtmlBackend(DocBackend):
the directory where to save extra files the directory where to save extra files
""" """
return self._subdir return self._subdir
def datadirfull(self):
"""
full path of the datadir directory
"""
return os.path.join(os.path.dirname(self.getf()), self.datadir())
# ------------------------------------------ # ------------------------------------------
# #

View File

@ -129,29 +129,29 @@ class CustomTextOptions(MenuReportOptions):
def make_default_style(self,default_style): def make_default_style(self,default_style):
"""Make the default output style for the Custom Text report.""" """Make the default output style for the Custom Text report."""
font = BaseDoc.FontStyle() font = FontStyle()
font.set(face=BaseDoc.FONT_SANS_SERIF,size=12,bold=0,italic=0) font.set(face=FONT_SANS_SERIF,size=12,bold=0,italic=0)
para = BaseDoc.ParagraphStyle() para = ParagraphStyle()
para.set_font(font) para.set_font(font)
para.set_alignment(BaseDoc.PARA_ALIGN_CENTER) para.set_alignment(PARA_ALIGN_CENTER)
para.set(pad=0.5) para.set(pad=0.5)
para.set_description(_('The style used for the first portion of the custom text.')) para.set_description(_('The style used for the first portion of the custom text.'))
default_style.add_paragraph_style("CBT-Initial",para) default_style.add_paragraph_style("CBT-Initial",para)
font = BaseDoc.FontStyle() font = FontStyle()
font.set(face=BaseDoc.FONT_SANS_SERIF,size=12,bold=0,italic=0) font.set(face=FONT_SANS_SERIF,size=12,bold=0,italic=0)
para = BaseDoc.ParagraphStyle() para = ParagraphStyle()
para.set_font(font) para.set_font(font)
para.set(pad=0.5) para.set(pad=0.5)
para.set_alignment(BaseDoc.PARA_ALIGN_CENTER) para.set_alignment(PARA_ALIGN_CENTER)
para.set_description(_('The style used for the middle portion of the custom text.')) para.set_description(_('The style used for the middle portion of the custom text.'))
default_style.add_paragraph_style("CBT-Middle",para) default_style.add_paragraph_style("CBT-Middle",para)
font = BaseDoc.FontStyle() font = FontStyle()
font.set(face=BaseDoc.FONT_SANS_SERIF,size=12,bold=0,italic=0) font.set(face=FONT_SANS_SERIF,size=12,bold=0,italic=0)
para = BaseDoc.ParagraphStyle() para = ParagraphStyle()
para.set_font(font) para.set_font(font)
para.set_alignment(BaseDoc.PARA_ALIGN_CENTER) para.set_alignment(PARA_ALIGN_CENTER)
para.set(pad=0.5) para.set(pad=0.5)
para.set_description(_('The style used for the last portion of the custom text.')) para.set_description(_('The style used for the last portion of the custom text.'))
default_style.add_paragraph_style("CBT-Final",para) default_style.add_paragraph_style("CBT-Final",para)

View File

@ -127,7 +127,7 @@ class DescendantReport(Report):
self.doc.start_paragraph("DR-Title") self.doc.start_paragraph("DR-Title")
name = name_displayer.display(self.center_person) name = name_displayer.display(self.center_person)
title = _("Descendants of %s") % name title = _("Descendants of %s") % name
mark = BaseDoc.IndexMark(title,BaseDoc.INDEX_TYPE_TOC,1) mark = IndexMark(title,INDEX_TYPE_TOC,1)
self.doc.write_text(title,mark) self.doc.write_text(title,mark)
self.doc.end_paragraph() self.doc.end_paragraph()
self.dump(1,self.center_person) self.dump(1,self.center_person)
@ -188,24 +188,24 @@ class DescendantOptions(MenuReportOptions):
def make_default_style(self,default_style): def make_default_style(self,default_style):
"""Make the default output style for the Descendant Report.""" """Make the default output style for the Descendant Report."""
f = BaseDoc.FontStyle() f = FontStyle()
f.set_size(12) f.set_size(12)
f.set_type_face(BaseDoc.FONT_SANS_SERIF) f.set_type_face(FONT_SANS_SERIF)
f.set_bold(1) f.set_bold(1)
p = BaseDoc.ParagraphStyle() p = ParagraphStyle()
p.set_header_level(1) p.set_header_level(1)
p.set_bottom_border(1) p.set_bottom_border(1)
p.set_top_margin(ReportUtils.pt2cm(3)) p.set_top_margin(ReportUtils.pt2cm(3))
p.set_bottom_margin(ReportUtils.pt2cm(3)) p.set_bottom_margin(ReportUtils.pt2cm(3))
p.set_font(f) p.set_font(f)
p.set_alignment(BaseDoc.PARA_ALIGN_CENTER) p.set_alignment(PARA_ALIGN_CENTER)
p.set_description(_("The style used for the title of the page.")) p.set_description(_("The style used for the title of the page."))
default_style.add_paragraph_style("DR-Title",p) default_style.add_paragraph_style("DR-Title",p)
f = BaseDoc.FontStyle() f = FontStyle()
f.set_size(10) f.set_size(10)
for i in range(1,33): for i in range(1,33):
p = BaseDoc.ParagraphStyle() p = ParagraphStyle()
p.set_font(f) p.set_font(f)
p.set_top_margin(ReportUtils.pt2cm(f.get_size()*0.125)) p.set_top_margin(ReportUtils.pt2cm(f.get_size()*0.125))
p.set_bottom_margin(ReportUtils.pt2cm(f.get_size()*0.125)) p.set_bottom_margin(ReportUtils.pt2cm(f.get_size()*0.125))
@ -215,7 +215,7 @@ class DescendantOptions(MenuReportOptions):
"level %d display.") % i) "level %d display.") % i)
default_style.add_paragraph_style("DR-Level%d" % min(i,32), p) default_style.add_paragraph_style("DR-Level%d" % min(i,32), p)
p = BaseDoc.ParagraphStyle() p = ParagraphStyle()
p.set_font(f) p.set_font(f)
p.set_top_margin(ReportUtils.pt2cm(f.get_size()*0.125)) p.set_top_margin(ReportUtils.pt2cm(f.get_size()*0.125))
p.set_bottom_margin(ReportUtils.pt2cm(f.get_size()*0.125)) p.set_bottom_margin(ReportUtils.pt2cm(f.get_size()*0.125))

View File

@ -134,7 +134,7 @@ class EndOfLineReport(Report):
self.doc.start_paragraph("EOL-Title") self.doc.start_paragraph("EOL-Title")
title = _("End of Line Report for %s") % pname title = _("End of Line Report for %s") % pname
mark = BaseDoc.IndexMark(title, BaseDoc.INDEX_TYPE_TOC, 1) mark = IndexMark(title, INDEX_TYPE_TOC, 1)
self.doc.write_text(title, mark) self.doc.write_text(title, mark)
self.doc.end_paragraph() self.doc.end_paragraph()
@ -243,49 +243,49 @@ class EndOfLineOptions(MenuReportOptions):
def make_default_style(self, default_style): def make_default_style(self, default_style):
"""Make the default output style for the End of Line Report.""" """Make the default output style for the End of Line Report."""
# Paragraph Styles # Paragraph Styles
f = BaseDoc.FontStyle() f = FontStyle()
f.set_size(16) f.set_size(16)
f.set_type_face(BaseDoc.FONT_SANS_SERIF) f.set_type_face(FONT_SANS_SERIF)
f.set_bold(1) f.set_bold(1)
p = BaseDoc.ParagraphStyle() p = ParagraphStyle()
p.set_header_level(1) p.set_header_level(1)
p.set_bottom_border(1) p.set_bottom_border(1)
p.set_bottom_margin(ReportUtils.pt2cm(8)) p.set_bottom_margin(ReportUtils.pt2cm(8))
p.set_font(f) p.set_font(f)
p.set_alignment(BaseDoc.PARA_ALIGN_CENTER) p.set_alignment(PARA_ALIGN_CENTER)
p.set_description(_("The style used for the title of the page.")) p.set_description(_("The style used for the title of the page."))
default_style.add_paragraph_style("EOL-Title", p) default_style.add_paragraph_style("EOL-Title", p)
font = BaseDoc.FontStyle() font = FontStyle()
font.set(face=BaseDoc.FONT_SANS_SERIF, size=12, italic=1) font.set(face=FONT_SANS_SERIF, size=12, italic=1)
p = BaseDoc.ParagraphStyle() p = ParagraphStyle()
p.set_bottom_margin(ReportUtils.pt2cm(6)) p.set_bottom_margin(ReportUtils.pt2cm(6))
p.set_font(font) p.set_font(font)
p.set_alignment(BaseDoc.PARA_ALIGN_CENTER) p.set_alignment(PARA_ALIGN_CENTER)
p.set_description(_('The style used for the section headers.')) p.set_description(_('The style used for the section headers.'))
default_style.add_paragraph_style("EOL-Subtitle", p) default_style.add_paragraph_style("EOL-Subtitle", p)
font = BaseDoc.FontStyle() font = FontStyle()
font.set_size(10) font.set_size(10)
p = BaseDoc.ParagraphStyle() p = ParagraphStyle()
p.set_font(font) p.set_font(font)
p.set_top_margin(ReportUtils.pt2cm(6)) p.set_top_margin(ReportUtils.pt2cm(6))
p.set_bottom_margin(ReportUtils.pt2cm(6)) p.set_bottom_margin(ReportUtils.pt2cm(6))
p.set_description(_('The basic style used for the text display.')) p.set_description(_('The basic style used for the text display.'))
default_style.add_paragraph_style("EOL-Normal", p) default_style.add_paragraph_style("EOL-Normal", p)
font = BaseDoc.FontStyle() font = FontStyle()
font.set_size(12) font.set_size(12)
font.set_italic(True) font.set_italic(True)
p = BaseDoc.ParagraphStyle() p = ParagraphStyle()
p.set_font(font) p.set_font(font)
p.set_top_margin(ReportUtils.pt2cm(6)) p.set_top_margin(ReportUtils.pt2cm(6))
p.set_description(_('The basic style used for generation headings.')) p.set_description(_('The basic style used for generation headings.'))
default_style.add_paragraph_style("EOL-Generation", p) default_style.add_paragraph_style("EOL-Generation", p)
font = BaseDoc.FontStyle() font = FontStyle()
font.set_size(8) font.set_size(8)
p = BaseDoc.ParagraphStyle() p = ParagraphStyle()
p.set_font(font) p.set_font(font)
p.set_top_margin(0) p.set_top_margin(0)
p.set_bottom_margin(ReportUtils.pt2cm(6)) p.set_bottom_margin(ReportUtils.pt2cm(6))
@ -293,14 +293,14 @@ class EndOfLineOptions(MenuReportOptions):
default_style.add_paragraph_style("EOL-Pedigree", p) default_style.add_paragraph_style("EOL-Pedigree", p)
#Table Styles #Table Styles
cell = BaseDoc.TableCellStyle() cell = TableCellStyle()
default_style.add_cell_style('EOL-TableCell', cell) default_style.add_cell_style('EOL-TableCell', cell)
cell = BaseDoc.TableCellStyle() cell = TableCellStyle()
cell.set_bottom_border(1) cell.set_bottom_border(1)
default_style.add_cell_style('EOL_GenerationCell', cell) default_style.add_cell_style('EOL_GenerationCell', cell)
table = BaseDoc.TableStyle() table = TableStyle()
table.set_width(100) table.set_width(100)
table.set_columns(2) table.set_columns(2)
table.set_column_width(0, 10) table.set_column_width(0, 10)

View File

@ -530,7 +530,7 @@ class FamilyGroup(Report):
title=_("Family Group Report - Generation %d") % generation title=_("Family Group Report - Generation %d") % generation
else: else:
title=_("Family Group Report") title=_("Family Group Report")
mark = BaseDoc.IndexMark(title,BaseDoc.INDEX_TYPE_TOC,1) mark = IndexMark(title, INDEX_TYPE_TOC,1)
self.doc.write_text( title, mark ) self.doc.write_text( title, mark )
self.doc.end_paragraph() self.doc.end_paragraph()
@ -668,35 +668,36 @@ class FamilyGroupOptions(MenuReportOptions):
def make_default_style(self,default_style): def make_default_style(self,default_style):
"""Make default output style for the Family Group Report.""" """Make default output style for the Family Group Report."""
para = BaseDoc.ParagraphStyle() para = ParagraphStyle()
#Paragraph Styles #Paragraph Styles
font = BaseDoc.FontStyle() font = FontStyle()
font.set_size(4) font.set_size(4)
para.set_font(font) para.set_font(font)
default_style.add_paragraph_style('FGR-blank',para) default_style.add_paragraph_style('FGR-blank',para)
font = BaseDoc.FontStyle() font = FontStyle()
font.set_type_face(BaseDoc.FONT_SANS_SERIF) font.set_type_face(FONT_SANS_SERIF)
font.set_size(16) font.set_size(16)
font.set_bold(1) font.set_bold(1)
para = BaseDoc.ParagraphStyle() para = ParagraphStyle()
para.set_font(font) para.set_font(font)
para.set_alignment(BaseDoc.PARA_ALIGN_CENTER) para.set_alignment(PARA_ALIGN_CENTER)
para.set_header_level(1)
para.set_description(_("The style used for the title of the page.")) para.set_description(_("The style used for the title of the page."))
default_style.add_paragraph_style('FGR-Title',para) default_style.add_paragraph_style('FGR-Title',para)
font = BaseDoc.FontStyle() font = FontStyle()
font.set_type_face(BaseDoc.FONT_SERIF) font.set_type_face(FONT_SERIF)
font.set_size(10) font.set_size(10)
font.set_bold(0) font.set_bold(0)
para = BaseDoc.ParagraphStyle() para = ParagraphStyle()
para.set_font(font) para.set_font(font)
para.set_description(_('The basic style used for the text display.')) para.set_description(_('The basic style used for the text display.'))
default_style.add_paragraph_style('FGR-Normal',para) default_style.add_paragraph_style('FGR-Normal',para)
para = BaseDoc.ParagraphStyle() para = ParagraphStyle()
font = BaseDoc.FontStyle() font = FontStyle()
font.set_type_face(BaseDoc.FONT_SERIF) font.set_type_face(FONT_SERIF)
font.set_size(10) font.set_size(10)
font.set_bold(0) font.set_bold(0)
para.set_font(font) para.set_font(font)
@ -706,26 +707,27 @@ class FamilyGroupOptions(MenuReportOptions):
para.set_description(_('The basic style used for the note display.')) para.set_description(_('The basic style used for the note display.'))
default_style.add_paragraph_style("FGR-Note",para) default_style.add_paragraph_style("FGR-Note",para)
font = BaseDoc.FontStyle() font = FontStyle()
font.set_type_face(BaseDoc.FONT_SANS_SERIF) font.set_type_face(FONT_SANS_SERIF)
font.set_size(10) font.set_size(10)
font.set_bold(1) font.set_bold(1)
para = BaseDoc.ParagraphStyle() para = ParagraphStyle()
para.set_font(font) para.set_font(font)
para.set_description(_('The style used for the text related to the children.')) para.set_description(_('The style used for the text related to the children.'))
default_style.add_paragraph_style('FGR-ChildText',para) default_style.add_paragraph_style('FGR-ChildText',para)
font = BaseDoc.FontStyle() font = FontStyle()
font.set_type_face(BaseDoc.FONT_SANS_SERIF) font.set_type_face(FONT_SANS_SERIF)
font.set_size(12) font.set_size(12)
font.set_bold(1) font.set_bold(1)
para = BaseDoc.ParagraphStyle() para = ParagraphStyle()
para.set_font(font) para.set_font(font)
para.set_header_level(3)
para.set_description(_("The style used for the parent's name")) para.set_description(_("The style used for the parent's name"))
default_style.add_paragraph_style('FGR-ParentName',para) default_style.add_paragraph_style('FGR-ParentName',para)
#Table Styles #Table Styles
cell = BaseDoc.TableCellStyle() cell = TableCellStyle()
cell.set_padding(0.2) cell.set_padding(0.2)
cell.set_top_border(1) cell.set_top_border(1)
cell.set_bottom_border(1) cell.set_bottom_border(1)
@ -733,41 +735,41 @@ class FamilyGroupOptions(MenuReportOptions):
cell.set_left_border(1) cell.set_left_border(1)
default_style.add_cell_style('FGR-ParentHead',cell) default_style.add_cell_style('FGR-ParentHead',cell)
cell = BaseDoc.TableCellStyle() cell = TableCellStyle()
cell.set_padding(0.1) cell.set_padding(0.1)
cell.set_bottom_border(1) cell.set_bottom_border(1)
cell.set_left_border(1) cell.set_left_border(1)
default_style.add_cell_style('FGR-TextContents',cell) default_style.add_cell_style('FGR-TextContents',cell)
cell = BaseDoc.TableCellStyle() cell = TableCellStyle()
cell.set_padding(0.1) cell.set_padding(0.1)
cell.set_bottom_border(0) cell.set_bottom_border(0)
cell.set_left_border(1) cell.set_left_border(1)
cell.set_padding(0.1) cell.set_padding(0.1)
default_style.add_cell_style('FGR-TextChild1',cell) default_style.add_cell_style('FGR-TextChild1',cell)
cell = BaseDoc.TableCellStyle() cell = TableCellStyle()
cell.set_padding(0.1) cell.set_padding(0.1)
cell.set_bottom_border(1) cell.set_bottom_border(1)
cell.set_left_border(1) cell.set_left_border(1)
cell.set_padding(0.1) cell.set_padding(0.1)
default_style.add_cell_style('FGR-TextChild2',cell) default_style.add_cell_style('FGR-TextChild2',cell)
cell = BaseDoc.TableCellStyle() cell = TableCellStyle()
cell.set_padding(0.1) cell.set_padding(0.1)
cell.set_bottom_border(1) cell.set_bottom_border(1)
cell.set_right_border(1) cell.set_right_border(1)
cell.set_left_border(1) cell.set_left_border(1)
default_style.add_cell_style('FGR-TextContentsEnd',cell) default_style.add_cell_style('FGR-TextContentsEnd',cell)
cell = BaseDoc.TableCellStyle() cell = TableCellStyle()
cell.set_padding(0.2) cell.set_padding(0.2)
cell.set_bottom_border(1) cell.set_bottom_border(1)
cell.set_right_border(1) cell.set_right_border(1)
cell.set_left_border(1) cell.set_left_border(1)
default_style.add_cell_style('FGR-ChildName',cell) default_style.add_cell_style('FGR-ChildName',cell)
table = BaseDoc.TableStyle() table = TableStyle()
table.set_width(100) table.set_width(100)
table.set_columns(3) table.set_columns(3)
table.set_column_width(0,20) table.set_column_width(0,20)
@ -775,7 +777,7 @@ class FamilyGroupOptions(MenuReportOptions):
table.set_column_width(2,40) table.set_column_width(2,40)
default_style.add_table_style('FGR-ParentTable',table) default_style.add_table_style('FGR-ParentTable',table)
table = BaseDoc.TableStyle() table = TableStyle()
table.set_width(100) table.set_width(100)
table.set_columns(4) table.set_columns(4)
table.set_column_width(0,7) table.set_column_width(0,7)