* src/plugins/ScratchPad.py: made clear buttons sensitive to contents of
	list and current selection. Added support for PERSON_LINK dnd.
	* src/DdTargets.py: added PERSON_LINK target and simplified generation of
	targets lists.
	* src/FamilyView.py: added dnd of person handles to and from the child list.
	* src/PeopleView.py: added dnd of person handles from the person list.


svn: r4303
This commit is contained in:
Richard Taylor
2005-04-06 09:28:54 +00:00
parent 5827c03c6a
commit b00f2e8645
5 changed files with 168 additions and 42 deletions

View File

@@ -425,6 +425,49 @@ class ScratchMediaObj(ScratchPadWrapper):
"%s" % (_("Media Object"),
escape(self._obj))
class ScratchPersonLink(ScratchPadWrapper):
DROP_TARGETS = [DdTargets.PERSON_LINK]
DRAG_TARGET = DdTargets.PERSON_LINK
ICON = LINK_PIC
def __init__(self,db,obj):
ScratchPadWrapper.__init__(self,db,obj)
self._type = _("Person Link")
person = self._db.get_person_from_handle(self._obj)
self._title = person.get_primary_name().get_name()
birth_handle = person.get_birth_handle()
if birth_handle:
birth = self._db.get_event_from_handle(birth_handle)
if birth.get_date() and birth.get_date() != "":
self._value = escape(birth.get_date())
def tooltip(self):
global escape
person = self._db.get_person_from_handle(self._obj)
s = "<big><b>%s</b></big>\n\n"\
"\t<b>%s:</b>\t%s\n"\
"\t<b>%s:</b>\t%s\n" % (
_("Person Link"),
_("Name"),escape(self._title),
_("Birth"),escape(self._value))
if len(person.get_source_references()) > 0:
psrc_ref = person.get_source_references()[0]
psrc_id = psrc_ref.get_base_handle()
psrc = self._db.get_source_from_handle(psrc_id)
s += "\n<big><b>%s</b></big>\n\n"\
"\t<b>%s:</b>\t%s\n" % (
_("Primary source"),
_("Name"),
escape(short(psrc.get_title())))
return s
#-------------------------------------------------------------------------
#
@@ -518,6 +561,7 @@ class ScratchPadListView:
self.register_wrapper_class(ScratchPadName)
self.register_wrapper_class(ScratchPadText)
self.register_wrapper_class(ScratchMediaObj)
self.register_wrapper_class(ScratchPersonLink)
def register_wrapper_class(self,wrapper_class):
@@ -676,12 +720,20 @@ class ScratchPadWindow:
self.window = self.top.get_widget("scratch_pad")
self.window.set_icon(self.parent.topWindow.get_icon())
self.clear_all_btn = self.top.get_widget("btn_clear_all")
self.clear_btn = self.top.get_widget("btn_clear")
self.object_list = ScratchPadListView(self.db,self.top.get_widget('objectlist'))
self.object_list.get_selection().connect('changed',self.set_clear_btn_sensitivity)
self.set_clear_btn_sensitivity(sel=self.object_list.get_selection())
if not ScratchPadWindow.otree:
ScratchPadWindow.otree = ScratchPadListModel()
self.set_clear_all_btn_sensitivity(treemodel=ScratchPadWindow.otree)
ScratchPadWindow.otree.connect('row-deleted',self.set_clear_all_btn_sensitivity)
ScratchPadWindow.otree.connect('row-inserted',self.set_clear_all_btn_sensitivity)
self.object_list.set_model(ScratchPadWindow.otree)
self.top.signal_autoconnect({
@@ -697,6 +749,19 @@ class ScratchPadWindow:
self.add_itself_to_menu()
self.window.show()
def set_clear_all_btn_sensitivity(self, treemodel=None, path=None, iter=None, user_param1=None):
if len(treemodel) == 0:
self.clear_all_btn.set_sensitive(False)
else:
self.clear_all_btn.set_sensitive(True)
def set_clear_btn_sensitivity(self, sel=None, user_param1=None):
if sel.count_selected_rows() == 0:
self.clear_btn.set_sensitive(False)
else:
self.clear_btn.set_sensitive(True)
def on_delete_event(self,obj,b):
self.remove_itself_from_menu()