various fixes

svn: r9252
This commit is contained in:
Stéphane Charette 2007-10-26 06:15:50 +00:00
parent 224c185a24
commit 36ad798989
2 changed files with 386 additions and 69 deletions

View File

@ -1,3 +1,11 @@
2007-10-26 Stéphane Charette <stephanecharette@gmail.com>
* src/plugins/NarrativeWeb.py: various: EOL should be <br> not <p>,
date is now displayed in the user's locale, source references no
longer skipped on media pages, allow half-sibling to be shown, allow
columns to be configurable, event notes are no longer skipped, progress
indicator no longer gets stuck at 100% for long periods of time with
large databases
2007-10-26 Benny Malengier <benny.malengier@gramps-project.org>
* src/plugins/rel_nl.py: various improvements

View File

@ -74,6 +74,7 @@ import Errors
import Utils
import ImgManip
import GrampsLocale
import DateHandler
from QuestionDialog import ErrorDialog, WarningDialog
from NameDisplay import displayer as _nd
from DateHandler import displayer as _dd
@ -147,6 +148,12 @@ class BasePage:
self.encoding = options.handler.options_dict['NWEBencoding']
self.css = options.handler.options_dict['NWEBcss']
self.noid = options.handler.options_dict['NWEBnoid']
self.linkhome = options.handler.options_dict['NWEBlinkhome']
self.showbirth = options.handler.options_dict['NWEBshowbirth']
self.showdeath = options.handler.options_dict['NWEBshowdeath']
self.showspouse = options.handler.options_dict['NWEBshowspouse']
self.showparents = options.handler.options_dict['NWEBshowparents']
self.showhalfsiblings = options.handler.options_dict['NWEBshowhalfsiblings']
self.use_intro = options.handler.options_dict['NWEBintronote'] != u""
self.use_contact = options.handler.options_dict['NWEBcontact'] != u""
self.use_gallery = options.handler.options_dict['NWEBgallery']
@ -158,7 +165,7 @@ class BasePage:
self.graphgens = options.handler.options_dict['NWEBgraphgens']
self.use_home = self.options.handler.options_dict['NWEBhomenote'] != ""
self.page_title = ""
self.warn_dir = True
self.warn_dir = True
def store_file(self,archive,html_dir,from_path,to_path):
if archive:
@ -316,12 +323,22 @@ class BasePage:
of.write(' </div>\n')
of.write('<div id="navheader">\n')
value = unicode(time.strftime('%x',time.localtime(time.time())),
GrampsLocale.codeset)
value = DateHandler.parser.parse(time.strftime('%b %d %Y'))
value = _dd.display(value)
msg = _('Generated by <a href="http://gramps-project.org">'
'GRAMPS</a> on %(date)s') % { 'date' : value }
if self.linkhome:
home_person_handle = db.get_default_handle()
if home_person_handle:
home_person = db.get_default_person()
home_person_url = self.build_name(
self.build_path(home_person_handle, "ppl", up),
home_person.handle)
home_person_name = home_person.get_primary_name().get_regular_name()
msg += _('<br>for <a href="%s">%s</a>') % (home_person_url, home_person_name)
of.write('<div class="navbyline">%s</div>\n' % msg)
of.write('<h1 class="navtitle">%s</h1>\n' % self.title_str)
of.write('<div class="nav">\n')
@ -345,6 +362,8 @@ class BasePage:
self.show_link(of,intro_page,_('Introduction'),path)
self.show_link(of,surname_page,_('Surnames'),path)
self.show_link(of,'individuals',_('Individuals'),path)
# some people want count to be displayed -- make it easy for them to uncomment
# self.show_link(of,'surnames_count',_('Count'),path)
self.show_link(of,'sources',_('Sources'),path)
self.show_link(of,'places',_('Places'),path)
if self.use_gallery:
@ -444,7 +463,7 @@ class BasePage:
if format:
text = u"<pre>%s</pre>" % text
else:
text = u"</p><p>".join(text.split("\n"))
text = u"<br>".join(text.split("\n"))
of.write('<p>%s</p>\n' % text)
of.write('</div>\n')
@ -475,6 +494,46 @@ class BasePage:
of.write('</table>\n')
of.write('</div>\n')
def display_source_refs(self,of,db,sreflist):
if not sreflist:
return
of.write('<div id="sourcerefs">\n')
of.write('<h4>%s</h4>\n' % _('Source References'))
of.write('<table class="infolist">\n')
index = 1
for sref in sreflist:
lnk = (self.cur_name, self.page_title, self.gid)
shandle = sref.get_reference_handle()
if not shandle:
continue
if self.src_list.has_key(shandle):
if lnk not in self.src_list[shandle]:
self.src_list[shandle].append(lnk)
else:
self.src_list[shandle] = [lnk]
source = self.db.get_source_from_handle(shandle)
title = source.get_title()
of.write('<tr><td class="field">')
of.write('<a name="sref%d"></a>%d.</td>' % (index,index))
of.write('<td class="field">')
self.source_link(of,source.handle,title,source.gramps_id,True)
tmp = []
confidence = Utils.confidence.get(sref.confidence, _('Unknown'))
for (label,data) in [(_('Date'),_dd.display(sref.date)),
(_('Page'),sref.page),
(_('Confidence'),confidence),
(_('Text'),sref.text)]:
if data:
tmp.append("%s: %s" % (label,data))
if len(tmp) > 0:
of.write('<br />' + '<br />'.join(tmp))
of.write('</td></tr>\n')
index += 1
of.write('</table>\n')
of.write('</div>\n')
def display_references(self,of,db,handlelist):
if not handlelist:
return
@ -602,37 +661,123 @@ class IndividualListPage(BasePage):
of.write('<table class="infolist">\n<thead><tr>\n')
of.write('<th>%s</th>\n' % _('Surname'))
of.write('<th>%s</th>\n' % _('Name'))
of.write('<th>%s</th>\n' % _('Birth date'))
column_count = 2
if self.showbirth:
of.write('<th>%s</th>\n' % _('Birth'))
column_count += 1
if self.showdeath:
of.write('<th>%s</th>\n' % _('Death'))
column_count += 1
if self.showspouse:
of.write('<th>%s</th>\n' % _('Partner'))
column_count += 1
if self.showparents:
of.write('<th>%s</th>\n' % _('Parents'))
column_count += 1
of.write('</tr></thead>\n<tbody>\n')
person_handle_list = sort_people(db,person_handle_list)
for (surname,handle_list) in person_handle_list:
first = True
of.write('<tr><td colspan="2">&nbsp;</td></tr>\n')
of.write('<tr><td colspan="%d">&nbsp;</td></tr>\n' % column_count)
for person_handle in handle_list:
person = db.get_person_from_handle(person_handle)
if self.exclude_private:
person = ReportUtils.sanitize_person(db,person)
# surname column
of.write('<tr><td class="category">')
if first:
of.write('<a name="%s">%s</a>' % (self.lnkfmt(surname),surname))
else:
of.write('&nbsp;')
of.write('</td><td class="data">')
of.write('</td>')
# firstname column
of.write('<td class="data">')
path = self.build_path(person.handle,"ppl",False)
self.person_link(of, self.build_name(path,person.handle),
_nd.display_given(person), person.gramps_id,False)
of.write('</td><td class="field">')
of.write('</td>')
if person.handle in restrict_list:
of.write(_('restricted'))
else:
birth_ref = person.get_birth_ref()
if birth_ref:
birth = db.get_event_from_handle(birth_ref.ref)
of.write(_dd.display(birth.get_date_object()))
of.write('</td></tr>\n')
# birth column
if self.showbirth:
of.write('<td class="field">')
if person.handle in restrict_list:
of.write(_('restricted'))
else:
birth_ref = person.get_birth_ref()
if birth_ref:
birth = db.get_event_from_handle(birth_ref.ref)
of.write(_dd.display(birth.get_date_object()))
of.write('</td>')
# death column
if self.showdeath:
of.write('<td class="field">')
if person.handle in restrict_list:
of.write(_('restricted'))
else:
death_ref = person.get_death_ref()
if death_ref:
death = db.get_event_from_handle(death_ref.ref)
of.write(_dd.display(death.get_date_object()))
of.write('</td>')
# spouse (partner) column
if self.showspouse:
of.write('<td class="field">')
if person.handle in restrict_list:
of.write(_('restricted'))
else:
family_list = person.get_family_handle_list()
first_family = True
spouse_name = None
if family_list:
for family_handle in family_list:
family = db.get_family_from_handle(family_handle)
spouse_id = ReportUtils.find_spouse(person, family)
if spouse_id:
spouse = db.get_person_from_handle(spouse_id)
if self.exclude_private:
spouse = ReportUtils.sanitize_person(db, spouse)
spouse_name = spouse.get_primary_name().get_regular_name()
if not first_family:
of.write(', ')
of.write('%s' % spouse_name)
first_family = False
of.write('</td>')
# parents column
if self.showparents:
of.write('<td class="field">')
parent_handle_list = person.get_parent_family_handle_list()
if parent_handle_list:
parent_handle = parent_handle_list[0]
family = db.get_family_from_handle(parent_handle)
father_name = ''
mother_name = ''
father_id = family.get_father_handle()
mother_id = family.get_mother_handle()
father = db.get_person_from_handle(father_id)
mother = db.get_person_from_handle(mother_id)
if father and self.exclude_private:
father = ReportUtils.sanitize_person(db, father)
father_name = father.get_primary_name().get_regular_name()
if mother and self.exclude_private:
mother = ReportUtils.sanitize_person(db, mother)
mother_name = mother.get_primary_name().get_regular_name()
if mother and father:
of.write('%s, %s' % (father_name, mother_name))
elif mother:
of.write('%s' % mother_name)
elif father:
of.write('%s' % father_name)
of.write('</td>')
# finished writing all columns
of.write('</tr>\n')
first = False
of.write('</tbody>\n</table>\n')
@ -662,10 +807,19 @@ class SurnamePage(BasePage):
of.write('<p>%s</p>\n' % msg)
of.write('<table class="infolist">\n<thead><tr>\n')
of.write('<th>%s</th>\n' % _('Name'))
of.write('<th>%s</th>\n' % _('Birth date'))
if self.showbirth:
of.write('<th>%s</th>\n' % _('Birth'))
if self.showdeath:
of.write('<th>%s</th>\n' % _('Death'))
if self.showspouse:
of.write('<th>%s</th>\n' % _('Partner'))
if self.showparents:
of.write('<th>%s</th>\n' % _('Parents'))
of.write('</tr></thead>\n<tbody>\n')
for person_handle in person_handle_list:
# firstname column
person = db.get_person_from_handle(person_handle)
if self.exclude_private:
person = ReportUtils.sanitize_person(db,person)
@ -674,16 +828,85 @@ class SurnamePage(BasePage):
self.person_link(of, self.build_name(path,person.handle),
person.get_primary_name().get_first_name(),
person.gramps_id,False)
of.write('</td><td class="field">')
if person.handle in restrict_list:
of.write(_('restricted'))
else:
birth_ref = person.get_birth_ref()
if birth_ref:
birth = db.get_event_from_handle(birth_ref.ref)
birth_date = _dd.display(birth.get_date_object())
of.write(birth_date)
of.write('</td></tr>\n')
of.write('</td>')
# birth column
if self.showbirth:
of.write('<td class="field">')
if person.handle in restrict_list:
of.write(_('restricted'))
else:
birth_ref = person.get_birth_ref()
if birth_ref:
birth = db.get_event_from_handle(birth_ref.ref)
of.write(_dd.display(birth.get_date_object()))
of.write('</td>')
# death column
if self.showdeath:
of.write('<td class="field">')
if person.handle in restrict_list:
of.write(_('restricted'))
else:
death_ref = person.get_death_ref()
if death_ref:
death = db.get_event_from_handle(death_ref.ref)
of.write(_dd.display(death.get_date_object()))
of.write('</td>')
# spouse (partner) column
if self.showspouse:
of.write('<td class="field">')
if person.handle in restrict_list:
of.write(_('restricted'))
else:
family_list = person.get_family_handle_list()
first_family = True
spouse_name = None
if family_list:
for family_handle in family_list:
family = db.get_family_from_handle(family_handle)
spouse_id = ReportUtils.find_spouse(person, family)
if spouse_id:
spouse = db.get_person_from_handle(spouse_id)
if self.exclude_private:
spouse = ReportUtils.sanitize_person(db, spouse)
spouse_name = spouse.get_primary_name().get_regular_name()
if not first_family:
of.write(', ')
of.write('%s' % spouse_name)
first_family = False
of.write('</td>')
# parents column
if self.showparents:
of.write('<td class="field">')
parent_handle_list = person.get_parent_family_handle_list()
if parent_handle_list:
parent_handle = parent_handle_list[0]
family = db.get_family_from_handle(parent_handle)
father_name = ''
mother_name = ''
father_id = family.get_father_handle()
mother_id = family.get_mother_handle()
father = db.get_person_from_handle(father_id)
mother = db.get_person_from_handle(mother_id)
if father and self.exclude_private:
father = ReportUtils.sanitize_person(db, father)
father_name = father.get_primary_name().get_regular_name()
if mother and self.exclude_private:
mother = ReportUtils.sanitize_person(db, mother)
mother_name = mother.get_primary_name().get_regular_name()
if mother and father:
of.write('%s, %s' % (father_name, mother_name))
elif mother:
of.write('%s' % mother_name)
elif father:
of.write('%s' % father_name)
of.write('</td>')
# finished writing all columns
of.write('</tr>\n')
of.write('<tbody>\n</table>\n')
self.display_footer(of,db)
self.close_file(of)
@ -922,10 +1145,17 @@ class MediaPage(BasePage):
self.display_note_object(of, photo.get_note_object())
self.display_attr_list(of, ReportUtils.sanitize_list( photo.get_attribute_list(), self.exclude_private))
self.display_media_sources(of,db,photo)
self.display_references(of,db,media_list)
self.display_footer(of,db)
self.close_file(of)
def display_media_sources(self,of,db,photo):
self.db = db
self.src_list = {}
sreflist = photo.get_source_references()
self.display_source_refs(of,db,sreflist)
def display_attr_list(self,of,attrlist=None):
if not attrlist:
return
@ -1105,7 +1335,7 @@ class IntroductionPage(BasePage):
of.write('<pre>\n%s\n</pre>\n' % text)
else:
of.write('<p>')
of.write('</p><p>'.join(text.split('\n')))
of.write('<br>'.join(text.split('\n')))
of.write('</p>')
self.display_footer(of,db)
@ -1152,7 +1382,7 @@ class HomePage(BasePage):
of.write('<pre>\n%s\n</pre>\n' % text)
else:
of.write('<p>')
of.write('</p><p>'.join(text.split('\n')))
of.write('<br>'.join(text.split('\n')))
of.write('</p>')
self.display_footer(of,db)
@ -1391,11 +1621,11 @@ class ContactPage(BasePage):
if nobj:
format = nobj.get_format()
text = nobj.get()
if format:
text = u"<pre>%s</pre>" % text
else:
text = u"</p><p>".join(text.split("\n"))
text = u"<br>".join(text.split("\n"))
of.write('<p>%s</p>\n' % text)
of.write('</div>\n')
@ -1598,42 +1828,7 @@ class IndividualPage(BasePage):
sreflist = self.src_refs + self.person.get_source_references()
if not sreflist or self.restrict:
return
of.write('<div id="sourcerefs">\n')
of.write('<h4>%s</h4>\n' % _('Source References'))
of.write('<table class="infolist">\n')
index = 1
for sref in sreflist:
lnk = (self.cur_name, self.page_title, self.gid)
shandle = sref.get_reference_handle()
if not shandle:
continue
if self.src_list.has_key(shandle):
if lnk not in self.src_list[shandle]:
self.src_list[shandle].append(lnk)
else:
self.src_list[shandle] = [lnk]
source = self.db.get_source_from_handle(shandle)
title = source.get_title()
of.write('<tr><td class="field">')
of.write('<a name="sref%d"></a>%d.</td>' % (index,index))
of.write('<td class="field">')
self.source_link(of,source.handle,title,source.gramps_id,True)
tmp = []
confidence = Utils.confidence.get(sref.confidence, _('Unknown'))
for (label,data) in [(_('Date'),_dd.display(sref.date)),
(_('Page'),sref.page),
(_('Confidence'),confidence),
(_('Text'),sref.text)]:
if data:
tmp.append("%s: %s" % (label,data))
if len(tmp) > 0:
of.write('<br />' + '<br />'.join(tmp))
of.write('</td></tr>\n')
index += 1
of.write('</table>\n')
of.write('</div>\n')
self.display_source_refs(of,self.db,sreflist)
def display_ind_pedigree(self,of):
@ -1844,6 +2039,7 @@ class IndividualPage(BasePage):
# Get the mother and father relationships
frel = ""
mrel = ""
sibling = set()
child_handle = self.person.get_handle()
child_ref_list = ReportUtils.sanitize_list( family.get_child_ref_list(),
self.exclude_private )
@ -1867,6 +2063,7 @@ class IndividualPage(BasePage):
of.write('<tr>\n')
self.display_parent(of,mother_handle,_('Mother'),mrel)
of.write('</tr>\n')
first = False
if len(child_ref_list) > 1:
of.write('<tr>\n')
@ -1874,9 +2071,53 @@ class IndividualPage(BasePage):
of.write('<td class="data">\n')
for child_ref in child_ref_list:
child_handle = child_ref.ref
sibling.add(child_handle) # remember that we've already "seen" this child
if child_handle != self.person.handle:
self.display_child_link(of,child_handle)
of.write('</td>\n</tr>\n')
# Also try to identify half-siblings
other_siblings = set()
# if we have a known father...
if father_handle and self.showhalfsiblings:
# 1) get all of the families in which this father is involved
# 2) get all of the children from those families
# 3) if the children are not already listed as siblings...
# 4) then remember those children since we're going to list them
father = self.db.get_person_from_handle(father_handle)
for family_handle in father.get_family_handle_list():
family = self.db.get_family_from_handle(family_handle)
step_child_ref_list = ReportUtils.sanitize_list(family.get_child_ref_list(), self.exclude_private)
for step_child_ref in step_child_ref_list:
step_child_handle = step_child_ref.ref
if step_child_handle not in sibling:
if step_child_handle != self.person.handle:
# we have a new step/half sibling
other_siblings.add(step_child_ref.ref)
# do the same thing with the mother (see "father" just above):
if mother_handle and self.showhalfsiblings:
mother = self.db.get_person_from_handle(mother_handle)
for family_handle in mother.get_family_handle_list():
family = self.db.get_family_from_handle(family_handle)
step_child_ref_list = ReportUtils.sanitize_list(family.get_child_ref_list(), self.exclude_private)
for step_child_ref in step_child_ref_list:
step_child_handle = step_child_ref.ref
if step_child_handle not in sibling:
if step_child_handle != self.person.handle:
# we have a new step/half sibling
other_siblings.add(step_child_ref.ref)
# now that we have all of the step-siblings/half-siblings, print them out
if len(other_siblings) > 0:
of.write('<tr>\n')
of.write('<td class="field">%s</td>\n' % _("Other Siblings"))
of.write('<td class="data">\n')
for child_handle in other_siblings:
self.display_child_link(of, child_handle)
of.write('</td>\n</tr>\n')
of.write('<tr><td colspan="3">&nbsp;</td></tr>\n')
of.write('</table>\n')
of.write('</div>\n')
@ -1979,7 +2220,7 @@ class IndividualPage(BasePage):
if format:
of.write( u"<pre>%s</pre>" % text )
else:
of.write( u"</p><p>".join(text.split("\n")))
of.write( u"<br>".join(text.split("\n")))
of.write('</td>\n</tr>\n')
def pedigree_person(self,of,person,is_spouse=False):
@ -2054,6 +2295,21 @@ class IndividualPage(BasePage):
else:
text = '\n'
text += self.get_citation_links( event.get_source_references() )
# if the event has a note attached to it, get the text and format it correctly
note_obj = event.get_note_object()
if note_obj:
note_text = note_obj.get()
if note_text != '':
if note_obj.get_format():
text += '<pre>\n'
text += note_text
text += '</pre>\n'
else:
text += '<p>'
text += u"<br>".join(note_text.split("\n"))
text += '</p>'
return text
def get_citation_links(self, source_ref_list):
@ -2118,6 +2374,12 @@ class WebReport(Report):
NWEBintronote
NWEBhomenote
NWEBnoid
NWEBlinkhome
NWEBshowbirth
NWEBshowdeath
NWEBshowspouse
NWEBshowparents
NWEBshowhalfsiblings
"""
self.database = database
@ -2137,6 +2399,12 @@ class WebReport(Report):
self.restrict_years = options.handler.options_dict['NWEBrestrictyears']
self.exclude_private = not options.handler.options_dict['NWEBincpriv']
self.noid = options.handler.options_dict['NWEBnoid']
self.linkhome = options.handler.options_dict['NWEBlinkhome']
self.showbirth = options.handler.options_dict['NWEBshowbirth']
self.showdeath = options.handler.options_dict['NWEBshowdeath']
self.showspouse = options.handler.options_dict['NWEBshowspouse']
self.showparents = options.handler.options_dict['NWEBshowparents']
self.showhalfsiblings = options.handler.options_dict['NWEBshowhalfsiblings']
self.title = options.handler.options_dict['NWEBtitle']
self.sort = Sort.Sort(self.database)
self.inc_gallery = options.handler.options_dict['NWEBgallery']
@ -2293,7 +2561,10 @@ class WebReport(Report):
def person_pages(self, ind_list, restrict_list, place_list, source_list, archive):
self.progress.set_pass(_('Creating individual pages'),len(ind_list))
self.progress.set_pass(_('Creating individual pages'),len(ind_list) + 1)
self.progress.step() # otherwise the progress indicator sits at 100%
# for a short while from the last step we did,
# which was to apply the privacy filter
IndividualListPage(
self.database, self.title, ind_list, restrict_list,
@ -2453,6 +2724,12 @@ class WebReportOptions(ReportOptions):
'NWEBincpriv' : 0,
'NWEBnonames' : 0,
'NWEBnoid' : 0,
'NWEBlinkhome' : 0,
'NWEBshowbirth' : 1,
'NWEBshowdeath' : 0,
'NWEBshowspouse' : 0,
'NWEBshowparents' : 0,
'NWEBshowhalfsiblings' : 0,
'NWEBcontact' : '',
'NWEBgallery' : 1,
'NWEBheader' : '',
@ -2560,6 +2837,24 @@ class WebReportOptions(ReportOptions):
self.inc_download = gtk.CheckButton(download_msg)
self.inc_download.set_active(self.options_dict['NWEBdownload'])
self.linkhome = gtk.CheckButton(_('Include link to home person on every page'))
self.linkhome.set_active(self.options_dict['NWEBlinkhome'])
self.showbirth = gtk.CheckButton(_('Include a column for birth dates on the index pages'))
self.showbirth.set_active(self.options_dict['NWEBshowbirth'])
self.showdeath = gtk.CheckButton(_('Include a column for death dates on the index pages'))
self.showdeath.set_active(self.options_dict['NWEBshowdeath'])
self.showspouse = gtk.CheckButton(_('Include a column for partners on the index pages'))
self.showspouse.set_active(self.options_dict['NWEBshowspouse'])
self.showparents = gtk.CheckButton(_('Include a column for parents on the index pages'))
self.showparents.set_active(self.options_dict['NWEBshowparents'])
self.showhalfsiblings = gtk.CheckButton(_('Include half-brothers and half-sisters as siblings'))
self.showhalfsiblings.set_active(self.options_dict['NWEBshowhalfsiblings'])
# FIXME: document this:
# 0 -- no images of any kind
# 1 -- no living images, but some images
@ -2667,6 +2962,14 @@ class WebReportOptions(ReportOptions):
dialog.add_frame_option(title,None,self.restrict_living)
dialog.add_frame_option(title,None,self.hbox)
title = _("Advanced Options")
dialog.add_frame_option(title,None,self.linkhome)
dialog.add_frame_option(title,None,self.showbirth)
dialog.add_frame_option(title,None,self.showdeath)
dialog.add_frame_option(title,None,self.showspouse)
dialog.add_frame_option(title,None,self.showparents)
dialog.add_frame_option(title,None,self.showhalfsiblings)
def restrict_toggled(self,obj):
self.restrict_years.set_sensitive(obj.get_active())
@ -2678,6 +2981,12 @@ class WebReportOptions(ReportOptions):
self.options_dict['NWEBrestrictyears'] = int(self.restrict_years.get_text())
self.options_dict['NWEBincpriv'] = int(not self.no_private.get_active())
self.options_dict['NWEBnoid'] = int(self.noid.get_active())
self.options_dict['NWEBlinkhome'] = int(self.linkhome.get_active())
self.options_dict['NWEBshowbirth'] = int(self.showbirth.get_active())
self.options_dict['NWEBshowdeath'] = int(self.showdeath.get_active())
self.options_dict['NWEBshowspouse'] = int(self.showspouse.get_active())
self.options_dict['NWEBshowparents'] = int(self.showparents.get_active())
self.options_dict['NWEBshowhalfsiblings'] = int(self.showhalfsiblings.get_active())
self.options_dict['NWEBcontact'] = unicode(self.contact.get_handle())
self.options_dict['NWEBgallery'] = int(self.include_gallery.get_active())
self.options_dict['NWEBheader'] = unicode(self.header.get_handle())