diff --git a/src/plugins/webreport/NarrativeWeb.py b/src/plugins/webreport/NarrativeWeb.py index e49882b2b..fd1b285a7 100644 --- a/src/plugins/webreport/NarrativeWeb.py +++ b/src/plugins/webreport/NarrativeWeb.py @@ -1,3 +1,4 @@ + # # Gramps - a GTK+/GNOME based genealogy program # @@ -465,8 +466,7 @@ class BasePage(object): """ for more information: see get_event_data() """ - event_data = self.get_event_data(evt, evt_ref, showplc, showdescr, - showsrc, shownote, subdirs, hyp) + event_data = self.get_event_data(evt, evt_ref, showplc, showdescr, subdirs, hyp) # begin event table row trow = Html("tr") @@ -475,6 +475,10 @@ class BasePage(object): inline = (not data or colclass == "Date")) for (label, colclass, data) in event_data) + # get event source references + srcrefs = self.get_citation_links( evt.get_source_references() ) or " " + trow += Html("td", srcrefs, class_ = "ColumnSources") + # return events table row to its callers return trow @@ -497,8 +501,7 @@ class BasePage(object): else: return eventtype - def get_event_data(self, evt, evt_ref, showplc, showdescr, showsrc, - shownote, up, hyp, gid = None): + def get_event_data(self, evt, evt_ref, showplc, showdescr, up, hyp, gid = None): """ retrieve event data from event and evt_ref @@ -546,18 +549,6 @@ class BasePage(object): descr = evt.get_description() info.append([DESCRHEAD, "Description", descr]) - if showsrc: - srcrefs = self.display_ind_sources(evt) - if srcrefs is not None: - info.append([SHEAD, "Sources", srcrefs]) - - if shownote: - notelist = evt.get_note_list() - notelist.extend(evt_ref.get_note_list() ) - notelist = self.display_note_list(notelist) - if notelist is not None: - info.append([NHEAD, "Notes", notelist]) - # return event data information to its callers return info @@ -1104,6 +1095,96 @@ class BasePage(object): # return navigation menu bar to its caller return navigation + def media_rectangles(self, handle, media): + + """ + ************************************* + GRAMPS feature #2634 -- attempt to highlight subregions in media + objects and link back to the relevant web page. + + This next section of code builds up the "records" we'll need to + generate the html/css code to support the subregions + ************************************* + """ + db = self.report.database + + # get all of the backlinks to this media object; meaning all of + # the people, events, places, etc..., that use this image + _region_items = set() + for (classname, newhandle) in db.find_backlink_handles(handle, + include_classes = ["Person", "Family", "Event", "Place"]): + + # for each of the backlinks, get the relevant object from the db + # and determine a few important things, such as a text name we + # can use, and the URL to a relevant web page + _obj = None + _name = "" + _linkurl = "#" + if classname == "Person": + _obj = db.get_person_from_handle( newhandle ) + # what is the shortest possible name we could use for this person? + _name = _obj.get_primary_name().get_call_name() + if not _name or _name == "": + _name = _obj.get_primary_name().get_first_name() + _linkurl = self.report.build_url_fname_html(_obj.handle, "ppl", True) + elif classname == "Family": + _obj = db.get_family_from_handle( newhandle ) + partner1_handle = _obj.get_father_handle() + partner2_handle = _obj.get_mother_handle() + if partner1_handle: + partner1 = db.get_person_from_handle(partner1_handle) + if partner2_handle: + partner2 = db.get_person_from_handle(partner2_handle) + if partner2 and partner1: + _name = partner1.get_primary_name().get_first_name() + _linkurl = self.report.build_url_fname_html(partner1_handle, "ppl", True) + elif partner1: + _name = partner1.get_primary_name().get_first_name() + _linkurl = self.report.build_url_fname_html(partner1_handle, "ppl", True) + elif partner2: + _name = partner2.get_primary_name().get_first_name() + _linkurl = self.report.build_url_fname_html(partner2_handle, "ppl", True) + elif classname == "Event": + _obj = db.get_event_from_handle( newhandle ) + _name = _obj.get_description() + _linkurl = self.report.build_url_fnamme_html(_obj.handle, "evt", True) + elif classname == "Place": + _obj = db.get_place_from_handle(newhandle) + _name = ReportUtils.place_name(db, newhandle) + _linkurl = self.report.build_url_fname_html(newhandle, "plc", True) + + # continue looking through the loop for an object... + if _obj is None: + continue + + # get a list of all media refs for this object + medialist = _obj.get_media_list() + + # go media refs looking for one that points to this image + for mediaref in medialist: + + # is this mediaref for this image? do we have a rect? + if mediaref.ref == handle and mediaref.rect is not None: + + (x1, y1, x2, y2) = mediaref.rect + # GRAMPS gives us absolute coordinates, + # but we need relative width + height + w = x2 - x1 + h = y2 - y1 + + # remember all this information, cause we'll need + # need it later when we output the