* src/DataViews/_PedigreeView.py: Add DnD support to the person boxes (a person can now be dragged to the ScratshPad or to a text-editor); Menu entry to copy person data (rendered as text) into clipboard
svn: r6209
This commit is contained in:
parent
0e7728a169
commit
6d2e8b34c9
@ -1,3 +1,7 @@
|
|||||||
|
2006-03-25 Martin Hawlisch <Martin.Hawlisch@gmx.de>
|
||||||
|
* src/DataViews/_PedigreeView.py: Add DnD support to the person boxes;
|
||||||
|
copy person data into clipboard
|
||||||
|
|
||||||
2006-03-24 Don Allingham <don@gramps-project.org>
|
2006-03-24 Don Allingham <don@gramps-project.org>
|
||||||
* src/Editors/_EditFamily.py: handle single parent families on
|
* src/Editors/_EditFamily.py: handle single parent families on
|
||||||
family switch with adding parents
|
family switch with adding parents
|
||||||
|
@ -56,6 +56,9 @@ import DateHandler
|
|||||||
import ImgManip
|
import ImgManip
|
||||||
from PluginUtils import ReportUtils
|
from PluginUtils import ReportUtils
|
||||||
from Editors import EditPerson
|
from Editors import EditPerson
|
||||||
|
from DdTargets import DdTargets
|
||||||
|
import cPickle as pickle
|
||||||
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------------
|
#-------------------------------------------------------------------------
|
||||||
#
|
#
|
||||||
@ -91,14 +94,34 @@ class PersonBoxWidget_old( gtk.Button):
|
|||||||
self.modify_bg( gtk.STATE_PRELIGHT, white)
|
self.modify_bg( gtk.STATE_PRELIGHT, white)
|
||||||
self.modify_bg( gtk.STATE_SELECTED, white)
|
self.modify_bg( gtk.STATE_SELECTED, white)
|
||||||
|
|
||||||
class PersonBoxWidget_cairo( gtk.DrawingArea):
|
class _PersonWidget_base:
|
||||||
|
def __init__(self, fh, person):
|
||||||
|
self.fh = fh
|
||||||
|
self.person = person
|
||||||
|
if self.person:
|
||||||
|
self.connect("drag_data_get", self.drag_data_get)
|
||||||
|
self.drag_source_set(gtk.gdk.BUTTON1_MASK,
|
||||||
|
[DdTargets.PERSON_LINK.target()]+
|
||||||
|
[t.target() for t in DdTargets._all_text_types],
|
||||||
|
gtk.gdk.ACTION_COPY)
|
||||||
|
|
||||||
|
def drag_data_get(self, widget, context, sel_data, info, time):
|
||||||
|
print( "drag_data_get")
|
||||||
|
print sel_data.target
|
||||||
|
if sel_data.target == DdTargets.PERSON_LINK.drag_type:
|
||||||
|
data = (DdTargets.PERSON_LINK.drag_type, id(self), self.person.get_handle(), 0)
|
||||||
|
sel_data.set(sel_data.target, 8, pickle.dumps(data))
|
||||||
|
else:
|
||||||
|
sel_data.set(sel_data.target, 8, self.fh.format_person( self.person,11))
|
||||||
|
|
||||||
|
|
||||||
|
class PersonBoxWidget_cairo( gtk.DrawingArea, _PersonWidget_base):
|
||||||
def __init__(self,fh,person,maxlines,image=None):
|
def __init__(self,fh,person,maxlines,image=None):
|
||||||
gtk.DrawingArea.__init__(self)
|
gtk.DrawingArea.__init__(self)
|
||||||
|
_PersonWidget_base.__init__(self,fh,person)
|
||||||
self.add_events(gtk.gdk.BUTTON_PRESS_MASK) # Required for popup menu
|
self.add_events(gtk.gdk.BUTTON_PRESS_MASK) # Required for popup menu
|
||||||
self.add_events(gtk.gdk.ENTER_NOTIFY_MASK) # Required for tooltip and mouse-over
|
self.add_events(gtk.gdk.ENTER_NOTIFY_MASK) # Required for tooltip and mouse-over
|
||||||
self.add_events(gtk.gdk.LEAVE_NOTIFY_MASK) # Required for tooltip and mouse-over
|
self.add_events(gtk.gdk.LEAVE_NOTIFY_MASK) # Required for tooltip and mouse-over
|
||||||
self.fh = fh
|
|
||||||
self.person = person
|
|
||||||
self.maxlines = maxlines
|
self.maxlines = maxlines
|
||||||
self.hightlight = False
|
self.hightlight = False
|
||||||
self.connect("expose_event", self.expose)
|
self.connect("expose_event", self.expose)
|
||||||
@ -229,14 +252,13 @@ class PersonBoxWidget_cairo( gtk.DrawingArea):
|
|||||||
self.context.stroke()
|
self.context.stroke()
|
||||||
|
|
||||||
|
|
||||||
class PersonBoxWidget( gtk.DrawingArea):
|
class PersonBoxWidget( gtk.DrawingArea, _PersonWidget_base):
|
||||||
def __init__(self,fh,person,maxlines,image=None):
|
def __init__(self,fh,person,maxlines,image=None):
|
||||||
gtk.DrawingArea.__init__(self)
|
gtk.DrawingArea.__init__(self)
|
||||||
|
_PersonWidget_base.__init__(self,fh,person)
|
||||||
self.add_events(gtk.gdk.BUTTON_PRESS_MASK) # Required for popup menu
|
self.add_events(gtk.gdk.BUTTON_PRESS_MASK) # Required for popup menu
|
||||||
self.add_events(gtk.gdk.ENTER_NOTIFY_MASK) # Required for tooltip and mouse-over
|
self.add_events(gtk.gdk.ENTER_NOTIFY_MASK) # Required for tooltip and mouse-over
|
||||||
self.add_events(gtk.gdk.LEAVE_NOTIFY_MASK) # Required for tooltip and mouse-over
|
self.add_events(gtk.gdk.LEAVE_NOTIFY_MASK) # Required for tooltip and mouse-over
|
||||||
self.fh = fh
|
|
||||||
self.person = person
|
|
||||||
self.maxlines = maxlines
|
self.maxlines = maxlines
|
||||||
try:
|
try:
|
||||||
self.image = gtk.gdk.pixbuf_new_from_file( image)
|
self.image = gtk.gdk.pixbuf_new_from_file( image)
|
||||||
@ -917,6 +939,15 @@ class PedigreeView(PageView.PersonNavView):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
def copy_person_to_clipboard_cb(self,obj,person_handle):
|
||||||
|
"""Renders the person data into some lines of text and puts that into the clipboard"""
|
||||||
|
person = self.db.get_person_from_handle(person_handle)
|
||||||
|
if person:
|
||||||
|
cb = gtk.clipboard_get(gtk.gdk.SELECTION_CLIPBOARD)
|
||||||
|
cb.set_text( self.format_helper.format_person(person,11))
|
||||||
|
return True
|
||||||
|
return False
|
||||||
|
|
||||||
def on_show_option_menu_cb(self,obj,data=None):
|
def on_show_option_menu_cb(self,obj,data=None):
|
||||||
myMenu = gtk.Menu()
|
myMenu = gtk.Menu()
|
||||||
self.add_nav_portion_to_menu(myMenu)
|
self.add_nav_portion_to_menu(myMenu)
|
||||||
@ -1160,15 +1191,16 @@ class PedigreeView(PageView.PersonNavView):
|
|||||||
go_item.show()
|
go_item.show()
|
||||||
menu.append(go_item)
|
menu.append(go_item)
|
||||||
|
|
||||||
#edit_image = gtk.image_new_from_stock(gtk.STOCK_JUMP_TO,gtk.ICON_SIZE_MENU)
|
|
||||||
#edit_image.show()
|
|
||||||
edit_item = gtk.ImageMenuItem(gtk.STOCK_EDIT)
|
edit_item = gtk.ImageMenuItem(gtk.STOCK_EDIT)
|
||||||
#edit_item.set_image(edit_image)
|
edit_item.connect("activate",self.edit_person_cb,person_handle)
|
||||||
edit_item.set_data(_PERSON,person_handle)
|
|
||||||
edit_item.connect("activate",self.edit_person_cb)
|
|
||||||
edit_item.show()
|
edit_item.show()
|
||||||
menu.append(edit_item)
|
menu.append(edit_item)
|
||||||
|
|
||||||
|
clipboard_item = gtk.ImageMenuItem(gtk.STOCK_COPY)
|
||||||
|
clipboard_item.connect("activate",self.copy_person_to_clipboard_cb,person_handle)
|
||||||
|
clipboard_item.show()
|
||||||
|
menu.append(clipboard_item)
|
||||||
|
|
||||||
# collect all spouses, parents and children
|
# collect all spouses, parents and children
|
||||||
linked_persons = []
|
linked_persons = []
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user