8095:Association editor refuses dropped persons
This commit is contained in:
committed by
Nick Hall
parent
5324ca28d4
commit
077be0c07e
@@ -33,6 +33,12 @@ mechanism for the user to edit address information.
|
|||||||
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
from gramps.gen.const import GRAMPS_LOCALE as glocale
|
||||||
_ = glocale.translation.gettext
|
_ = glocale.translation.gettext
|
||||||
|
|
||||||
|
import sys
|
||||||
|
if sys.version_info[0] < 3:
|
||||||
|
import cPickle as pickle
|
||||||
|
else:
|
||||||
|
import pickle
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
# GTK/Gnome modules
|
# GTK/Gnome modules
|
||||||
@@ -52,6 +58,8 @@ from ..widgets import MonitoredEntry, PrivacyButton
|
|||||||
from ..selectors import SelectorFactory
|
from ..selectors import SelectorFactory
|
||||||
from .displaytabs import CitationEmbedList, NoteTab
|
from .displaytabs import CitationEmbedList, NoteTab
|
||||||
from ..glade import Glade
|
from ..glade import Glade
|
||||||
|
from ..ddtargets import DdTargets
|
||||||
|
from gi.repository import Gdk
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@@ -83,6 +91,18 @@ class EditPersonRef(EditSecondary):
|
|||||||
_('Person Reference Editor'))
|
_('Person Reference Editor'))
|
||||||
self.person_label = self.top.get_object('person')
|
self.person_label = self.top.get_object('person')
|
||||||
|
|
||||||
|
#allow for drop:
|
||||||
|
self.person_label.drag_dest_set(Gtk.DestDefaults.MOTION |
|
||||||
|
Gtk.DestDefaults.DROP,
|
||||||
|
[],
|
||||||
|
Gdk.DragAction.COPY)
|
||||||
|
tglist = Gtk.TargetList.new([])
|
||||||
|
tglist.add(DdTargets.PERSON_LINK.atom_drag_type,
|
||||||
|
DdTargets.PERSON_LINK.target_flags,
|
||||||
|
DdTargets.PERSON_LINK.app_id)
|
||||||
|
self.person_label.drag_dest_set_target_list(tglist)
|
||||||
|
self.person_label.connect('drag_data_received', self.on_drag_persondata_received)
|
||||||
|
|
||||||
def _setup_fields(self):
|
def _setup_fields(self):
|
||||||
|
|
||||||
if self.obj.ref:
|
if self.obj.ref:
|
||||||
@@ -128,11 +148,23 @@ class EditPersonRef(EditSecondary):
|
|||||||
|
|
||||||
sel = SelectPerson(self.dbstate, self.uistate, self.track)
|
sel = SelectPerson(self.dbstate, self.uistate, self.track)
|
||||||
person = sel.run()
|
person = sel.run()
|
||||||
|
self.update_person(person)
|
||||||
|
|
||||||
|
def update_person(self, person):
|
||||||
if person:
|
if person:
|
||||||
self.obj.ref = person.get_handle()
|
self.obj.ref = person.get_handle()
|
||||||
self.person_label.set_text(name_displayer.display(person))
|
self.person_label.set_text(name_displayer.display(person))
|
||||||
|
|
||||||
|
def on_drag_persondata_received(self, widget, context, x, y, sel_data,
|
||||||
|
info, time):
|
||||||
|
"""
|
||||||
|
Handle the standard gtk interface for drag_data_received.
|
||||||
|
"""
|
||||||
|
if sel_data and sel_data.get_data():
|
||||||
|
(drag_type, idval, handle, val) = pickle.loads(sel_data.get_data())
|
||||||
|
person = self.db.get_person_from_handle(handle)
|
||||||
|
self.update_person(person)
|
||||||
|
|
||||||
def _create_tabbed_pages(self):
|
def _create_tabbed_pages(self):
|
||||||
"""
|
"""
|
||||||
Create the notebook tabs and inserts them into the main
|
Create the notebook tabs and inserts them into the main
|
||||||
|
Reference in New Issue
Block a user