Status window for web page writing progress, speed improvements

svn: r487
This commit is contained in:
Don Allingham 2001-10-19 00:14:11 +00:00
parent 1eef972c86
commit 32fcabf5c9
2 changed files with 204 additions and 15 deletions

View File

@ -91,10 +91,10 @@ class IndividualPage:
#
#
#--------------------------------------------------------------------
def __init__(self,person,photos,restrict,private,uc,link,list,dir_name,doc):
def __init__(self,person,photos,restrict,private,uc,link,map,dir_name,doc):
self.person = person
self.doc = doc
self.list = list
self.list = map
self.private = private
self.alive = probably_alive(person) and restrict
self.photos = (photos == 2) or (photos == 1 and not self.alive)
@ -180,11 +180,12 @@ class IndividualPage:
self.doc.start_cell("NormalCell")
self.doc.start_paragraph("Data")
if person:
if person in self.list:
if self.list.has_key(person):
self.doc.start_link("%s.html" % person.getId())
self.doc.write_text(person.getPrimaryName().getRegularName())
if person in self.list:
self.doc.write_text(person.getPrimaryName().getRegularName())
self.doc.end_link()
else:
self.doc.write_text(person.getPrimaryName().getRegularName())
self.doc.end_paragraph()
self.doc.end_cell()
@ -440,11 +441,12 @@ class IndividualPage:
self.doc.start_cell("NormalCell",2)
self.doc.start_paragraph("Spouse")
if spouse:
if spouse in self.list:
if self.list.has_key(spouse):
self.doc.start_link("%s.html" % spouse.getId())
self.doc.write_text(spouse.getPrimaryName().getRegularName())
if spouse in self.list:
self.doc.write_text(spouse.getPrimaryName().getRegularName())
self.doc.end_link()
else:
self.doc.write_text(spouse.getPrimaryName().getRegularName())
else:
self.doc.write_text(_("unknown"))
self.doc.end_paragraph()
@ -475,11 +477,12 @@ class IndividualPage:
first = 0
else:
self.doc.write_text('\n')
if child in self.list:
if self.list.has_key(child):
self.doc.start_link("%s.html" % child.getId())
self.doc.write_text(child.getPrimaryName().getRegularName())
if child in self.list:
self.doc.write_text(child.getPrimaryName().getRegularName())
self.doc.end_link()
else:
self.doc.write_text(child.getPrimaryName().getRegularName())
self.doc.end_paragraph()
self.doc.end_cell()
self.doc.end_row()
@ -799,16 +802,33 @@ def on_ok_clicked(obj):
else:
photos = 2
total = float(len(ind_list))
index = 0.0
pxml = GladeXML(glade_file,"progress")
ptop = pxml.get_widget("progress")
pbar = pxml.get_widget("progressbar")
pbar.configure(0.0,0.0,total)
doc = HtmlLinkDoc(styles,templ_name)
my_map = {}
for l in ind_list:
my_map[l] = 1
for person in ind_list:
doc = HtmlLinkDoc(styles,templ_name)
tdoc = HtmlLinkDoc(styles,None,doc)
idoc = IndividualPage(person,photos,restrict,private,srccomments,\
include_link, ind_list,dir_name,doc)
include_link,my_map,dir_name,tdoc)
idoc.create_page()
idoc.close()
index = index + 1.0
pbar.set_value(index)
while events_pending():
mainiteration()
if len(ind_list) > 1:
dump_index(ind_list,styles,templ_name,dir_name)
utils.destroy_passed_object(ptop)
utils.destroy_passed_object(obj)
#------------------------------------------------------------------------
@ -849,3 +869,85 @@ register_report(
description=_("Generates web (HTML) pages for individuals, or a set of individuals.")
)
if __name__ == "__main__":
import profile
import sys
import ReadXML
def task(styles,ind_list):
my_map = {}
for l in ind_list:
my_map[l] = 1
doc = HtmlLinkDoc(styles,None)
for person in ind_list:
tdoc = HtmlLinkDoc(styles,None,doc)
idoc = IndividualPage(person,1,1,1,1,1,my_map,"/home/dona/scratch",tdoc)
idoc.create_page()
idoc.close()
styles = StyleSheet()
font = FontStyle()
font.set(bold=1, face=FONT_SANS_SERIF, size=16)
p = ParagraphStyle()
p.set(align=PARA_ALIGN_CENTER,font=font)
styles.add_style("Title",p)
font = FontStyle()
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
p = ParagraphStyle()
p.set(font=font,bborder=1)
styles.add_style("EventsTitle",p)
font = FontStyle()
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
p = ParagraphStyle()
p.set(font=font,bborder=1)
styles.add_style("NotesTitle",p)
font = FontStyle()
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
p = ParagraphStyle()
p.set(font=font,bborder=1)
styles.add_style("SourcesTitle",p)
font = FontStyle()
font.set(bold=1,face=FONT_SANS_SERIF,size=12,italic=1)
p = ParagraphStyle()
p.set(font=font,bborder=1)
styles.add_style("FamilyTitle",p)
font = FontStyle()
font.set(bold=1,face=FONT_SANS_SERIF,size=12)
p = ParagraphStyle()
p.set_font(font)
styles.add_style("Spouse",p)
font = FontStyle()
font.set(size=12,italic=1)
p = ParagraphStyle()
p.set_font(font)
styles.add_style("Label",p)
font = FontStyle()
font.set_size(12)
p = ParagraphStyle()
p.set_font(font)
styles.add_style("Data",p)
font = FontStyle()
font.set_size(10)
p = ParagraphStyle()
p.set_font(font)
styles.add_style("SourceParagraph",p)
font = FontStyle()
font.set_size(12)
p = ParagraphStyle()
p.set_font(font)
styles.add_style("NotesParagraph",p)
db = RelDataBase()
ReadXML.loadData(db,sys.argv[1])
profile.run('task(styles,db.getPersonMap().values())')

View File

@ -15,7 +15,7 @@
<widget>
<class>GtkWindow</class>
<name>top</name>
<title>Generate HTML reports</title>
<title>Gramps - Generate HTML reports</title>
<type>GTK_WINDOW_TOPLEVEL</type>
<position>GTK_WIN_POS_CENTER</position>
<modal>False</modal>
@ -552,4 +552,91 @@
</widget>
</widget>
<widget>
<class>GtkWindow</class>
<name>progress</name>
<title>Gramps - Generate HTML reports</title>
<type>GTK_WINDOW_TOPLEVEL</type>
<position>GTK_WIN_POS_NONE</position>
<modal>False</modal>
<allow_shrink>False</allow_shrink>
<allow_grow>True</allow_grow>
<auto_shrink>False</auto_shrink>
<widget>
<class>GtkVBox</class>
<name>vbox3</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<widget>
<class>GtkLabel</class>
<name>label7</name>
<label>Creating Web Pages</label>
<justify>GTK_JUSTIFY_CENTER</justify>
<wrap>False</wrap>
<xalign>0.5</xalign>
<yalign>0.5</yalign>
<xpad>0</xpad>
<ypad>10</ypad>
<child>
<padding>0</padding>
<expand>False</expand>
<fill>False</fill>
</child>
</widget>
<widget>
<class>GtkHSeparator</class>
<name>hseparator2</name>
<child>
<padding>10</padding>
<expand>False</expand>
<fill>True</fill>
</child>
</widget>
<widget>
<class>GtkHBox</class>
<name>hbox2</name>
<homogeneous>False</homogeneous>
<spacing>0</spacing>
<child>
<padding>10</padding>
<expand>False</expand>
<fill>False</fill>
</child>
<widget>
<class>Placeholder</class>
</widget>
<widget>
<class>GtkProgressBar</class>
<name>progressbar</name>
<width>300</width>
<value>0</value>
<lower>0</lower>
<upper>100</upper>
<bar_style>GTK_PROGRESS_CONTINUOUS</bar_style>
<orientation>GTK_PROGRESS_LEFT_TO_RIGHT</orientation>
<activity_mode>False</activity_mode>
<show_text>True</show_text>
<format>%v of %u (%P %%)</format>
<text_xalign>0.5</text_xalign>
<text_yalign>0.5</text_yalign>
<child>
<padding>10</padding>
<expand>True</expand>
<fill>True</fill>
</child>
</widget>
<widget>
<class>Placeholder</class>
</widget>
</widget>
</widget>
</widget>
</GTK-Interface>