diff --git a/gramps/gui/editors/editpersonref.py b/gramps/gui/editors/editpersonref.py
index 91aef118d..21a15293e 100644
--- a/gramps/gui/editors/editpersonref.py
+++ b/gramps/gui/editors/editpersonref.py
@@ -56,6 +56,7 @@ from ..glade import Glade
from ..ddtargets import DdTargets
from gi.repository import Gdk
from gramps.gen.const import URL_MANUAL_SECT1
+from ..display import display_url
#-------------------------------------------------------------------------
#
@@ -94,6 +95,7 @@ class EditPersonRef(EditSecondary):
self.setup_configs('interface.person-ref', 600, 350)
self.person_label = self.top.get_object('person')
+ self.person_label.set_use_markup(True)
#allow for drop:
self.person_label.drag_dest_set(Gtk.DestDefaults.MOTION |
@@ -101,6 +103,7 @@ class EditPersonRef(EditSecondary):
[DdTargets.PERSON_LINK.target()],
Gdk.DragAction.COPY)
self.person_label.connect('drag_data_received', self.on_drag_persondata_received)
+ self.person_label.connect('activate_link', self.on_person_label_activate_link)
self._update_dnd_capability()
def _update_dnd_capability(self):
@@ -119,7 +122,8 @@ class EditPersonRef(EditSecondary):
if self.obj.ref:
p = self.dbstate.db.get_person_from_handle(self.obj.ref)
- self.person_label.set_text(name_displayer.display(p))
+ self.person_label.set_markup("" + name_displayer.display(p) + "")
+ # self.person_label.set_text(name_displayer.display(p))
self.street = MonitoredEntry(
self.top.get_object("relationship"),
@@ -166,9 +170,41 @@ class EditPersonRef(EditSecondary):
def update_person(self, person):
if person:
self.obj.ref = person.get_handle()
- self.person_label.set_text(name_displayer.display(person))
+ self.person_label.set_markup("" + name_displayer.display(person) + "")
self._update_dnd_capability()
-
+
+
+ def find_parent_with_attr(self, attr="dbstate"):
+ """
+ """
+ # Find a parent with attr:
+ obj = self
+ while obj:
+ if hasattr(obj, attr):
+ break
+ obj = obj.get_parent()
+ return obj
+
+ def on_person_label_activate_link(self, widget, uri):
+ """
+ Handle the standard gtk interface for activate_link.
+ """
+ # this is stupid
+ if uri.startswith("gramps://"):
+ # if in a window:
+ win_obj = self.find_parent_with_attr(attr="dbstate")
+ if win_obj:
+ # Edit the object:
+ obj_class, prop, value = uri[9:].split("/")
+ from ..editors import EditObject
+ EditObject(win_obj.dbstate,
+ win_obj.uistate,
+ win_obj.track,
+ obj_class, prop, value)
+ return
+
+ display_url(uri)
+
def on_drag_persondata_received(self, widget, context, x, y, sel_data,
info, time):
"""