NarrativeWeb is now running once again. I do not have a good python exif library yet to use with Gramps. Tiny update to Visually impaired stylesheet to match some changes to plugin.

svn: r12843
This commit is contained in:
Rob G. Healey 2009-07-28 11:41:20 +00:00
parent 7f4732714b
commit b98caba34d
2 changed files with 86 additions and 84 deletions

View File

@ -897,6 +897,9 @@ table.infolist tbody tr td.ColumnValue p {
color:#696969;
margin:.2em 0 0 2em;
}
table.eventtable tbody tr {
border-bottom:solid 1px #000;
}
/* Subsections : Attributes
----------------------------------------------------- */

View File

@ -66,9 +66,9 @@ from unicodedata import normalize
# attempt to import the python exif library?
try:
import pyexiv2
pyexiflib = True
pyexiftaglib = True
except ImportError:
pyexiflib = False
pyexiftaglib = False
#------------------------------------------------------------------------
#
@ -334,20 +334,17 @@ class BasePage(object):
trow = Html('tr')
thead += trow
address_fields = [
(_('Date'), 'date'),
(_('Street'), 'streetaddress'),
(_('City'), 'city'),
(_('County'), 'county'),
(_('State/ Province'), 'state'),
(_('Country'), 'country') ,
(_('Zip/ Postal Code'), 'zip/ postal'),
(_('Phone'), 'phone') ]
for (label, colclass) in [
(_('Date'), 'date'),
(_('Street'), 'streetaddress'),
(_('City'), 'city'),
(_('County'), 'county'),
(_('State/ Province'), 'state'),
(_('Country'), 'country') ,
(_('Postal Code'), 'postalcode'),
(_('Phone'), 'phone') ]:
for (label, colclass) in address_fields:
tcell = Html('th', label, class_='ColumnAttribute %s' % colclass, inline=True)
trow += tcell
trow += Html('th', label, class_='ColumnAttribute %s' % colclass, inline=True)
# begin table body
tbody = Html('tbody')
@ -361,19 +358,19 @@ class BasePage(object):
date = _dd.display(address.get_date_object())
address_data = [
(_('Date'), date),
(_('Street'), address.get_street()),
(_('City'), address.get_city()),
(_('County'), address.get_county()),
(_('State/Province'), address.get_state()),
(_('Country'), address.get_country()),
(_('Zip/ Postal Code'), address.get_postal_code()),
(_('Phone'), address.get_phone()) ]
for (label, value ) in address_data:
for (label, value) in [
(_('date'), date),
(_('streetaddress'), address.get_street()),
(_('city'), address.get_city()),
(_('county'), address.get_county()),
(_('State'), address.get_state()),
(_('country'), address.get_country()),
(_('postalcode'), address.get_postal_code()),
(_('phone'), address.get_phone()) ]:
tcell = Html('td', class_='ColumnValue %s' % label, inline=True)
trow += tcell
if value:
tcell += value
else:
@ -385,6 +382,8 @@ class BasePage(object):
summaryarea += notelist
# address: source references
# if True, then an individual's address
# if False, then a repositories address
if spec:
sourcerefs = self.write_source_refs(address.get_source_references())
if sourcerefs is not None:
@ -412,9 +411,13 @@ class BasePage(object):
source_dict = {}
# Sort the sources
for handle in sourcelist:
# if source is not None, then add it?
source = db.get_source_from_handle(handle)
key = source.get_title() + str(source.get_gramps_id())
source_dict[key] = (source, handle)
if source is not None:
key = source.get_title() + str(source.get_gramps_id())
print key
source_dict[key] = (source, handle)
keys = sorted(source_dict, key=locale.strxfrm)
for index, key in enumerate(keys):
@ -971,7 +974,6 @@ class BasePage(object):
Html('img', src= thumbnailUrl, alt = "Image of " + person_name)
)
else:
# for proper spacing, force a new line after hyperlink url
hyper.attr += ' class= "noThumb"'
# 3. insert the person's name
@ -1728,7 +1730,9 @@ class MediaPage(BasePage):
(width, height) = ImgManip.image_size(orig_image_path)
max_width = self.report.options['maxinitialimagewidth']
max_height = self.report.options['maxinitialimageheight']
scale_w = (float(max_width)/width) or 1 # the 'or 1' is so that a max of zero is ignored
scale_w = (float(max_width)/width) or 1 # the 'or 1' is so that
# a max of zero is ignored
scale_h = (float(max_height)/height) or 1
scale = min(scale_w, scale_h)
new_width = int(width*scale)
@ -1852,14 +1856,14 @@ class MediaPage(BasePage):
table += trow
# display image Exif tags/ keys if any?
if (pyexiflib and mime_type.startswith('image/')):
#################################################
# Exif Tags/ Keys #
# #
# Determine if the python exif lib is installed on the system? #
# yes, then use it and determine if the photo has anything written #
# inside of it? No, if not?, then do not show on the media page #
#################################################
if (pyexiftaglib and mime_type.startswith('image/')):
"""
# Exif Tags/ Keys
#
# Determine if the python exif lib is installed on the system?
# yes, then use it and determine if the photo has anything written
# inside of it? No, if not?, then do not show on the media page
"""
image = pyexiv2.Image('%s' % Utils.media_path_full(db, photo.get_path()))
image.readMetadata()
@ -1867,25 +1871,22 @@ class MediaPage(BasePage):
# exif data does exists
if len(image.exifKeys()):
# add clearline for increased styling
# add clearline for better page layout
mediadetail += fullclear
with Html('div', class_='infolist', id='ExifList') as exifdetail:
mediadetail += exifdetail
# add exif title header
mediadetail += Html('h4', _('Image Exif Tags'), inline=True)
# add exif title header
exifdetail += Html('h4', _('Image Exif Tags'), inline=True)
# begin exif table
with Html('table', class_='exifdata') as table:
mediadetail += table
# begin exif table
with Html('table', class_='exifdata') as table:
exifdetail += table
for line in image.exifKeys():
trow = Html('tr') + (
Html('td', line, class_='ColumnAttribute', inline=True),
Html('td', image[line], class_='ColumnValue', inline=True)
)
table += trow
for keytag in image.exifKeys():
trow = Html('tr') + (
Html('td', keytag, class_='ColumnAttribute', inline=True),
Html('td', image[keytag], class_='ColumnValue', inline=True)
)
table += trow
#################################################
@ -3293,7 +3294,7 @@ class IndividualPage(BasePage):
section += Html('h4', _('Addresses'), inline=True)
# write out addresses()
addresses = self.write_out_addresses(self.person)
addresses = self.write_out_addresses(self.person, spec=True)
section += addresses
# return address division to its caller
@ -3589,8 +3590,8 @@ class IndividualPage(BasePage):
family_list = self.person.get_family_handle_list()
if not family_list:
return None
db = self.report.database
# begin families division and section title
with Html('div', class_='subsection', id='families') as section:
section += Html('h4', _('Families'), inline=True)
@ -3666,17 +3667,25 @@ class IndividualPage(BasePage):
trow += tcell
if partner_handle:
gid = partner.gramps_id
if partner_handle in self.ind_list:
url = self.report.build_url_fname_html(partner_handle, 'ppl', True)
tcell += self.person_link(url, partner, True, gid)
tcell += self.person_link(url, partner, True, partner.gramps_id)
else:
tcell += partner_name
# TODO: Fix this section of code
# there is a table started underneath a table cell???
family_events = family.get_event_ref_list()
trow = Html('tr') + (
Html('td', ' ', class_='ColumnType', inline=True),
Html('td', ' ', class_='ColumnAttribute', inline=True)
)
table += trow
tcell = Html('td', class_='ColumnValue')
trow += tcell
formatted_event = self.format_event(family_events)
table += formatted_event
tcell += formatted_event
# get attributes
for attr in family.get_attribute_list():
@ -3771,6 +3780,9 @@ class IndividualPage(BasePage):
return trow
def format_event(self, eventlist):
if not eventlist:
return None
db = self.report.database
# begin eventlist table and table header
@ -3932,7 +3944,7 @@ class RepositoryPage(BasePage):
table += trow
# repository: addresses
addresses = self.write_out_addresses(repo, spec=True)
addresses = self.write_out_addresses(repo)
if addresses is not None:
repositorydetail += addresses
@ -4718,21 +4730,21 @@ class NavWebOptions(MenuReportOptions):
self.__downloadnote.set_help( _("A note to be used on the download page"))
menu.add_option(category_name, "downloadnote", self.__downloadnote)
self.__down_fname1 = DestinationOption(_("Download Filename #1"),
self.__down_fname1 = DestinationOption(_("Download Filename"),
os.path.join(const.USER_HOME, ""))
self.__down_fname1.set_help(_("File to be used for downloading of database"))
menu.add_option(category_name, "down_fname1", self.__down_fname1)
self.__dl_descr1 = StringOption(_("Description for this Download"), _('Smith Family Tree'))
self.__dl_descr1 = StringOption(_("Description for download"), _('Smith Family Tree'))
self.__dl_descr1.set_help(_('Give a description for this file.'))
menu.add_option(category_name, 'dl_descr1', self.__dl_descr1)
self.__down_fname2 = DestinationOption(_("Download Filename #2"),
self.__down_fname2 = DestinationOption(_("Download Filename"),
os.path.join(const.USER_HOME, ""))
self.__down_fname2.set_help(_("File to be used for downloading of database"))
menu.add_option(category_name, "down_fname2", self.__down_fname2)
self.__dl_descr2 = StringOption(_("Description for this Download"), _('Johnson Family Tree'))
self.__dl_descr2 = StringOption(_("Description for download"), _('Johnson Family Tree'))
self.__dl_descr2.set_help(_('Give a description for this file.'))
menu.add_option(category_name, 'dl_descr2', self.__dl_descr2)
@ -4781,19 +4793,16 @@ class NavWebOptions(MenuReportOptions):
showparents.set_help(_('Whether to include a parents column'))
menu.add_option(category_name, 'showparents', showparents)
self.__showallsiblings = BooleanOption(_("Include half and/ or "
showallsiblings = BooleanOption(_("Include half and/ or "
"step-siblings on the individual pages"), False)
self.__showallsiblings.set_help(_( "Whether to include half and/ or "
showallsiblings.set_help(_( "Whether to include half and/ or "
"step-siblings with the parents and siblings"))
menu.add_option(category_name, 'showhalfsiblings', self.__showallsiblings)
self.__showallsiblings.connect('value-changed', self.__siblings_changed)
menu.add_option(category_name, 'showhalfsiblings', showallsiblings)
self.__birthorder = BooleanOption(_('Sort children in birth order'), False)
self.__birthorder.set_help(_('Whether to display children in birth order'
' or in entry order?'))
menu.add_option(category_name, 'birthorder', self.__birthorder)
self.__siblings_changed()
birthorder = BooleanOption(_('Sort children in birth order'), False)
birthorder.set_help(_('Whether to display children in birth order'
' or in entry order?'))
menu.add_option(category_name, 'birthorder', birthorder)
inc_repository = BooleanOption(_('Include Repository Pages'), False)
inc_repository.set_help(_('Whether to include the Repository Pages or not?'))
@ -4878,16 +4887,6 @@ class NavWebOptions(MenuReportOptions):
self.__dl_descr2.set_available(False)
self.__dl_cright.set_available(False)
def __siblings_changed(self):
"""
handles the changing nature of showallsiblings
"""
if self.__showallsiblings.get_value():
self.__birthorder.set_available(True)
else:
self.__birthorder.set_available(False)
# FIXME. Why do we need our own sorting? Why not use Sort.Sort?
def sort_people(db, handle_list):
sname_sub = {}