From 97e0ce0d4c0d43d9bdbd0b4abf36a0476febde8e Mon Sep 17 00:00:00 2001 From: Serge Noiraud Date: Fri, 12 Oct 2012 21:50:45 +0000 Subject: [PATCH] Geography : added history to places view. added birth and death date to the reference and other people in the messages of the close view. svn: r20552 --- gramps/plugins/lib/maps/geography.py | 7 +++++ gramps/plugins/lib/maps/osmGps.py | 2 +- gramps/plugins/view/geoclose.py | 46 ++++++++++++++++++++++++++-- gramps/plugins/view/geoplaces.py | 21 +++++++------ 4 files changed, 62 insertions(+), 14 deletions(-) diff --git a/gramps/plugins/lib/maps/geography.py b/gramps/plugins/lib/maps/geography.py index fdf37a3f7..b3bf8454d 100644 --- a/gramps/plugins/lib/maps/geography.py +++ b/gramps/plugins/lib/maps/geography.py @@ -397,6 +397,13 @@ class GeoGraphyView(OsmGps, NavigationView): found = True if found: self.bubble_message(event, lat, lon, mark_selected) + # add the first place found to history + hobj = self.uistate.get_history(self.navigation_type(), + self.navigation_group()) + place = self.dbstate.db.get_place_from_gramps_id(mark_selected[0][9]) + handle = place.get_handle() + if handle and not hobj.lock and not (handle == hobj.present()): + hobj.push(handle) self.uistate.set_busy_cursor(False) def bubble_message(self, event, lat, lon, mark): diff --git a/gramps/plugins/lib/maps/osmGps.py b/gramps/plugins/lib/maps/osmGps.py index b7ea691b1..9ee37d045 100644 --- a/gramps/plugins/lib/maps/osmGps.py +++ b/gramps/plugins/lib/maps/osmGps.py @@ -320,7 +320,7 @@ class OsmGps(): self.end_selection = current self.zone_selection = False elif event.button == 3 and event.type == Gdk.EventType.BUTTON_PRESS: - self.build_nav_menu(osm, event, lat, lon ) + self.build_nav_menu(osm, event, lat, lon) else: self.save_center(lat, lon) diff --git a/gramps/plugins/view/geoclose.py b/gramps/plugins/view/geoclose.py index e6b73cc62..bed78b180 100644 --- a/gramps/plugins/view/geoclose.py +++ b/gramps/plugins/view/geoclose.py @@ -34,6 +34,7 @@ from gramps.gen.ggettext import gettext as _ import operator from gi.repository import Gtk from math import * +import cgi #------------------------------------------------------------------------- # @@ -50,7 +51,7 @@ _LOG = logging.getLogger("GeoGraphy.geoclose") #------------------------------------------------------------------------- from gramps.gen.lib import EventRoleType, EventType from gramps.gen.config import config -from gramps.gen.datehandler import displayer +from gramps.gen.datehandler import displayer, get_date from gramps.gen.display.name import displayer as _nd from gramps.gen.utils.place import conv_lat_lon from gramps.gui.views.navigationview import NavigationView @@ -58,6 +59,7 @@ from gramps.gui.views.bookmarks import PersonBookmarks from gramps.plugins.lib.maps import constants from gramps.plugins.lib.maps.geography import GeoGraphyView from gramps.gui.selectors import SelectorFactory +from gramps.gen.utils.db import (get_birth_or_fallback, get_death_or_fallback) #------------------------------------------------------------------------- # @@ -214,8 +216,12 @@ class GeoClose(GeoGraphyView): self._createmap(p1, color, self.place_list_active, False) if self.refperson: color = self._config.get('geography.color1') - self.message_layer.add_message(_("Reference : %s" % _nd.display(self.refperson))) - self.message_layer.add_message(_("The other : %s" % _nd.display(p1))) + self.message_layer.add_message(_("Reference : %s ( %s - %s )" % ( _nd.display(self.refperson), + self.birth(self.refperson), + self.death(self.refperson)))) + self.message_layer.add_message(_("The other : %s ( %s - %s )" % ( _nd.display(p1), + self.birth(p1), + self.death(p1)))) self._createmap(self.refperson, color, self.place_list_ref, True) else: self.message_layer.add_message(_("You must choose one reference person.")) @@ -225,6 +231,40 @@ class GeoClose(GeoGraphyView): self.possible_meeting(self.place_list_ref, self.place_list_active) self.uistate.modify_statusbar(self.dbstate) + def birth(self, person): + """ + return "" or the birth date of the person + """ + birth = get_birth_or_fallback(self.dbstate.db, person) + if birth and birth.get_type() != EventType.BIRTH: + sdate = get_date(birth) + if sdate: + bdate = "%s" % cgi.escape(sdate) + else: + bdate = "" + elif birth: + bdate = cgi.escape(get_date(birth)) + else: + bdate = "" + return bdate + + def death(self, person): + """ + return "" or the death date of the person + """ + death = get_death_or_fallback(self.dbstate.db, person) + if death and death.get_type() != EventType.DEATH: + sdate = get_date(death) + if sdate: + ddate = "%s" % cgi.escape(sdate) + else: + ddate = "" + elif death: + ddate = cgi.escape(get_date(death)) + else: + ddate = "" + return ddate + def define_actions(self): """ Define action for the reference person button. diff --git a/gramps/plugins/view/geoplaces.py b/gramps/plugins/view/geoplaces.py index 90dc94bc2..bffd3f7e1 100644 --- a/gramps/plugins/view/geoplaces.py +++ b/gramps/plugins/view/geoplaces.py @@ -263,17 +263,18 @@ class GeoPlaces(GeoGraphyView): place = dbstate.db.get_place_from_handle(place_handle) self._create_one_place(place) else: - if place_x is None: - try: - places_handle = dbstate.db.get_place_handles() - except: - return - for place_hdl in places_handle: - place = dbstate.db.get_place_from_handle(place_hdl) - self._create_one_place(place) - else: - place = dbstate.db.get_place_from_handle(place_x) + try: + places_handle = dbstate.db.get_place_handles() + except: + return + for place_hdl in places_handle: + place = dbstate.db.get_place_from_handle(place_hdl) self._create_one_place(place) + if place_x: + place = dbstate.db.get_place_from_handle(place_x) + self.osm.set_center_and_zoom(float(place.get_latitude()), + float(place.get_longitude()), + int(config.get("geography.zoom"))) _LOG.debug(" stop createmap.") _LOG.debug("%s" % time.strftime("begin sort : " "%a %d %b %Y %H:%M:%S", time.gmtime()))