Completed bug# 2698. Please test it out completely. Report issues to bug#2698.
svn: r13715
This commit is contained in:
parent
46dd4e6c1a
commit
b886d022bb
@ -446,7 +446,7 @@ class BasePage(object):
|
||||
# return unordered note list to its callers
|
||||
return ul
|
||||
|
||||
def display_event_row(self, evt, evt_ref, showplc, showdescr, showsrc, shownote, subdirs, hyp):
|
||||
def display_event_row(self, evt, evt_ref, showplc, showdescr, showsrc, subdirs, hyp):
|
||||
"""
|
||||
display the event row for IndividualPage
|
||||
"""
|
||||
@ -1095,6 +1095,73 @@ class BasePage(object):
|
||||
# return navigation menu bar to its caller
|
||||
return navigation
|
||||
|
||||
def add_image(self, option_name, height = 0):
|
||||
db = self.report.database
|
||||
|
||||
pic_id = self.report.options[option_name]
|
||||
if pic_id:
|
||||
obj = db.get_object_from_gramps_id(pic_id)
|
||||
obj_handle = obj.handle
|
||||
mime_type = obj.get_mime_type()
|
||||
if mime_type and mime_type.startswith("image"):
|
||||
try:
|
||||
|
||||
newpath, thumb_path = self.report.prepare_copy_media(obj)
|
||||
self.report.copy_file(Utils.media_path_full(db, obj.get_path()), newpath)
|
||||
|
||||
# get media rectangles
|
||||
_region_items = self.media_rectangles(obj_handle, obj)
|
||||
if len(_region_items):
|
||||
with Html("div") as mediadisplay:
|
||||
|
||||
# Feature #2634; display the mouse-selectable regions.
|
||||
# See the large block at the top of this function where
|
||||
# the various regions are stored in _region_items
|
||||
ordered = Html("ol", class_ = "RegionBox")
|
||||
mediadisplay += ordered
|
||||
while len(_region_items):
|
||||
(name, x, y, w, h, linkurl) = _region_items.pop()
|
||||
ordered += Html("li", style = "left:%d%%; top:%d%%; width:%d%%; height:%d%%;"
|
||||
% (x, y, w, h)) +(
|
||||
Html("a", name, href = linkurl)
|
||||
)
|
||||
|
||||
# begin image
|
||||
image = Html("img")
|
||||
mediadisplay += image
|
||||
img_attr = ''
|
||||
if height:
|
||||
img_attr += 'height = "%d"' % height
|
||||
img_attr += ' src = "%s" alt = "%s"' % (newpath, obj.get_description())
|
||||
|
||||
# add image attributes to image
|
||||
image.attr = img_attr
|
||||
|
||||
# return image with media behaviours styling
|
||||
return mediadisplay
|
||||
|
||||
# media has no media references
|
||||
else:
|
||||
|
||||
# begin image
|
||||
image = Html("img")
|
||||
img_attr = ''
|
||||
if height:
|
||||
img_attr += 'height = "%d"' % height
|
||||
img_attr += ' src = "%s" alt = "%s"' % (newpath, obj.get_description())
|
||||
|
||||
# add image attributes to image
|
||||
image.attr = img_attr
|
||||
|
||||
# return an image
|
||||
return image
|
||||
|
||||
except (IOError, OSError), msg:
|
||||
WarningDialog(_("Could not add photo to page"), str(msg))
|
||||
|
||||
# no image to return
|
||||
return None
|
||||
|
||||
def media_rectangles(self, handle, media):
|
||||
|
||||
"""
|
||||
@ -1200,6 +1267,25 @@ class BasePage(object):
|
||||
|
||||
if mime_type:
|
||||
try:
|
||||
|
||||
# get media rectangles
|
||||
_region_items = self.media_rectangles(photo_handle, photo)
|
||||
if len(_region_items):
|
||||
with Html("div") as mediadisplay:
|
||||
snapshot += mediadisplay
|
||||
|
||||
# Feature #2634; display the mouse-selectable regions.
|
||||
# See the large block at the top of this function where
|
||||
# the various regions are stored in _region_items
|
||||
ordered = Html("ol", class_ = "RegionBox")
|
||||
mediadisplay += ordered
|
||||
while len(_region_items):
|
||||
(name, x, y, w, h, linkurl) = _region_items.pop()
|
||||
ordered += Html("li", style = "left:%d%%; top:%d%%; width:%d%%; height:%d%%;"
|
||||
% (x, y, w, h)) +(
|
||||
Html("a", name, href = linkurl)
|
||||
)
|
||||
|
||||
lnkref = (self.report.cur_fname, self.page_title, self.gid)
|
||||
self.report.add_lnkref_to_photo(photo, lnkref)
|
||||
real_path, newpath = self.report.prepare_copy_media(photo)
|
||||
@ -1250,6 +1336,7 @@ class BasePage(object):
|
||||
|
||||
photo_handle = mediaref.get_reference_handle()
|
||||
photo = db.get_object_from_handle(photo_handle)
|
||||
|
||||
if photo_handle in displayed:
|
||||
continue
|
||||
mime_type = photo.get_mime_type()
|
||||
@ -1259,6 +1346,25 @@ class BasePage(object):
|
||||
|
||||
if mime_type:
|
||||
try:
|
||||
|
||||
# get media rectangles
|
||||
_region_items = self.media_rectangles(photo_handle, photo)
|
||||
if len(_region_items):
|
||||
with Html("div") as mediadisplay:
|
||||
section += mediadisplay
|
||||
|
||||
# Feature #2634; display the mouse-selectable regions.
|
||||
# See the large block at the top of this function where
|
||||
# the various regions are stored in _region_items
|
||||
ordered = Html("ol", class_ = "RegionBox")
|
||||
mediadisplay += ordered
|
||||
while len(_region_items):
|
||||
(name, x, y, w, h, linkurl) = _region_items.pop()
|
||||
ordered += Html("li", style = "left:%d%%; top:%d%%; width:%d%%; height:%d%%;"
|
||||
% (x, y, w, h)) +(
|
||||
Html("a", name, href = linkurl)
|
||||
)
|
||||
|
||||
lnkref = (self.report.cur_fname, self.page_title, self.gid)
|
||||
self.report.add_lnkref_to_photo(photo, lnkref)
|
||||
real_path, newpath = self.report.prepare_copy_media(photo)
|
||||
@ -2669,7 +2775,7 @@ class MediaPage(BasePage):
|
||||
|
||||
# media date
|
||||
date = media.get_date_object()
|
||||
if date:
|
||||
if date and date is not Date.EMPTY:
|
||||
trow = Html("tr") + (
|
||||
Html("td", DHEAD, class_ = "ColumnAttribute", inline = True),
|
||||
Html("td", _dd.display(date), class_ = "ColumnValue", inline = True)
|
||||
@ -2941,7 +3047,7 @@ class IntroductionPage(BasePage):
|
||||
with Html("div", class_ = "content", id = "Introduction") as section:
|
||||
body += section
|
||||
|
||||
introimg = report.add_image('introimg')
|
||||
introimg = self.add_image('introimg')
|
||||
if introimg is not None:
|
||||
section += introimg
|
||||
|
||||
@ -2978,7 +3084,7 @@ class HomePage(BasePage):
|
||||
with Html("div", class_ = "content", id = "Home") as section:
|
||||
body += section
|
||||
|
||||
homeimg = report.add_image('homeimg')
|
||||
homeimg = self.add_image('homeimg')
|
||||
if homeimg is not None:
|
||||
section += homeimg
|
||||
|
||||
@ -3373,7 +3479,7 @@ class ContactPage(BasePage):
|
||||
with Html("div", id = 'summaryarea') as summaryarea:
|
||||
section += summaryarea
|
||||
|
||||
contactimg = report.add_image('contactimg', 200)
|
||||
contactimg = self.add_image('contactimg', 200)
|
||||
if contactimg is not None:
|
||||
summaryarea += contactimg
|
||||
|
||||
@ -3951,9 +4057,8 @@ class IndividualPage(BasePage):
|
||||
@param: show place
|
||||
@param: show description
|
||||
@param: show source references
|
||||
@param: show note
|
||||
"""
|
||||
thead += self.display_event_header(True, True, True, False)
|
||||
thead += self.display_event_header(True, True, True)
|
||||
|
||||
tbody = Html("tbody")
|
||||
table += tbody
|
||||
@ -3968,11 +4073,10 @@ class IndividualPage(BasePage):
|
||||
@param: show place or not?
|
||||
@param: show description or not?
|
||||
@param: show source references or not?
|
||||
@param: shownote = show notes or not?
|
||||
@param: subdirs = True or False
|
||||
@param: hyp = show hyperlinked evt type or not?
|
||||
"""
|
||||
tbody += self.display_event_row(event, evt_ref, True, True, True, False, True, True)
|
||||
tbody += self.display_event_row(event, evt_ref, True, True, True, True, True)
|
||||
|
||||
# return section to its caller
|
||||
return section
|
||||
@ -4445,7 +4549,7 @@ class IndividualPage(BasePage):
|
||||
)
|
||||
return ped
|
||||
|
||||
def display_event_header(self, showplc, showdescr, showsrc, shownote):
|
||||
def display_event_header(self, showplc, showdescr, showsrc):
|
||||
"""
|
||||
will print the event header row for display_event_row() and
|
||||
format_event()
|
||||
@ -4453,7 +4557,6 @@ class IndividualPage(BasePage):
|
||||
@param: showplc = show place
|
||||
@param: showdescr = show description
|
||||
@param: showsrc = show source references
|
||||
@param: shownote = show notes or not?
|
||||
"""
|
||||
# position 0 = translatable label, position 1 = column class, and
|
||||
# position 2 = data
|
||||
@ -4470,9 +4573,6 @@ class IndividualPage(BasePage):
|
||||
if showsrc:
|
||||
event_header_row.append((SHEAD, "Sources"))
|
||||
|
||||
if shownote:
|
||||
event_header_row.append((NHEAD, "Notes"))
|
||||
|
||||
trow = Html("tr")
|
||||
trow.extend(
|
||||
Html("th", label, class_ = "Column" + colclass, inline = True)
|
||||
@ -4497,9 +4597,8 @@ class IndividualPage(BasePage):
|
||||
@param: show place
|
||||
@param: show description
|
||||
@param: show source references
|
||||
@param: show note
|
||||
"""
|
||||
thead += self.display_event_header(True, True, True, False)
|
||||
thead += self.display_event_header(True, True, True)
|
||||
|
||||
# begin table body
|
||||
tbody = Html("tbody")
|
||||
@ -4515,11 +4614,10 @@ class IndividualPage(BasePage):
|
||||
@param: show place or not?
|
||||
@param: show description or not?
|
||||
@param: show source references or not?
|
||||
@param: shownote = show notes or not?
|
||||
@param: up = True or False: attach subdirs or not?
|
||||
@param: hyp = show hyperlinked evt type or not?
|
||||
"""
|
||||
tbody += self.display_event_row(event, event_ref, True, True, True, False, True, True)
|
||||
tbody += self.display_event_row(event, event_ref, True, True, True, True, True)
|
||||
|
||||
# return table to its callers
|
||||
return table
|
||||
@ -5339,7 +5437,8 @@ class NavWebReport(Report):
|
||||
"""
|
||||
|
||||
# set up progress bar for event pages; using ind list because it was taking too long at the end
|
||||
self.progress.set_pass(_("Creating event pages"), len(ind_list))
|
||||
event_handles = self.database.get_event_handles()
|
||||
self.progress.set_pass(_("Creating event pages"), len(event_handles))
|
||||
|
||||
# send all data to the events list page
|
||||
EventListPage(self, self.title, event_types, event_handle_list, ind_list)
|
||||
@ -5471,36 +5570,6 @@ class NavWebReport(Report):
|
||||
|
||||
AddressBookPage(self, self.title, person_handle, has_add, has_res, has_url)
|
||||
|
||||
def add_image(self, option_name, height=0):
|
||||
pic_id = self.options[option_name]
|
||||
if pic_id:
|
||||
obj = self.database.get_object_from_gramps_id(pic_id)
|
||||
mime_type = obj.get_mime_type()
|
||||
if mime_type and mime_type.startswith("image"):
|
||||
try:
|
||||
newpath, thumb_path = self.prepare_copy_media(obj)
|
||||
self.copy_file(Utils.media_path_full(self.database, obj.get_path()),
|
||||
newpath)
|
||||
|
||||
# begin image
|
||||
image = Html("img")
|
||||
img_attr = ''
|
||||
if height:
|
||||
img_attr += 'height = "%d"' % height
|
||||
img_attr += ' src = "%s" alt = "%s"' % (newpath, obj.get_description())
|
||||
|
||||
# add image attributes to image
|
||||
image.attr = img_attr
|
||||
|
||||
# return an image
|
||||
return image
|
||||
|
||||
except (IOError, OSError), msg:
|
||||
WarningDialog(_("Could not add photo to page"), str(msg))
|
||||
|
||||
# no image to return
|
||||
return None
|
||||
|
||||
def build_subdirs(self, subdir, fname, up = False):
|
||||
"""
|
||||
If subdir is given, then two extra levels of subdirectory are inserted
|
||||
|
Loading…
Reference in New Issue
Block a user