* src/DisplayTabs.py: Move event list

* src/EditFamily.py: add editing of people, add relationship type
* src/EventEdit.py: move event list
* src/FamilyView.py: remove common widgets
* src/gramps.glade: EditFamily changes
* src/GrampsWidgets.py: Common widgets


svn: r5749
This commit is contained in:
Don Allingham 2006-01-13 22:28:54 +00:00
parent 58d66f6708
commit 0e48f23eb2
6 changed files with 255 additions and 269 deletions

View File

@ -1,3 +1,11 @@
2006-01-13 Don Allingham <don@gramps-project.org>
* src/DisplayTabs.py: Move event list
* src/EditFamily.py: add editing of people, add relationship type
* src/EventEdit.py: move event list
* src/FamilyView.py: remove common widgets
* src/gramps.glade: EditFamily changes
* src/GrampsWidgets.py: Common widgets
2006-01-13 Alex Roitman <shura@gramps-project.org> 2006-01-13 Alex Roitman <shura@gramps-project.org>
* src/ViewManager.py: Proper label change for Undo/Redo. * src/ViewManager.py: Proper label change for Undo/Redo.

View File

@ -52,8 +52,6 @@ class EmbeddedList(gtk.HBox):
self.tree.remove_column(column) self.tree.remove_column(column)
self.columns = [] self.columns = []
#for pair in self.parent.db.get_child_column_order():
for pair in self.column_order(): for pair in self.column_order():
if not pair[0]: if not pair[0]:
continue continue
@ -74,6 +72,40 @@ class EmbeddedList(gtk.HBox):
def get_tab_widget(self): def get_tab_widget(self):
return gtk.Label('UNDEFINED') return gtk.Label('UNDEFINED')
class EventEmbedList(EmbeddedList):
column_names = [
(_('Description'),0),
(_('ID'),1),
(_('Type'),2),
(_('Date'),3),
(_('Place'),4),
(_('Cause'),5),
]
def __init__(self,db,obj):
self.obj = obj
self.hbox = gtk.HBox()
self.label = gtk.Label(_('Events'))
self.hbox.show_all()
EmbeddedList.__init__(self, db, EventRefModel)
def get_data(self):
return self.obj.get_event_ref_list()
def column_order(self):
return ((1,0),(1,1),(1,2),(1,3),(1,4),(1,5))
def set_label(self):
if len(self.get_data()):
self.label.set_text("<b>%s</b>" % _('Events'))
self.label.set_use_markup(True)
else:
self.label.set_text(_('Events'))
def get_tab_widget(self):
return self.label
class NoteTab(gtk.HBox): class NoteTab(gtk.HBox):

View File

@ -49,53 +49,19 @@ import gtk.glade
#------------------------------------------------------------------------- #-------------------------------------------------------------------------
import const import const
import Utils import Utils
import ImageSelect
import NameDisplay import NameDisplay
import DisplayState import DisplayState
import Spell import Spell
import GrampsDisplay import GrampsDisplay
import RelLib import RelLib
import ListModel
import ReportUtils import ReportUtils
import DisplayTabs import DisplayTabs
import AutoComp
import GrampsWidgets
from DdTargets import DdTargets from DdTargets import DdTargets
from WindowUtils import GladeIf from WindowUtils import GladeIf
class EventEmbedList(DisplayTabs.EmbeddedList):
column_names = [
(_('Description'),0),
(_('ID'),1),
(_('Type'),2),
(_('Date'),3),
(_('Place'),4),
(_('Cause'),5),
]
def __init__(self,db,family):
self.family = family
self.hbox = gtk.HBox()
self.label = gtk.Label(_('Events'))
self.hbox.show_all()
DisplayTabs.EmbeddedList.__init__(self, db, DisplayTabs.EventRefModel)
def get_data(self):
return self.family.get_event_ref_list()
def column_order(self):
return ((1,0),(1,1),(1,2),(1,3),(1,4),(1,5))
def set_label(self):
if len(self.get_data()):
self.label.set_text("<b>%s</b>" % _('Events'))
self.label.set_use_markup(True)
else:
self.label.set_text(_('Events'))
def get_tab_widget(self):
return self.label
class AttrEmbedList(DisplayTabs.EmbeddedList): class AttrEmbedList(DisplayTabs.EmbeddedList):
@ -203,6 +169,9 @@ class EditFamily(DisplayState.ManagedWindow):
if self.family: if self.family:
self.load_data() self.load_data()
self.mname = None
self.fname = None
self.show() self.show()
def build_menu_names(self,obj): def build_menu_names(self,obj):
@ -216,44 +185,57 @@ class EditFamily(DisplayState.ManagedWindow):
self.gladeif = GladeIf(self.top) self.gladeif = GladeIf(self.top)
self.window = self.top.get_widget("marriageEditor") self.window = self.top.get_widget("marriageEditor")
self.fname = self.top.get_widget('fname')
self.fbirth = self.top.get_widget('fbirth') self.fbirth = self.top.get_widget('fbirth')
self.fdeath = self.top.get_widget('fdeath') self.fdeath = self.top.get_widget('fdeath')
self.mname = self.top.get_widget('mname')
self.mbirth = self.top.get_widget('mbirth') self.mbirth = self.top.get_widget('mbirth')
self.mdeath = self.top.get_widget('mdeath') self.mdeath = self.top.get_widget('mdeath')
self.gid = self.top.get_widget('gid') self.gid = self.top.get_widget('gid')
self.reltype= self.top.get_widget('relationship_type') self.reltype= self.top.get_widget('marriage_type')
self.mbutton= self.top.get_widget('mbutton') self.mbutton= self.top.get_widget('mbutton')
self.fbutton= self.top.get_widget('fbutton') self.fbutton= self.top.get_widget('fbutton')
self.mbox = self.top.get_widget('mbox')
self.fbox = self.top.get_widget('fbox')
self.ok = self.top.get_widget('ok') self.ok = self.top.get_widget('ok')
self.cancel = self.top.get_widget('cancel') self.cancel = self.top.get_widget('cancel')
self.vbox = self.top.get_widget('vbox') self.vbox = self.top.get_widget('vbox')
self.child_list = self.top.get_widget('child_list')
rel_types = dict(Utils.family_relations)
mtype = self.family.get_relationship()
if mtype:
defval = mtype[0]
else:
defval = None
self.type_sel = AutoComp.StandardCustomSelector(
rel_types, self.reltype, RelLib.Family.CUSTOM, defval)
self.notebook = gtk.Notebook() self.notebook = gtk.Notebook()
self.notebook.show() self.notebook.show()
self.vbox.pack_start(self.notebook,True) self.vbox.pack_start(self.notebook,True)
self.child_list = self.top.get_widget('child_list')
self.cancel.connect('clicked', self.close_window) self.cancel.connect('clicked', self.close_window)
def load_data(self): def load_data(self):
self.load_parent(self.family.get_father_handle(),self.fname, self.update_father(self.family.get_father_handle())
self.fbirth, self.fdeath, self.fbutton) self.update_mother(self.family.get_mother_handle())
self.load_parent(self.family.get_mother_handle(),self.mname,
self.mbirth, self.mdeath, self.mbutton) self.mbutton.connect('clicked',self.mother_clicked)
self.fbutton.connect('clicked',self.father_clicked)
self.child_list = ChildEmbedList(self.dbstate.db, self.family) self.child_list = ChildEmbedList(self.dbstate.db, self.family)
self.event_list = EventEmbedList(self.dbstate.db, self.family) self.event_list = DisplayTabs.EventEmbedList(self.dbstate.db, self.family)
self.attr_list = AttrEmbedList(self.dbstate.db, self.family.get_attribute_list()) self.attr_list = AttrEmbedList(self.dbstate.db, self.family.get_attribute_list())
self.note_tab = DisplayTabs.NoteTab(self.family.get_note_object()) self.note_tab = DisplayTabs.NoteTab(self.family.get_note_object())
self.gallery_tab = DisplayTabs.GalleryTab(self.dbstate.db,self.family.get_media_list()) self.gallery_tab = DisplayTabs.GalleryTab(self.dbstate.db,
self.family.get_media_list())
self.notebook.insert_page(self.child_list) self.notebook.insert_page(self.child_list)
self.notebook.set_tab_label(self.child_list,self.child_list.get_tab_widget()) self.notebook.set_tab_label(self.child_list,self.child_list.get_tab_widget())
@ -272,10 +254,40 @@ class EditFamily(DisplayState.ManagedWindow):
self.gid.set_text(self.family.get_gramps_id()) self.gid.set_text(self.family.get_gramps_id())
def update_father(self,handle):
self.load_parent(handle, self.fbox, self.fbirth, self.fdeath, self.fbutton)
def load_parent(self,handle,name_obj,birth_obj,death_obj,btn_obj): def update_mother(self,handle):
self.load_parent(handle, self.mbox, self.mbirth, self.mdeath, self.mbutton)
def mother_clicked(self,obj):
handle = self.family.get_mother_handle()
if handle:
self.family.set_mother_handle(None)
self.update_mother(None)
else:
print "Call person selector"
def father_clicked(self,obj):
handle = self.family.get_father_handle()
if handle:
self.family.set_father_handle(None)
self.update_father(None)
else:
print "Call person selector"
def edit_person(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, self.track, person)
def load_parent(self,handle,box,birth_obj,death_obj,btn_obj):
is_used = handle != None is_used = handle != None
for i in box.get_children():
box.remove(i)
btn_obj.remove(btn_obj.get_children()[0]) btn_obj.remove(btn_obj.get_children()[0])
@ -292,6 +304,11 @@ class EditFamily(DisplayState.ManagedWindow):
del_image.show() del_image.show()
del_image.set_from_stock(gtk.STOCK_REMOVE,gtk.ICON_SIZE_BUTTON) del_image.set_from_stock(gtk.STOCK_REMOVE,gtk.ICON_SIZE_BUTTON)
btn_obj.add(del_image) btn_obj.add(del_image)
box.pack_start(GrampsWidgets.LinkBox(
GrampsWidgets.BasicLabel(name),
GrampsWidgets.IconButton(self.edit_person,person.handle)
))
else: else:
name = "" name = ""
birth = "" birth = ""
@ -302,7 +319,6 @@ class EditFamily(DisplayState.ManagedWindow):
add_image.set_from_stock(gtk.STOCK_ADD,gtk.ICON_SIZE_BUTTON) add_image.set_from_stock(gtk.STOCK_ADD,gtk.ICON_SIZE_BUTTON)
btn_obj.add(add_image) btn_obj.add(add_image)
name_obj.set_text(name)
birth_obj.set_text(birth) birth_obj.set_text(birth)
death_obj.set_text(death) death_obj.set_text(death)

View File

@ -240,20 +240,20 @@ class EventEditor(DisplayState.ManagedWindow):
date_stat, date_stat,
self.window) self.window)
self.icon_list = self.top.get_widget("iconlist") # self.icon_list = self.top.get_widget("iconlist")
self.gallery = ImageSelect.Gallery(event, self.db.commit_event, # self.gallery = ImageSelect.Gallery(event, self.db.commit_event,
self.path, self.icon_list, # self.path, self.icon_list,
self.db,self,self.window) # self.db,self,self.window)
self.gladeif.connect('event_edit','delete_event',self.on_delete_event) self.gladeif.connect('event_edit','delete_event',self.on_delete_event)
self.gladeif.connect('button111','clicked',self.close) self.gladeif.connect('button111','clicked',self.close)
self.gladeif.connect('ok','clicked',self.on_event_edit_ok_clicked) self.gladeif.connect('ok','clicked',self.on_event_edit_ok_clicked)
self.gladeif.connect('button126','clicked',self.on_help_clicked) self.gladeif.connect('button126','clicked',self.on_help_clicked)
self.gladeif.connect('notebook','switch_page',self.on_switch_page) self.gladeif.connect('notebook','switch_page',self.on_switch_page)
self.gladeif.connect('add_obj','clicked',self.gallery.on_add_media_clicked) # self.gladeif.connect('add_obj','clicked',self.gallery.on_add_media_clicked)
self.gladeif.connect('sel_obj','clicked',self.gallery.on_select_media_clicked) # self.gladeif.connect('sel_obj','clicked',self.gallery.on_select_media_clicked)
self.gladeif.connect('button172','clicked',self.gallery.on_edit_media_clicked) # self.gladeif.connect('button172','clicked',self.gallery.on_edit_media_clicked)
self.gladeif.connect('del_obj','clicked',self.gallery.on_delete_media_clicked) # self.gladeif.connect('del_obj','clicked',self.gallery.on_delete_media_clicked)
self.top.get_widget('del_obj').set_sensitive(not noedit) self.top.get_widget('del_obj').set_sensitive(not noedit)
self.top.get_widget('sel_obj').set_sensitive(not noedit) self.top.get_widget('sel_obj').set_sensitive(not noedit)
@ -285,12 +285,12 @@ class EventEditor(DisplayState.ManagedWindow):
def on_delete_event(self,obj,b): def on_delete_event(self,obj,b):
self.gladeif.close() self.gladeif.close()
self.gallery.close() # self.gallery.close()
gc.collect() gc.collect()
def close(self,obj): def close(self,obj):
self.gladeif.close() self.gladeif.close()
self.gallery.close() # self.gallery.close()
self.window.destroy() self.window.destroy()
gc.collect() gc.collect()

View File

@ -30,6 +30,7 @@ import DateHandler
import ImgManip import ImgManip
import ReportUtils import ReportUtils
import GrampsKeys import GrampsKeys
import GrampsWidgets
_GenderCode = { _GenderCode = {
RelLib.Person.MALE : u'\u2642', RelLib.Person.MALE : u'\u2642',
@ -77,76 +78,6 @@ class AttachList:
self.max_x = max(self.max_x,x1) self.max_x = max(self.max_x,x1)
self.max_y = max(self.max_y,y1) self.max_y = max(self.max_y,y1)
class LinkLabel(gtk.EventBox):
def __init__(self,label,func,handle):
gtk.EventBox.__init__(self)
self.orig_text = cgi.escape(label[0])
self.gender = label[1]
text = '<span underline="single">%s</span>' % self.orig_text
if label[1]:
text += u' %s' % label[1]
self.label = gtk.Label(text)
self.label.set_use_markup(True)
self.label.set_alignment(0,0.5)
self.add(self.label)
self.set_visible_window(False)
self.connect('button-press-event',func,handle)
self.connect('enter-notify-event',self.enter_text,handle)
self.connect('leave-notify-event',self.leave_text,handle)
def enter_text(self,obj,event,handle):
text = '<span foreground="blue" underline="single">%s</span>' % self.orig_text
if self.gender:
text += u" %s" % self.gender
self.label.set_text(text)
self.label.set_use_markup(True)
def leave_text(self,obj,event,handle):
text = '<span underline="single">%s</span>' % self.orig_text
if self.gender:
text += u" %s" % self.gender
self.label.set_text(text)
self.label.set_use_markup(True)
class IconButton(gtk.EventBox):
def __init__(self,func,handle,icon=gtk.STOCK_EDIT):
gtk.EventBox.__init__(self)
image = gtk.Image()
image.set_from_stock(icon,gtk.ICON_SIZE_MENU)
image.show()
self.add(image)
self.show()
self.connect('button-press-event',func,handle)
class LinkBox(gtk.HBox):
def __init__(self,link,button):
gtk.HBox.__init__(self)
self.set_spacing(6)
self.pack_start(link,False)
self.pack_start(button,False)
self.show()
class BasicLabel(gtk.Label):
def __init__(self,text):
gtk.Label.__init__(self,text)
self.set_alignment(0,0.5)
self.show()
class MarkupLabel(gtk.Label):
def __init__(self,text):
gtk.Label.__init__(self,text)
self.set_alignment(0,0.5)
self.set_use_markup(True)
self.show()
class FamilyView(PageView.PersonNavView): class FamilyView(PageView.PersonNavView):
def __init__(self,dbstate,uistate): def __init__(self,dbstate,uistate):
@ -322,10 +253,10 @@ class FamilyView(PageView.PersonNavView):
name = NameDisplay.displayer.display(person) name = NameDisplay.displayer.display(person)
text = '<span size="larger" weight="bold">%s %s</span>' % (cgi.escape(name), text = '<span size="larger" weight="bold">%s %s</span>' % (cgi.escape(name),
_GenderCode[person.gender]) _GenderCode[person.gender])
label = MarkupLabel(text) label = GrampsWidgets.MarkupLabel(text)
button = IconButton(self.edit_button_press,person.handle) button = GrampsWidgets.IconButton(self.edit_button_press,person.handle)
hbox = LinkBox(label,button) hbox = GrampsWidgets.LinkBox(label,button)
# GRAMPS ID # GRAMPS ID
self.row = 1 self.row = 1
@ -397,33 +328,33 @@ class FamilyView(PageView.PersonNavView):
self.write_person_data(ename,'') self.write_person_data(ename,'')
def write_person_data(self,title,data): def write_person_data(self,title,data):
self.attach.attach(BasicLabel(title),_ALABEL_START, self.attach.attach(GrampsWidgets.BasicLabel(title),_ALABEL_START,
_ALABEL_STOP,self.row,self.row+1, _ALABEL_STOP,self.row,self.row+1,
xoptions=gtk.FILL|gtk.SHRINK) xoptions=gtk.FILL|gtk.SHRINK)
self.attach.attach(BasicLabel(data),_ADATA_START,_ADATA_STOP, self.attach.attach(GrampsWidgets.BasicLabel(data),_ADATA_START,_ADATA_STOP,
self.row,self.row+1) self.row,self.row+1)
self.row += 1 self.row += 1
def write_label(self,title,family): def write_label(self,title,family):
msg = "<i><b>%s</b></i>" % cgi.escape(title) msg = "<i><b>%s</b></i>" % cgi.escape(title)
self.attach.attach(MarkupLabel(msg),_LABEL_START,_LABEL_STOP, self.attach.attach(GrampsWidgets.MarkupLabel(msg),_LABEL_START,_LABEL_STOP,
self.row,self.row+1,gtk.SHRINK|gtk.FILL) self.row,self.row+1,gtk.SHRINK|gtk.FILL)
if family: if family:
value = family.gramps_id value = family.gramps_id
else: else:
value = "" value = ""
self.attach.attach(BasicLabel(value),_DATA_START,_DATA_STOP, self.attach.attach(GrampsWidgets.BasicLabel(value),_DATA_START,_DATA_STOP,
self.row,self.row+1,gtk.SHRINK|gtk.FILL) self.row,self.row+1,gtk.SHRINK|gtk.FILL)
hbox = gtk.HBox() hbox = gtk.HBox()
hbox.set_spacing(6) hbox.set_spacing(6)
add = IconButton(self.add_family,None,gtk.STOCK_ADD) add = GrampsWidgets.IconButton(self.add_family,None,gtk.STOCK_ADD)
hbox.pack_start(add,False) hbox.pack_start(add,False)
if family: if family:
edit = IconButton(self.edit_family,family.handle,gtk.STOCK_EDIT) edit = GrampsWidgets.IconButton(self.edit_family,family.handle,gtk.STOCK_EDIT)
hbox.pack_start(edit,False) hbox.pack_start(edit,False)
delete = IconButton(self.delete_family,family.handle,gtk.STOCK_REMOVE) delete = GrampsWidgets.IconButton(self.delete_family,family.handle,gtk.STOCK_REMOVE)
hbox.pack_start(delete,False) hbox.pack_start(delete,False)
self.attach.attach(hbox,_BTN_START,_BTN_STOP,self.row,self.row+1) self.attach.attach(hbox,_BTN_START,_BTN_STOP,self.row,self.row+1)
self.row += 1 self.row += 1
@ -437,15 +368,15 @@ class FamilyView(PageView.PersonNavView):
if self.show_details: if self.show_details:
value = self.info_string(family.get_father_handle()) value = self.info_string(family.get_father_handle())
if value: if value:
self.attach.attach(BasicLabel(value),_PDTLS_START, self.attach.attach(GrampsWidgets.BasicLabel(value),_PDTLS_START,
_PDTLS_STOP,self.row, self.row+1) _PDTLS_STOP,self.row, self.row+1)
self.row += 1 self.row += 1
self.write_person(_('Mother'),family.get_mother_handle()) self.write_person(_('Mother'),family.get_mother_handle())
if self.show_details: if self.show_details:
value = self.info_string(family.get_mother_handle()) value = self.info_string(family.get_mother_handle())
if value: if value:
self.attach.attach(BasicLabel(value),_PDTLS_START,_PDTLS_STOP, self.attach.attach(GrampsWidgets.BasicLabel(value),_PDTLS_START,
self.row, self.row+1) _PDTLS_STOP, self.row, self.row+1)
self.row += 1 self.row += 1
if self.show_siblings: if self.show_siblings:
@ -466,13 +397,14 @@ class FamilyView(PageView.PersonNavView):
else: else:
format = "%s" format = "%s"
label = MarkupLabel(format % cgi.escape(title)) label = GrampsWidgets.MarkupLabel(format % cgi.escape(title))
self.attach.attach(label,_PLABEL_START,_PLABEL_STOP,self.row,self.row+1, self.attach.attach(label,_PLABEL_START,_PLABEL_STOP,self.row,self.row+1,
xoptions=gtk.FILL|gtk.SHRINK) xoptions=gtk.FILL|gtk.SHRINK)
link_label = LinkLabel(self.get_name(handle,True),self.button_press,handle) link_label = GrampsWidgets.LinkLabel(self.get_name(handle,True),
button = IconButton(self.edit_button_press,handle) self.button_press,handle)
self.attach.attach(LinkBox(link_label,button),_PDATA_START, button = GrampsWidgets.IconButton(self.edit_button_press,handle)
self.attach.attach(GrampsWidgets.LinkBox(link_label,button),_PDATA_START,
_PDATA_STOP,self.row,self.row+1) _PDATA_STOP,self.row,self.row+1)
self.row += 1 self.row += 1
@ -482,13 +414,14 @@ class FamilyView(PageView.PersonNavView):
else: else:
format = "%s" format = "%s"
label = MarkupLabel(format % cgi.escape(title)) label = GrampsWidgets.MarkupLabel(format % cgi.escape(title))
self.attach.attach(label,_CLABEL_START,_CLABEL_STOP,self.row,self.row+1, self.attach.attach(label,_CLABEL_START,_CLABEL_STOP,self.row,self.row+1,
xoptions=gtk.FILL|gtk.SHRINK) xoptions=gtk.FILL|gtk.SHRINK)
link_label = LinkLabel(self.get_name(handle,True),self.button_press,handle) link_label = GrampsWidgets.LinkLabel(self.get_name(handle,True),
button = IconButton(self.edit_button_press,handle) self.button_press,handle)
self.attach.attach(LinkBox(link_label,button),_CDATA_START, button = GrampsWidgets.IconButton(self.edit_button_press,handle)
self.attach.attach(GrampsWidgets.LinkBox(link_label,button),_CDATA_START,
_CDATA_STOP,self.row,self.row+1, _CDATA_STOP,self.row,self.row+1,
xoptions=gtk.EXPAND|gtk.FILL) xoptions=gtk.EXPAND|gtk.FILL)
@ -497,13 +430,13 @@ class FamilyView(PageView.PersonNavView):
if self.show_details: if self.show_details:
value = self.info_string(handle) value = self.info_string(handle)
if value: if value:
self.attach.attach(BasicLabel(value),_CDTLS_START, self.attach.attach(GrampsWidgets.BasicLabel(value),_CDTLS_START,
_CDTLS_STOP,self.row, self.row+1) _CDTLS_STOP,self.row, self.row+1)
self.row += 1 self.row += 1
def write_data(self,title,start_col=_SDATA_START,stop_col=_SDATA_STOP): def write_data(self,title,start_col=_SDATA_START,stop_col=_SDATA_STOP):
self.attach.attach(BasicLabel(title),start_col,stop_col,self.row, self.attach.attach(GrampsWidgets.BasicLabel(title),start_col,stop_col,
self.row+1, xoptions=gtk.EXPAND|gtk.FILL) self.row, self.row+1, xoptions=gtk.EXPAND|gtk.FILL)
self.row += 1 self.row += 1
def info_string(self,handle): def info_string(self,handle):
@ -604,7 +537,7 @@ class FamilyView(PageView.PersonNavView):
value = self.info_string(handle) value = self.info_string(handle)
if value: if value:
self.attach.attach(BasicLabel(value),_PDTLS_START, self.attach.attach(GrampsWidgets.BasicLabel(value),_PDTLS_START,
_PDTLS_STOP,self.row, self.row+1) _PDTLS_STOP,self.row, self.row+1)
self.row += 1 self.row += 1
if not self.write_marriage(family): if not self.write_marriage(family):

View File

@ -1907,7 +1907,7 @@
<property name="spacing">0</property> <property name="spacing">0</property>
<child> <child>
<widget class="GtkTable" id="table67"> <widget class="GtkTable" id="ftable">
<property name="border_width">6</property> <property name="border_width">6</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="n_rows">4</property> <property name="n_rows">4</property>
@ -2028,61 +2028,6 @@
</packing> </packing>
</child> </child>
<child>
<widget class="GtkLabel" id="fbirth">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="fname">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
<child> <child>
<widget class="GtkVBox" id="vbox118"> <widget class="GtkVBox" id="vbox118">
<property name="visible">True</property> <property name="visible">True</property>
@ -2154,6 +2099,53 @@
<property name="y_options"></property> <property name="y_options"></property>
</packing> </packing>
</child> </child>
<child>
<widget class="GtkHBox" id="fbox">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="fbirth">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="y_options"></property>
</packing>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>
@ -2163,7 +2155,7 @@
</child> </child>
<child> <child>
<widget class="GtkTable" id="table66"> <widget class="GtkTable" id="mtable">
<property name="border_width">6</property> <property name="border_width">6</property>
<property name="visible">True</property> <property name="visible">True</property>
<property name="n_rows">4</property> <property name="n_rows">4</property>
@ -2256,34 +2248,6 @@
</packing> </packing>
</child> </child>
<child>
<widget class="GtkLabel" id="mbirth">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="x_options">fill</property>
<property name="y_options"></property>
</packing>
</child>
<child> <child>
<widget class="GtkLabel" id="mdeath"> <widget class="GtkLabel" id="mdeath">
<property name="visible">True</property> <property name="visible">True</property>
@ -2312,33 +2276,6 @@
</packing> </packing>
</child> </child>
<child>
<widget class="GtkLabel" id="mname">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="y_options"></property>
</packing>
</child>
<child> <child>
<widget class="GtkLabel" id="label574"> <widget class="GtkLabel" id="label574">
<property name="visible">True</property> <property name="visible">True</property>
@ -2410,6 +2347,66 @@
<property name="y_options">fill</property> <property name="y_options">fill</property>
</packing> </packing>
</child> </child>
<child>
<widget class="GtkHBox" id="hbox123">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<widget class="GtkHBox" id="mbox">
<property name="visible">True</property>
<property name="homogeneous">False</property>
<property name="spacing">0</property>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">True</property>
<property name="fill">True</property>
</packing>
</child>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">1</property>
<property name="bottom_attach">2</property>
<property name="x_options">fill</property>
<property name="y_options">fill</property>
</packing>
</child>
<child>
<widget class="GtkLabel" id="mbirth">
<property name="visible">True</property>
<property name="label" translatable="yes"></property>
<property name="use_underline">False</property>
<property name="use_markup">False</property>
<property name="justify">GTK_JUSTIFY_LEFT</property>
<property name="wrap">False</property>
<property name="selectable">False</property>
<property name="xalign">0</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="ellipsize">PANGO_ELLIPSIZE_NONE</property>
<property name="width_chars">-1</property>
<property name="single_line_mode">False</property>
<property name="angle">0</property>
</widget>
<packing>
<property name="left_attach">2</property>
<property name="right_attach">3</property>
<property name="top_attach">2</property>
<property name="bottom_attach">3</property>
<property name="y_options"></property>
</packing>
</child>
</widget> </widget>
<packing> <packing>
<property name="padding">0</property> <property name="padding">0</property>