* src/FamilyView.py: provide hyper links

svn: r5664
This commit is contained in:
Don Allingham 2006-01-04 05:39:39 +00:00
parent 9b191aacdc
commit aa27c0fe59
2 changed files with 83 additions and 20 deletions

View File

@ -1,3 +1,6 @@
2006-01-03 Don Allingham <don@gramps-project.org>
* src/FamilyView.py: provide hyper links
2006-01-03 Alex Roitman <shura@gramps-project.org> 2006-01-03 Alex Roitman <shura@gramps-project.org>
* src/DisplayState.py (push): Typo. * src/DisplayState.py (push): Typo.

View File

@ -25,6 +25,8 @@ import RelLib
import PageView import PageView
import DisplayTrace import DisplayTrace
import NameDisplay import NameDisplay
import Utils
import DateHandler
class FamilyView(PageView.PageView): class FamilyView(PageView.PageView):
@ -42,10 +44,14 @@ class FamilyView(PageView.PageView):
return 'gramps-family' return 'gramps-family'
def build_widget(self): def build_widget(self):
self.scroll = gtk.ScrolledWindow()
self.scroll.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
self.scroll.show()
self.vbox = gtk.VBox() self.vbox = gtk.VBox()
self.vbox.show() self.vbox.show()
self.child = None self.child = None
return self.vbox self.scroll.add_with_viewport(self.vbox)
return self.scroll
def navigation_type(self): def navigation_type(self):
return PageView.NAVIGATION_PERSON return PageView.NAVIGATION_PERSON
@ -74,7 +80,7 @@ class FamilyView(PageView.PageView):
def change_person(self,obj): def change_person(self,obj):
if self.child: if self.child:
self.vbox.remove(self.child) self.vbox.remove(self.child)
self.child = gtk.Table(10,8) self.child = gtk.Table(20,5)
self.child.set_border_width(12) self.child.set_border_width(12)
self.child.set_col_spacings(12) self.child.set_col_spacings(12)
self.child.set_row_spacings(6) self.child.set_row_spacings(6)
@ -95,38 +101,53 @@ class FamilyView(PageView.PageView):
self.write_family(family_handle) self.write_family(family_handle)
self.child.show() self.child.show()
self.vbox.pack_start(self.child,expand=False,fill=False) self.vbox.pack_start(self.child,False)
def make_button(self,handle,icon,func): def make_button(self,handle,icon,func):
image = gtk.Image() image = gtk.Image()
image.set_from_stock(icon,gtk.ICON_SIZE_MENU) image.set_from_stock(icon,gtk.ICON_SIZE_MENU)
image.show() image.show()
button = gtk.Button() eventbox = gtk.EventBox()
button.add(image) eventbox.add(image)
button.connect('clicked',func,handle) eventbox.show()
button.show() eventbox.connect('button-press-event',self.edit_button_press,handle)
return button return eventbox
def edit_button_press(self, obj, event, handle):
if event.type == gtk.gdk.BUTTON_PRESS and event.button == 1:
import EditPerson
person = self.dbstate.db.get_person_from_handle(handle)
EditPerson.EditPerson(self.dbstate, self.uistate, [], person)
def make_edit_button(self,handle): def make_edit_button(self,handle):
return self.make_button(handle,gtk.STOCK_EDIT,self.edit_person) return self.make_button(handle,gtk.STOCK_EDIT,self.edit_person)
def write_title(self,person): def write_title(self,person):
label = gtk.Label('<span size="larger" weight="bold">%s</span>' label = gtk.Label('<span size="larger" weight="bold">%s</span>'
% NameDisplay.displayer.display(person)) % NameDisplay.displayer.display(person))
label.set_use_markup(True) label.set_use_markup(True)
label.set_alignment(0,0.5) label.set_alignment(0,0.5)
label.show() label.show()
self.child.attach(label,0,6,0,1) self.child.attach(label,0,4,0,1)
button = self.make_edit_button(person.handle) button = self.make_edit_button(person.handle)
self.child.attach(button,7,8,0,1,xoptions=0) self.child.attach(button,4,5,0,1,xoptions=0)
self.row = 1 self.child.attach(gtk.HSeparator(),0,5,1,2)
self.row = 2
def write_data(self,title):
label = gtk.Label(title)
label.set_alignment(0,0.5)
label.show()
self.child.attach(label,3,5,self.row,self.row+1,
xoptions=gtk.EXPAND|gtk.FILL)
self.row += 1
def write_label(self,title): def write_label(self,title):
label = gtk.Label('<span weight="bold">%s</span>' % title) label = gtk.Label('<span style="oblique" weight="bold">%s</span>' % title)
label.set_use_markup(True) label.set_use_markup(True)
label.set_alignment(0,0.5) label.set_alignment(0,0.5)
label.show() label.show()
self.child.attach(label,1,6,self.row,self.row+1) self.child.attach(label,1,5,self.row,self.row+1)
self.row += 1 self.row += 1
def write_person(self,title,handle): def write_person(self,title,handle):
@ -134,11 +155,12 @@ class FamilyView(PageView.PageView):
format = '<span weight="bold">%s: </span>' format = '<span weight="bold">%s: </span>'
else: else:
format = "%s" format = "%s"
label = gtk.Label(format % title) label = gtk.Label(format % title)
label.set_use_markup(True) label.set_use_markup(True)
label.set_alignment(1.0,0.5) label.set_alignment(0,0.5)
label.show() label.show()
self.child.attach(label,2,3,self.row,self.row+1,xoptions=0) self.child.attach(label,2,3,self.row,self.row+1,xoptions=gtk.FILL)
label = gtk.Label('<span underline="single">%s</span>' % label = gtk.Label('<span underline="single">%s</span>' %
self.get_name(handle)) self.get_name(handle))
@ -152,11 +174,16 @@ class FamilyView(PageView.PageView):
eventbox.connect('enter-notify-event',self.enter_text,handle) eventbox.connect('enter-notify-event',self.enter_text,handle)
eventbox.connect('leave-notify-event',self.leave_text,handle) eventbox.connect('leave-notify-event',self.leave_text,handle)
eventbox.show() eventbox.show()
self.child.attach(eventbox,3,4,self.row,self.row+1,
xoptions=gtk.EXPAND|gtk.FILL)
button = self.make_edit_button(handle) button = self.make_edit_button(handle)
self.child.attach(button,7,8,self.row,self.row+1,xoptions=0)
box = gtk.HBox()
box.set_spacing(6)
box.pack_start(eventbox,False)
box.pack_start(button,False)
box.show()
self.child.attach(box,3,4,self.row,self.row+1,
xoptions=gtk.EXPAND|gtk.FILL)
self.row += 1 self.row += 1
def button_press(self,obj,event,handle): def button_press(self,obj,event,handle):
@ -183,6 +210,35 @@ class FamilyView(PageView.PageView):
self.write_person(_('Father'),family.get_father_handle()) self.write_person(_('Father'),family.get_father_handle())
self.write_person(_('Mother'),family.get_mother_handle()) self.write_person(_('Mother'),family.get_mother_handle())
def write_relationship(self,family):
rtype = family.get_relationship()
if type(rtype) == tuple:
if rtype[0] == RelLib.Family.CUSTOM:
rel_text = rtype[1]
else:
rel_text = Utils.family_relations[rtype[0]]
else:
rel_text = Utils.family_relations[rtype]
self.write_data(_('Relationship type: %s') % rel_text)
def place_name(self,handle):
p = self.dbstate.db.get_place_from_handle(handle)
return p.get_title()
def write_marriage(self,family):
for event_ref in family.get_event_ref_list():
handle = event_ref.ref
event = self.dbstate.db.get_event_from_handle(handle)
etype = event.get_type()
if etype[0] == RelLib.Event.MARRIAGE:
dobj = event.get_date_object()
pname = self.place_name(event.get_place_handle())
value = {
'date' : DateHandler.displayer.display(dobj),
'place' : pname,
}
self.write_data(_('Married: %(date)s in %(place)s') % value)
def write_family(self,family_handle): def write_family(self,family_handle):
family = self.dbstate.db.get_family_from_handle(family_handle) family = self.dbstate.db.get_family_from_handle(family_handle)
father_handle = family.get_father_handle() father_handle = family.get_father_handle()
@ -191,6 +247,10 @@ class FamilyView(PageView.PageView):
self.write_person(_('Spouse'),mother_handle) self.write_person(_('Spouse'),mother_handle)
else: else:
self.write_person(_('Spouse'),father_handle) self.write_person(_('Spouse'),father_handle)
self.write_relationship(family)
self.write_marriage(family)
child_list = family.get_child_handle_list() child_list = family.get_child_handle_list()
label = _("Children") label = _("Children")
if child_list: if child_list: