* src/AttrEdit.py: proper type selector support.

* src/AutoComp.py (by_value): Use locale-aware sorting.
* src/EditPerson.py: Support select button for the event tab.
* src/EventEdit.py (EventRefEditor): Editor for both events and
event refs.
* src/ListBox.py: Support for select button; Proper removal of
entries; Proper Event/ref editing support; fixes for combos.
* src/NameEdit.py: Typo.
* src/edit_person.glade: Add select button to the event tab.
* src/gramps.glade: Add new editor for both events and refs.


svn: r4796
This commit is contained in:
Alex Roitman 2005-06-06 23:50:33 +00:00
parent b1db9871c3
commit 0d9a076141
9 changed files with 1885 additions and 324 deletions

View File

@ -1,3 +1,15 @@
2005-06-06 Alex Roitman <shura@gramps-project.org>
* src/AttrEdit.py: proper type selector support.
* src/AutoComp.py (by_value): Use locale-aware sorting.
* src/EditPerson.py: Support select button for the event tab.
* src/EventEdit.py (EventRefEditor): Editor for both events and
event refs.
* src/ListBox.py: Support for select button; Proper removal of
entries; Proper Event/ref editing support; fixes for combos.
* src/NameEdit.py: Typo.
* src/edit_person.glade: Add select button to the event tab.
* src/gramps.glade: Add new editor for both events and refs.
2005-06-05 Alex Roitman <shura@gramps-project.org>
* src/DateHandler.py: Fix typo caught in gramps20 branch.

View File

@ -95,7 +95,7 @@ class AttributeEditor:
self.value_field = self.top.get_widget("attr_value")
self.note_field = self.top.get_widget("attr_note")
self.attrib_menu = self.top.get_widget("attr_menu")
self.type_field = self.attrib_menu.child
# self.type_field = self.attrib_menu.child
self.source_field = self.top.get_widget("attr_source")
self.priv = self.top.get_widget("priv")
self.general_label = self.top.get_widget("general_tab")
@ -105,6 +105,9 @@ class AttributeEditor:
self.preform = self.top.get_widget("attr_preform")
self.window = self.top.get_widget("attr_edit")
self.type_selector = AutoComp.StandardCustomSelector(
Utils.personal_attributes,self.attrib_menu,
RelLib.Attribute.CUSTOM,RelLib.Attribute.DESCRIPTION)
if attrib:
self.srcreflist = self.attrib.get_source_references()
@ -123,17 +126,8 @@ class AttributeEditor:
l = self.top.get_widget("title")
Utils.set_titles(self.window,l,title,_('Attribute Editor'))
if attrib:
defval = attrib.get_type()[0]
else:
defval = None
self.attrmapper = AutoComp.StandardCustomSelector(
Utils.personal_attributes, self.attrib_menu,
RelLib.Attribute.CUSTOM, defval)
if attrib != None:
self.type_field.set_text(const.display_attr(attrib.get_type()))
self.type_selector.set_values(attrib.get_type())
self.value_field.set_text(attrib.get_value())
self.priv.set_active(attrib.get_privacy())
@ -180,7 +174,7 @@ class AttributeEditor:
if not self.attrib:
label = _("New Attribute")
else:
label = self.attrib.get_type()
label = self.attrib.get_type()[1]
if not label.strip():
label = _("New Attribute")
label = "%s: %s" % (_('Attribute'),label)
@ -212,7 +206,7 @@ class AttributeEditor:
Called when the OK button is pressed. Gets data from the
form and updates the Attribute data structure.
"""
attr_data = self.attrmapper.get_values()
attr_data = self.type_selector.get_values()
value = unicode(self.value_field.get_text())
buf = self.note_field.get_buffer()

View File

@ -20,6 +20,13 @@
# $Id$
#-------------------------------------------------------------------------
#
# Standard python modules
#
#-------------------------------------------------------------------------
import locale
#-------------------------------------------------------------------------
#
# GNOME modules
@ -162,7 +169,7 @@ class StandardCustomSelector:
"""
fv = self.mapping[f]
sv = self.mapping[s]
return cmp(fv,sv)
return locale.strcoll(fv,sv)
def get_values(self):
"""

View File

@ -148,6 +148,7 @@ class EditPerson:
web_add_btn = self.top.get_widget('url_add')
event_delete_btn = self.top.get_widget('event_del')
event_add_btn = self.top.get_widget('event_add')
event_sel_btn = self.top.get_widget('event_sel')
event_edit_btn = self.top.get_widget('event_edit')
attr_add_btn = self.top.get_widget('attr_add')
attr_delete_btn = self.top.get_widget('attr_del')
@ -227,7 +228,7 @@ class EditPerson:
self.event_box = ListBox.EventListBox(
self, self.person, self.event_ref_list, events_label,
[event_add_btn,event_edit_btn,event_delete_btn])
[event_add_btn,event_edit_btn,event_delete_btn,event_sel_btn])
self.attr_box = ListBox.AttrListBox(
self, self.person, self.attr_list, attr_label,

View File

@ -48,11 +48,31 @@ import Utils
import AutoComp
import RelLib
import Date
import DateHandler
from DateHandler import parser as _dp, displayer as _dd
import ImageSelect
import DateEdit
from QuestionDialog import WarningDialog, ErrorDialog
#-------------------------------------------------------------------------
#
# helper function
#
#-------------------------------------------------------------------------
def get_place(field,pmap,db):
text = unicode(field.get_text().strip())
if text:
if pmap.has_key(text):
return db.get_place_from_handle(pmap[text])
else:
place = RelLib.Place()
place.set_title(text)
trans = db.transaction_begin()
db.add_place(place,trans)
db.transaction_commit(trans,_("Add Place"))
return place
else:
return None
#-------------------------------------------------------------------------
#
# EventEditor class
@ -79,9 +99,6 @@ class EventEditor:
self.plist = []
self.pmap = {}
self.dp = DateHandler.parser
self.dd = DateHandler.displayer
for key in self.parent.db.get_place_handles():
title = self.parent.db.get_place_from_handle(key).get_title()
self.pmap[title] = key
@ -89,11 +106,6 @@ class EventEditor:
if event:
self.srcreflist = self.event.get_source_references()
self.date = Date.Date(self.event.get_date_object())
# add the name to the list if it is not already there. This
# tends to occur in translated languages with the 'Death'
# event, which is a partial match to other events
#if not transname in elist:
# elist.append(transname)
else:
self.srcreflist = []
self.date = Date.Date(None)
@ -170,7 +182,9 @@ class EventEditor:
defval = None
self.eventmapper = AutoComp.StandardCustomSelector(
Utils.personal_events, self.event_menu, RelLib.Event.CUSTOM, defval)
Utils.personal_events, self.event_menu,
RelLib.Event.CUSTOM, defval)
AutoComp.fill_entry(self.place_field,self.pmap.keys())
if event != None:
@ -185,7 +199,7 @@ class EventEditor:
place_name = self.db.get_place_from_handle(place_handle).get_title()
self.place_field.set_text(place_name)
self.date_field.set_text(self.dd.display(self.date))
self.date_field.set_text(_dd.display(self.date))
self.cause_field.set_text(event.get_cause())
self.descr_field.set_text(event.get_description())
self.priv.set_active(event.get_privacy())
@ -296,28 +310,13 @@ class EventEditor:
"""Display the relevant portion of GRAMPS manual"""
gnome.help_display('gramps-manual','adv-ev')
def get_place(self,field):
text = unicode(field.get_text().strip())
if text:
if self.pmap.has_key(text):
return self.db.get_place_from_handle(self.pmap[text])
else:
place = RelLib.Place()
place.set_title(text)
trans = self.db.transaction_begin()
self.db.add_place(place,trans)
self.db.transaction_commit(trans,_("Add Place"))
return place
else:
return None
def on_event_edit_ok_clicked(self,obj):
event_data = self.eventmapper.get_values()
#self.date = self.dp.parse(unicode(self.date_field.get_text()))
ecause = unicode(self.cause_field.get_text())
eplace_obj = self.get_place(self.place_field)
eplace_obj = get_place(self.place_field,self.pmap,self.db)
buf = self.note_field.get_buffer()
start = buf.get_start_iter()
@ -402,9 +401,13 @@ class EventEditor:
else:
Utils.unbold_label(self.notes_label)
#-------------------------------------------------------------------------
#
# EventRefEditor class
#
#-------------------------------------------------------------------------
class EventRefEditor:
def __init__(self, eventref, referent, database, update, parent):
def __init__(self, event_ref, event, referent, database, update, parent):
self.db = database
self.parent = parent
self.referent = referent
@ -412,61 +415,140 @@ class EventRefEditor:
self.win_parent = self.parent
else:
self.win_parent = self.parent.parent
if eventref:
if self.win_parent.child_windows.has_key(eventref):
self.win_parent.child_windows[eventref].present(None)
if event_ref:
if self.win_parent.child_windows.has_key(event_ref):
self.win_parent.child_windows[event_ref].present(None)
return
else:
self.win_key = eventref
self.win_key = event_ref
else:
self.win_key = self
self.update = update
self.event_ref = eventref
self.event_ref = event_ref
self.event = event
self.child_windows = {}
self.pmap = {}
for key in self.parent.db.get_place_handles():
title = self.parent.db.get_place_from_handle(key).get_title()
self.pmap[title] = key
self.title = _('Event Reference Editor')
self.top = gtk.glade.XML(const.dialogFile, "eventref_edit","gramps")
self.window = self.top.get_widget('eventref_edit')
self.note_field = self.top.get_widget('er_note')
self.role_combo = self.top.get_widget('er_role_combo')
self.type_label = self.top.get_widget('er_type_label')
self.id_label = self.top.get_widget('er_id_label')
self.privacy = self.top.get_widget('er_priv_button')
self.top = gtk.glade.XML(const.dialogFile, "event_eref_edit","gramps")
self.window = self.top.get_widget('event_eref_edit')
self.ref_note_field = self.top.get_widget('eer_ref_note')
self.role_combo = self.top.get_widget('eer_role_combo')
self.ref_privacy = self.top.get_widget('eer_ref_priv')
self.place_field = self.top.get_widget("eer_place")
self.cause_field = self.top.get_widget("eer_cause")
self.slist = self.top.get_widget("eer_slist")
self.wlist = self.top.get_widget("eer_wlist")
self.date_field = self.top.get_widget("eer_date")
self.descr_field = self.top.get_widget("eer_description")
self.ev_note_field = self.top.get_widget("eer_ev_note")
self.type_combo = self.top.get_widget("eer_type_combo")
self.ev_privacy = self.top.get_widget("eer_ev_priv")
self.sources_label = self.top.get_widget("eer_sources_tab")
self.notes_label = self.top.get_widget("eer_note_tab")
self.general_label = self.top.get_widget("eer_general_tab")
self.gallery_label = self.top.get_widget("eer_gallery_tab")
self.witnesses_label = self.top.get_widget("eer_witness_tab")
self.flowed = self.top.get_widget("eer_ev_flowed")
self.preform = self.top.get_widget("eer_ev_preform")
self.ok = self.top.get_widget('ok')
self.expander = self.top.get_widget("eer_expander")
add_src = self.top.get_widget('eer_add_src')
del_src = self.top.get_widget('eer_del_src')
add_witness = self.top.get_widget('eer_add_wit')
edit_witness = self.top.get_widget('eer_edit_wit')
del_witness = self.top.get_widget('eer_del_wit')
Utils.set_titles(self.window,
self.top.get_widget('er_title'),
self.top.get_widget('eer_title'),
self.title)
self.top.signal_autoconnect({
"on_help_er_edit_clicked" : self.on_help_clicked,
"on_ok_er_edit_clicked" : self.on_ok_clicked,
"on_cancel_er_edit_clicked" : self.close,
"on_er_edit_delete_event" : self.on_delete_event,
"on_eer_help_clicked" : self.on_help_clicked,
"on_eer_ok_clicked" : self.on_ok_clicked,
"on_eer_cancel_clicked" : self.close,
"on_eer_delete_event" : self.on_delete_event,
})
self.role_selector = AutoComp.StandardCustomSelector(
Utils.event_roles,self.role_combo,
RelLib.EventRef.CUSTOM,RelLib.EventRef.PRIMARY)
self.trans = self.db.transaction_begin()
AutoComp.fill_entry(self.place_field,self.pmap.keys())
if self.referent.__class__.__name__ == 'Person':
default_type = RelLib.Event.BIRTH
default_str = _("Birth")
elif self.referent.__class__.__name__ == 'Family':
default_type = RelLib.Event.MARRIAGE
default_str = _("Marriage")
self.type_selector = AutoComp.StandardCustomSelector(
Utils.personal_events,self.type_combo,
RelLib.Event.CUSTOM,default_type)
if self.event:
self.date = Date.Date(self.event.get_date_object())
self.expander.set_expanded(False)
else:
trans = self.db.transaction_begin()
self.event = RelLib.Event()
self.event.set_type((default_type,default_str))
self.db.add_event(self.event,trans)
self.db.transaction_commit(trans,_("Add Event"))
self.date = Date.Date(None)
self.expander.set_expanded(True)
if not self.event_ref:
trans2 = self.db.transaction_begin()
e = RelLib.Event()
e.set_type((RelLib.Event.MARRIAGE,_("Married")))
self.db.add_event(e,trans2)
self.db.transaction_commit(trans2,_("Add Event"))
self.event_ref = RelLib.EventRef()
self.event_ref.set_role((RelLib.EventRef.PRIMARY,_('Primary')))
self.event_ref.set_note('Some text')
self.event_ref.set_reference_handle(e.get_handle())
self.event_ref.set_reference_handle(self.event.get_handle())
self.srcreflist = self.event.get_source_references()
self.sourcetab = Sources.SourceTab(
self.srcreflist, self, self.top, self.window, self.slist,
add_src, self.top.get_widget('eer_edit_src'), del_src,
self.db.readonly)
self.date_check = DateEdit.DateEdit(self.date,
self.date_field,
self.top.get_widget("eer_date_stat"),
self.window)
# set event_ref values
self.role_selector.set_values(self.event_ref.get_role())
self.note_field.get_buffer().set_text(self.event_ref.get_note())
event = self.db.get_event_from_handle(self.event_ref.ref)
self.id_label.set_text(event.get_gramps_id())
self.type_label.set_text(event.get_type()[1])
self.ref_note_field.get_buffer().set_text(self.event_ref.get_note())
self.ref_privacy.set_active(self.event_ref.get_privacy())
# set event values
self.type_selector.set_values(self.event.get_type())
place_handle = self.event.get_place_handle()
if not place_handle:
place_name = u""
else:
place_name = self.db.get_place_from_handle(place_handle).get_title()
self.place_field.set_text(place_name)
self.date_field.set_text(_dd.display(self.date))
self.cause_field.set_text(self.event.get_cause())
self.descr_field.set_text(self.event.get_description())
self.ev_privacy.set_active(self.event.get_privacy())
if self.event.get_note():
self.ev_note_field.get_buffer().set_text(event.get_note())
Utils.bold_label(self.notes_label)
if event.get_note_format() == 1:
self.preform.set_active(1)
else:
self.flowed.set_active(1)
if self.event.get_media_list():
Utils.bold_label(self.gallery_label)
self.add_itself_to_menu()
self.window.show()
@ -511,16 +593,88 @@ class EventRefEditor:
pass
def on_ok_clicked(self,obj):
# first, save event if changed
etype = self.type_selector.get_values()
ecause = unicode(self.cause_field.get_text())
eplace_obj = get_place(self.place_field,self.pmap,self.db)
buf = self.ev_note_field.get_buffer()
start = buf.get_start_iter()
stop = buf.get_end_iter()
enote = unicode(buf.get_text(start,stop,False))
eformat = self.preform.get_active()
edesc = unicode(self.descr_field.get_text())
epriv = self.ev_privacy.get_active()
self.update_event(etype,self.date,eplace_obj,edesc,enote,eformat,
epriv,ecause)
# event is a primary object, so its change has to be committed now
if self.parent.lists_changed:
trans = self.db.transaction_begin()
self.db.commit_event(self.event,trans)
self.db.transaction_commit(trans,_("Modify Event"))
# then, set properties of the event_ref
self.event_ref.set_role(self.role_selector.get_values())
buf = self.note_field.get_buffer()
self.event_ref.set_privacy(self.ref_privacy.get_active())
buf = self.ref_note_field.get_buffer()
start = buf.get_start_iter()
stop = buf.get_end_iter()
note = unicode(buf.get_text(start,stop,False))
self.event_ref.set_note(note)
self.referent.add_event_ref(self.event_ref)
if self.referent.__class__.__name__ == 'Person':
self.db.commit_person(self.referent,self.trans)
elif self.referent.__class__.__name__ == 'Family':
self.db.commit_family(self.referent,self.trans)
self.db.transaction_commit(self.trans,_("Add Event Reference"))
self.close(None)
if self.update:
self.update((self.event_ref,self.event))
def update_event(self,the_type,date,place,desc,note,format,priv,cause):
if place:
if self.event.get_place_handle() != place.get_handle():
self.event.set_place_handle(place.get_handle())
self.parent.lists_changed = 1
else:
if self.event.get_place_handle():
self.event.set_place_handle("")
self.parent.lists_changed = 1
if self.event.get_type() != the_type:
self.event.set_type(the_type)
self.parent.lists_changed = 1
if self.event.get_description() != desc:
self.event.set_description(desc)
self.parent.lists_changed = 1
if self.event.get_note() != note:
self.event.set_note(note)
self.parent.lists_changed = 1
if self.event.get_note_format() != format:
self.event.set_note_format(format)
self.parent.lists_changed = 1
dobj = self.event.get_date_object()
self.event.set_source_reference_list(self.srcreflist)
if not dobj.is_equal(date):
self.event.set_date_object(date)
self.parent.lists_changed = 1
if self.event.get_cause() != cause:
self.event.set_cause(cause)
self.parent.lists_changed = 1
if self.event.get_privacy() != priv:
self.event.set_privacy(priv)
self.parent.lists_changed = 1
def on_switch_page(self,obj,a,page):
buf = self.ev_note_field.get_buffer()
start = buf.get_start_iter()
stop = buf.get_end_iter()
text = unicode(buf.get_text(start,stop,False))
if text:
Utils.bold_label(self.eer_notes_label)
else:
Utils.unbold_label(self.eer_notes_label)

View File

@ -77,6 +77,8 @@ class ListBox:
self.blist[0].connect('clicked',self.add)
self.blist[1].connect('clicked',self.update)
self.blist[2].connect('clicked',self.delete)
if len(self.blist) > 3:
self.blist[3].connect('clicked',self.select)
self.tree.connect('key_press_event', self.keypress)
self.change_list = Set()
@ -102,7 +104,7 @@ class ListBox:
def select_row(self,obj):
store, node = obj.get_selected()
enable = node != None
for button in self.blist[1:]:
for button in self.blist[1:3]:
button.set_sensitive(enable)
def delete(self,obj):
@ -131,7 +133,8 @@ class ListBox:
"""Deletes the selected name from the name list"""
store,node = self.list_model.get_selected()
if node:
self.list_model.remove(self.list_model.get_object(node))
self.data.remove(self.list_model.get_object(node))
self.list_model.remove(node)
self.changed = True
self.redraw()
@ -258,7 +261,8 @@ class AttrListBox(ReorderListBox):
has_source = len(attr.get_source_references())> 0
etype = attr.get_type()
if etype[0] == RelLib.Attribute.CUSTOM:
if etype[0] == RelLib.Attribute.CUSTOM \
or not Utils.personal_attributes.has_key(etype[0]):
name = etype[1]
else:
name = Utils.personal_attributes[etype[0]]
@ -272,6 +276,8 @@ class EventListBox(ReorderListBox):
def __init__(self,parent,person,obj,label,button_list):
self.data = []
self.person = person
self.parent = parent
birth_ref = person.get_birth_ref()
death_ref = person.get_death_ref()
if birth_ref:
@ -284,7 +290,7 @@ class EventListBox(ReorderListBox):
self.data.append((event_ref,
parent.db.get_event_from_handle(event_ref.ref)))
custom_str = Utils.personal_events[RelLib.Attribute.CUSTOM]
custom_str = Utils.personal_events[RelLib.Event.CUSTOM]
eventnames = filter(lambda x: x != custom_str,
Utils.personal_events.values())
eventnames.sort(locale.strcoll)
@ -326,20 +332,31 @@ class EventListBox(ReorderListBox):
def add(self,obj):
"""Brings up the EventEditor for a new event"""
EventEdit.EventEditor(
self.parent, self.name, Utils.personal_events,
None, None, False,
self.edit_callback, noedit=self.db.readonly)
EventEdit.EventRefEditor(None,None,self.person,self.parent.db,
self.edit_callback,self.parent)
# self.parent, self.name, Utils.personal_events,
# None, None, False,
# self.edit_callback, noedit=self.db.readonly)
def select(self,obj):
"""
Creates eventref for an existing event.
"""
# select existing event
event = RelLiv.Event()
EventEdit.EventRefEditor(event,None,self.person,self.parent.db,
self.edit_callback,self.parent)
def update(self,obj):
store,node = self.list_model.get_selected()
if not node:
return
event = self.list_model.get_object(node)
EventEdit.EventEditor(
self.parent, self.name, Utils.personal_events,
event[1], None, False,
self.edit_callback, noedit=self.db.readonly)
event,event_ref = self.list_model.get_object(node)
EventEdit.EventRefEditor(event,event_ref,self.person,self.parent.db,
self.edit_callback,self.parent)
# self.parent, self.name, Utils.personal_events,
# event[1], None, False,
# self.edit_callback, noedit=self.db.readonly)
def display_data(self,event_tuple):
(event_ref, event) = event_tuple
@ -351,7 +368,8 @@ class EventListBox(ReorderListBox):
has_note = event.get_note()
has_source = len(event.get_source_references())> 0
etype = event.get_type()
if etype[0] == RelLib.Event.CUSTOM:
if etype[0] == RelLib.Event.CUSTOM \
or not Utils.personal_events.has_key(etype[0]):
name = etype[1]
else:
name = Utils.personal_events[etype[0]]
@ -369,24 +387,35 @@ class EventListBox(ReorderListBox):
foo.set_place_handle(place.get_handle())
self.data.insert(row,foo.get_handle())
def edit_callback(self,data):
self.changed = True
changed = False
for val in self.data:
if data.handle == val[1].handle:
self.change_list.add(val)
changed = True
if not changed:
ref = RelLib.EventRef()
ref.ref = data.handle
new_data = (ref,data)
self.change_list.add(new_data)
self.data.append(new_data)
self.redraw()
try:
self.list_model.select_iter(self.node_map[new_data])
except:
print "Edit callback failed"
## def edit_callback(self,data):
## self.changed = True
## self.change_list.add(data)
## if data not in self.data:
## self.data.append(data)
## self.redraw()
## try:
## self.list_model.select_iter(self.node_map[data])
## except:
## print "Edit callback failed"
## self.changed = True
## changed = False
## event_ref,event = data
## if event.handle ==
## for val in self.data:
## if data.handle == val[1].handle:
## self.change_list.add(val)
## changed = True
## if not changed:
## ref = RelLib.EventRef()
## ref.ref = data.handle
## new_data = (ref,data)
## self.change_list.add(new_data)
## self.data.append(new_data)
## self.redraw()
## try:
## self.list_model.select_iter(self.node_map[new_data])
## except:
## print "Edit callback failed"
class NameListBox(ReorderListBox):
@ -443,14 +472,20 @@ class NameListBox(ReorderListBox):
store,node = self.list_model.get_selected()
if node:
NameEdit.NameEditor(self.parent, self.list_model.get_object(node),
self.edit_callback, self.window)
self.edit_callback, self.parent.window)
def display_data(self,name):
has_note = name.get_note()
has_source = len(name.get_source_references())> 0
the_type = name.get_type()
if the_type[0] == RelLib.Name.CUSTOM or \
not Utils.name_types.has_key(the_type[0]):
type_name = the_type[1]
else:
type_name = Utils.name_types[the_type[0]]
return [name.get_surname(),name.get_surname_prefix(),
name.get_first_name(), name.get_suffix(),
name.get_type()[1],has_source,has_note]
type_name,has_source,has_note]
def unpickle(self, data):
foo = pickle.loads(data);

View File

@ -151,7 +151,7 @@ class NameEditor:
self.title_field.set_text(name.get_title())
self.suffix_field.set_text(name.get_suffix())
self.prefix_field.set_text(name.get_surname_prefix())
self.type_selector.set_values(name.set_type())
self.type_selector.set_values(name.get_type())
self.patronymic_field.set_text(name.get_patronymic())
self.priv.set_active(name.get_privacy())
Utils.bold_label(self.general_label)

View File

@ -17,7 +17,6 @@
<property name="skip_pager_hint">False</property>
<property name="type_hint">GDK_WINDOW_TYPE_HINT_DIALOG</property>
<property name="gravity">GDK_GRAVITY_NORTH_WEST</property>
<property name="focus_on_map">True</property>
<property name="has_separator">False</property>
<signal name="delete_event" handler="on_delete_event"/>
@ -109,10 +108,6 @@
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">surname</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">1</property>
@ -138,10 +133,6 @@
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">givenName</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">1</property>
@ -167,10 +158,6 @@
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">prefix</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">5</property>
@ -196,10 +183,6 @@
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">title</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">1</property>
@ -247,10 +230,6 @@
<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">1</property>
@ -268,8 +247,6 @@
<property name="items" translatable="yes">Female
Male
Unknown</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">2</property>
@ -316,10 +293,6 @@ Unknown</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">suffix</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">3</property>
@ -344,10 +317,6 @@ Unknown</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">3</property>
@ -372,10 +341,6 @@ Unknown</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">5</property>
@ -435,9 +400,6 @@ Unknown</property>
<child>
<widget class="GtkComboBoxEntry" id="ntype">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="has_frame">True</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">6</property>
@ -508,10 +470,6 @@ Unknown</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">0</property>
@ -601,10 +559,6 @@ Unknown</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">0</property>
@ -657,10 +611,6 @@ Unknown</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="type">label_item</property>
@ -742,9 +692,6 @@ Unknown</property>
<property name="rules_hint">False</property>
<property name="reorderable">False</property>
<property name="enable_search">True</property>
<property name="fixed_height_mode">False</property>
<property name="hover_selection">False</property>
<property name="hover_expand">False</property>
</widget>
</child>
</widget>
@ -789,6 +736,34 @@ Unknown</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="event_sel">
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Select an existing media object from the database and place it in this gallery</property>
<property name="can_focus">True</property>
<property name="relief">GTK_RELIEF_NORMAL</property>
<property name="focus_on_click">True</property>
<signal name="clicked" handler="on_event_sel_clicked" object="eventList" last_modification_time="Mon, 06 Jun 2005 22:25:51 GMT"/>
<child>
<widget class="GtkImage" id="image2590">
<property name="visible">True</property>
<property name="stock">gtk-index</property>
<property name="icon_size">4</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
</widget>
</child>
</widget>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<widget class="GtkButton" id="event_edit">
<property name="visible">True</property>
@ -813,7 +788,7 @@ Unknown</property>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="fill">False</property>
</packing>
</child>
@ -842,13 +817,9 @@ Unknown</property>
<packing>
<property name="padding">0</property>
<property name="expand">False</property>
<property name="fill">True</property>
<property name="fill">False</property>
</packing>
</child>
<child>
<placeholder/>
</child>
</widget>
<packing>
<property name="padding">0</property>
@ -872,8 +843,6 @@ Unknown</property>
<child>
<widget class="GtkImage" id="image2588">
<property name="visible">True</property>
<property name="icon_size">4</property>
<property name="icon_name">gtk-file</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
@ -899,10 +868,6 @@ Unknown</property>
<property name="yalign">0.5</property>
<property name="xpad">6</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="padding">0</property>
@ -941,9 +906,6 @@ Unknown</property>
<property name="rules_hint">False</property>
<property name="reorderable">False</property>
<property name="enable_search">True</property>
<property name="fixed_height_mode">False</property>
<property name="hover_selection">False</property>
<property name="hover_expand">False</property>
</widget>
</child>
</widget>
@ -1071,8 +1033,6 @@ Unknown</property>
<child>
<widget class="GtkImage" id="image2580">
<property name="visible">True</property>
<property name="icon_size">4</property>
<property name="icon_name">gtk-file</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
@ -1098,10 +1058,6 @@ Unknown</property>
<property name="yalign">0.5</property>
<property name="xpad">6</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="padding">0</property>
@ -1151,9 +1107,6 @@ Unknown</property>
<property name="rules_hint">False</property>
<property name="reorderable">False</property>
<property name="enable_search">True</property>
<property name="fixed_height_mode">False</property>
<property name="hover_selection">False</property>
<property name="hover_expand">False</property>
</widget>
</child>
</widget>
@ -1295,8 +1248,6 @@ Unknown</property>
<child>
<widget class="GtkImage" id="image2581">
<property name="visible">True</property>
<property name="icon_size">4</property>
<property name="icon_name">gtk-file</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
@ -1322,10 +1273,6 @@ Unknown</property>
<property name="yalign">0.5</property>
<property name="xpad">6</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="padding">0</property>
@ -1363,9 +1310,6 @@ Unknown</property>
<property name="rules_hint">False</property>
<property name="reorderable">False</property>
<property name="enable_search">True</property>
<property name="fixed_height_mode">False</property>
<property name="hover_selection">False</property>
<property name="hover_expand">False</property>
</widget>
</child>
</widget>
@ -1493,8 +1437,6 @@ Unknown</property>
<child>
<widget class="GtkImage" id="image2582">
<property name="visible">True</property>
<property name="icon_size">4</property>
<property name="icon_name">gtk-file</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
@ -1520,10 +1462,6 @@ Unknown</property>
<property name="yalign">0.5</property>
<property name="xpad">6</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="padding">0</property>
@ -1604,10 +1542,6 @@ Unknown</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">flowed</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">0</property>
@ -1688,8 +1622,6 @@ Unknown</property>
<child>
<widget class="GtkImage" id="image2583">
<property name="visible">True</property>
<property name="icon_size">4</property>
<property name="icon_name">gtk-file</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
@ -1715,10 +1647,6 @@ Unknown</property>
<property name="yalign">0.5</property>
<property name="xpad">6</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="padding">0</property>
@ -1755,9 +1683,6 @@ Unknown</property>
<property name="rules_hint">False</property>
<property name="reorderable">False</property>
<property name="enable_search">True</property>
<property name="fixed_height_mode">False</property>
<property name="hover_selection">False</property>
<property name="hover_expand">False</property>
</widget>
</child>
</widget>
@ -1880,8 +1805,6 @@ Unknown</property>
<child>
<widget class="GtkImage" id="image2584">
<property name="visible">True</property>
<property name="icon_size">4</property>
<property name="icon_name">gtk-file</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
@ -1907,10 +1830,6 @@ Unknown</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="padding">0</property>
@ -2118,8 +2037,6 @@ Unknown</property>
<child>
<widget class="GtkImage" id="image2585">
<property name="visible">True</property>
<property name="icon_size">4</property>
<property name="icon_name">gtk-file</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
@ -2145,10 +2062,6 @@ Unknown</property>
<property name="yalign">0.5</property>
<property name="xpad">6</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="padding">0</property>
@ -2192,9 +2105,6 @@ Unknown</property>
<property name="rules_hint">False</property>
<property name="reorderable">False</property>
<property name="enable_search">True</property>
<property name="fixed_height_mode">False</property>
<property name="hover_selection">False</property>
<property name="hover_expand">False</property>
</widget>
</child>
</widget>
@ -2357,8 +2267,6 @@ Unknown</property>
<child>
<widget class="GtkImage" id="image2589">
<property name="visible">True</property>
<property name="icon_size">4</property>
<property name="icon_name">gtk-file</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
@ -2384,10 +2292,6 @@ Unknown</property>
<property name="yalign">0.5</property>
<property name="xpad">6</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="padding">0</property>
@ -2425,10 +2329,6 @@ Unknown</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">ldsbapdate</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">1</property>
@ -2474,10 +2374,6 @@ Unknown</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">endowdate</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>
<accessibility>
<atkproperty name="AtkObject::accessible_name" translatable="yes">Date:</atkproperty>
</accessibility>
@ -2526,10 +2422,6 @@ Unknown</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">sealdate</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">1</property>
@ -2754,10 +2646,6 @@ Unknown</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">3</property>
@ -2772,8 +2660,6 @@ Unknown</property>
<child>
<widget class="GtkComboBox" id="ldsbaptemple">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">4</property>
@ -2798,10 +2684,6 @@ Unknown</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">lds_bap_place</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>
<accessibility>
<atkrelation target="lds_bap_place" type="label-for"/>
</accessibility>
@ -2839,8 +2721,6 @@ Unknown</property>
<child>
<widget class="GtkComboBox" id="ldsbapstat">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">4</property>
@ -2865,10 +2745,6 @@ Unknown</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">3</property>
@ -2883,8 +2759,6 @@ Unknown</property>
<child>
<widget class="GtkComboBox" id="endowtemple">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">4</property>
@ -2909,10 +2783,6 @@ Unknown</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">3</property>
@ -2938,10 +2808,6 @@ Unknown</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">lds_end_place</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>
<accessibility>
<atkrelation target="lds_end_place" type="label-for"/>
</accessibility>
@ -2990,10 +2856,6 @@ Unknown</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">3</property>
@ -3008,8 +2870,6 @@ Unknown</property>
<child>
<widget class="GtkComboBox" id="endowstat">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">4</property>
@ -3044,8 +2904,6 @@ Unknown</property>
<child>
<widget class="GtkComboBox" id="sealtemple">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">4</property>
@ -3070,10 +2928,6 @@ Unknown</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">3</property>
@ -3099,10 +2953,6 @@ Unknown</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">lds_seal_place</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>
<accessibility>
<atkrelation target="lds_seal_place" type="label-for"/>
</accessibility>
@ -3151,10 +3001,6 @@ Unknown</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">3</property>
@ -3169,8 +3015,6 @@ Unknown</property>
<child>
<widget class="GtkComboBox" id="sealstat">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">4</property>
@ -3215,10 +3059,6 @@ Unknown</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">0</property>
@ -3243,10 +3083,6 @@ Unknown</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">0</property>
@ -3271,10 +3107,6 @@ Unknown</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">0</property>
@ -3300,10 +3132,6 @@ Unknown</property>
<property name="xpad">0</property>
<property name="ypad">0</property>
<property name="mnemonic_widget">sealparents</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">1</property>
@ -3318,8 +3146,6 @@ Unknown</property>
<child>
<widget class="GtkComboBox" id="sealparents">
<property name="visible">True</property>
<property name="add_tearoffs">False</property>
<property name="focus_on_click">True</property>
</widget>
<packing>
<property name="left_attach">2</property>
@ -3367,8 +3193,6 @@ Unknown</property>
<child>
<widget class="GtkImage" id="image2587">
<property name="visible">True</property>
<property name="icon_size">4</property>
<property name="icon_name">gtk-file</property>
<property name="xalign">0.5</property>
<property name="yalign">0.5</property>
<property name="xpad">0</property>
@ -3394,10 +3218,6 @@ Unknown</property>
<property name="yalign">0.5</property>
<property name="xpad">6</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="padding">0</property>

File diff suppressed because it is too large Load Diff