diff --git a/ChangeLog b/ChangeLog index 342012fa6..e8d63195d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -9,6 +9,15 @@ * src/EventView.py (Module): Remove extra column. * src/EventEdit.py (EventEditor.__init__): Remove obsolete code. + * src/gramps.glade (Marriage): Re-work dialog similar to EditPerson. + * src/Utils.py (family_event_roles): Add mapping. + * src/RelLib.py (EventRef): Add FAMILY role. + * src/Marriage.py: Start using Listbox, so far for Events only. + * src/ListBox.py: Support both person and family primaries. + * src/EventEdit.py: Support both person and family primaries. + * src/EditPerson.py (on_apply_person_clicked): Do not commit + event, as this is done in the editor. + 2005-06-08 Martin Hawlisch * src/EventView.py (column_names): Add missing column * src/RepositoryView.py (column_names): Add missing columns diff --git a/src/EditPerson.py b/src/EditPerson.py index 176a047a3..a74f12bd8 100644 --- a/src/EditPerson.py +++ b/src/EditPerson.py @@ -1036,8 +1036,8 @@ class EditPerson: self.db.commit_person(self.person, trans) n = self.person.get_primary_name().get_regular_name() - for (event_ref,event) in self.event_box.get_changed_objects(): - self.db.commit_event(event,trans) + #for (event_ref,event) in self.event_box.get_changed_objects(): + # self.db.commit_event(event,trans) self.db.transaction_commit(trans,_("Edit Person (%s)") % n) if self.callback: diff --git a/src/EventEdit.py b/src/EventEdit.py index d102f8638..73c09d012 100644 --- a/src/EventEdit.py +++ b/src/EventEdit.py @@ -465,21 +465,25 @@ class EventRefEditor: "on_eer_delete_event" : self.on_delete_event, }) + if self.referent.__class__.__name__ == 'Person': + default_type = RelLib.Event.BIRTH + default_role = RelLib.EventRef.PRIMARY + ev_dict = Utils.personal_events + role_dict = Utils.event_roles + elif self.referent.__class__.__name__ == 'Family': + default_type = RelLib.Event.MARRIAGE + default_role = RelLib.EventRef.FAMILY + ev_dict = Utils.family_events + role_dict = Utils.family_event_roles + self.role_selector = AutoComp.StandardCustomSelector( - Utils.event_roles,self.role_combo, - RelLib.EventRef.CUSTOM,RelLib.EventRef.PRIMARY) + role_dict,self.role_combo, + RelLib.EventRef.CUSTOM,default_role) 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, + ev_dict,self.type_combo, RelLib.Event.CUSTOM,default_type) if self.event: @@ -488,7 +492,7 @@ class EventRefEditor: else: trans = self.db.transaction_begin() self.event = RelLib.Event() - self.event.set_type((default_type,default_str)) + self.event.set_type((default_type,ev_dict[default_type])) self.db.add_event(self.event,trans) self.db.transaction_commit(trans,_("Add Event")) self.date = Date.Date(None) @@ -496,7 +500,7 @@ class EventRefEditor: if not self.event_ref: self.event_ref = RelLib.EventRef() - self.event_ref.set_role((RelLib.EventRef.PRIMARY,_('Primary'))) + self.event_ref.set_role((default_role,role_dict[default_role])) self.event_ref.set_reference_handle(self.event.get_handle()) self.srcreflist = self.event.get_source_references() @@ -538,6 +542,10 @@ class EventRefEditor: Utils.bold_label(self.gallery_label) self.add_itself_to_menu() + try: + self.window.set_transient_for(self.parent.window) + except AttributeError: + pass self.window.show() def on_delete_event(self,obj,b): @@ -608,7 +616,7 @@ class EventRefEditor: 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) + #self.referent.add_event_ref(self.event_ref) self.close(None) if self.update: diff --git a/src/ListBox.py b/src/ListBox.py index 7687e8b65..e165faeda 100644 --- a/src/ListBox.py +++ b/src/ListBox.py @@ -58,13 +58,20 @@ import Utils class ListBox: """ - The ListBox manages the lists contained by the EditPerson dialog. - It manages the add, update, and delete buttons, along with the + The ListBox manages the lists contained by the EditPerson or Marriage + dialogs. It manages the add, update, and delete buttons, along with the handling of inline editing. + + The primary argument is either Person or Family object. """ - def __init__(self, parent, person, obj, label, button_list, titles): - self.person = person - self.name = NameDisplay.displayer.display(person) + def __init__(self, parent, primary, obj, label, button_list, titles): + self.primary = primary + if self.primary.__class__.__name__ == 'Person': + self.name = NameDisplay.displayer.display(primary) + elif self.primary.__class__.__name__ == 'Family': + self.name = Utils.family_name(primary,parent.db) + else: + self.name = "" self.label = label self.db = parent.db self.parent = parent @@ -162,9 +169,9 @@ class ListBox: class ReorderListBox(ListBox): - def __init__(self,parent,person,obj,label,button_list,evalues, dnd_type): + def __init__(self,parent,primary,obj,label,button_list,evalues, dnd_type): - ListBox.__init__(self,parent,person,obj,label,button_list,evalues) + ListBox.__init__(self,parent,primary,obj,label,button_list,evalues) self.dnd_type = dnd_type @@ -180,7 +187,7 @@ class ReorderListBox(ListBox): bits_per = 8; # we're going to pass a string pickled = pickle.dumps(node[0]); - data = str((self.dnd_type.drag_type, self.person.get_handle(), pickled)); + data = str((self.dnd_type.drag_type, self.primary.get_handle(), pickled)); sel_data.set(sel_data.target, bits_per, data) def unpickle(self, data): @@ -192,10 +199,10 @@ class ReorderListBox(ListBox): if sel_data and sel_data.data: exec 'data = %s' % sel_data.data exec 'mytype = "%s"' % data[0] - exec 'person = "%s"' % data[1] + exec 'primary = "%s"' % data[1] if mytype != self.dnd_type.drag_type: return - elif person == self.person.get_handle(): + elif primary == self.primary.get_handle(): self.move_element(self.list_model.get_selected_row(),row) else: self.unpickle(data[2]) @@ -274,31 +281,38 @@ class EventListBox(ReorderListBox): titles = ['Event', 'Description','Date','Place','Source','Note'] - def __init__(self,parent,person,obj,label,button_list): + def __init__(self,parent,primary,obj,label,button_list): self.data = [] - self.person = person + self.primary = primary self.parent = parent - birth_ref = person.get_birth_ref() - death_ref = person.get_death_ref() - if birth_ref: - self.data.append((birth_ref, + if self.primary.__class__.__name__ == 'Person': + birth_ref = primary.get_birth_ref() + death_ref = primary.get_death_ref() + if birth_ref: + self.data.append((birth_ref, parent.db.get_event_from_handle(birth_ref.ref))) - if death_ref: - self.data.append((death_ref, + if death_ref: + self.data.append((death_ref, parent.db.get_event_from_handle(death_ref.ref))) - for event_ref in person.get_event_ref_list(): + self.ev_dict = Utils.personal_events + self.role_dict = Utils.event_roles + elif self.primary.__class__.__name__ == 'Family': + self.ev_dict = Utils.family_events + self.role_dict = Utils.family_event_roles + + for event_ref in primary.get_event_ref_list(): self.data.append((event_ref, parent.db.get_event_from_handle(event_ref.ref))) - ev_custom_str = Utils.personal_events[RelLib.Event.CUSTOM] + ev_custom_str = self.ev_dict[RelLib.Event.CUSTOM] eventnames = filter(lambda x: x != ev_custom_str, - Utils.personal_events.values()) + self.ev_dict.values()) eventnames.sort(locale.strcoll) - role_custom_str = Utils.event_roles[RelLib.EventRef.CUSTOM] + role_custom_str = self.role_dict[RelLib.EventRef.CUSTOM] rolenames = filter(lambda x: x != role_custom_str, - Utils.event_roles.values()) + self.role_dict.values()) evalues = [ # Title Sort Col Size, Type Argument @@ -311,13 +325,13 @@ class EventListBox(ReorderListBox): (_('Note'), NOSORT, 50, TOGGLE, None, None), ] - ReorderListBox.__init__(self, parent, person, obj, label, + ReorderListBox.__init__(self, parent, primary, obj, label, button_list, evalues, DdTargets.EVENT) self.ev_name_map,self.ev_val_map = self.build_maps( - RelLib.Event.CUSTOM,Utils.personal_events) + RelLib.Event.CUSTOM,self.ev_dict) self.ref_name_map,self.ref_val_map = self.build_maps( - RelLib.EventRef.CUSTOM,Utils.personal_events) + RelLib.EventRef.CUSTOM,self.role_dict) def set_type(self,index,value): val = self.ev_name_map.get(value,RelLib.Event.CUSTOM) @@ -349,11 +363,8 @@ class EventListBox(ReorderListBox): def add(self,obj): """Brings up the EventEditor for a new event""" - EventEdit.EventRefEditor(None,None,self.person,self.parent.db, + EventEdit.EventRefEditor(None,None,self.primary,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): """ @@ -365,7 +376,7 @@ class EventListBox(ReorderListBox): self.parent.window) event = sel_event.run() if event: - EventEdit.EventRefEditor(event,None,self.person,self.parent.db, + EventEdit.EventRefEditor(event,None,self.primary,self.parent.db, self.edit_callback,self.parent) def update(self,obj): @@ -373,11 +384,8 @@ class EventListBox(ReorderListBox): if not node: return event_ref,event = self.list_model.get_object(node) - EventEdit.EventRefEditor(event,event_ref,self.person,self.parent.db, + EventEdit.EventRefEditor(event,event_ref,self.primary,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 @@ -390,16 +398,16 @@ class EventListBox(ReorderListBox): has_source = len(event.get_source_references())> 0 etype = event.get_type() if etype[0] == RelLib.Event.CUSTOM \ - or not Utils.personal_events.has_key(etype[0]): + or not self.ev_dict.has_key(etype[0]): name = etype[1] else: - name = Utils.personal_events[etype[0]] + name = self.ev_dict[etype[0]] ref_role = event_ref.get_role() if ref_role[0] == RelLib.EventRef.CUSTOM \ - or not Utils.event_roles.has_key(ref_role[0]): + or not self.role_dict.has_key(ref_role[0]): role = ref_role[1] else: - role = Utils.event_roles[ref_role[0]] + role = self.role_dict[ref_role[0]] return [name, event.get_description(), event.get_date(), pname, role, has_source, has_note] diff --git a/src/Marriage.py b/src/Marriage.py index 5d88a9d0e..b30d327ee 100644 --- a/src/Marriage.py +++ b/src/Marriage.py @@ -48,6 +48,7 @@ import const import Utils import AutoComp import ListModel +import ListBox import RelLib import ImageSelect import DateHandler @@ -121,16 +122,16 @@ class Marriage: "on_addphoto_clicked" : self.gallery.on_add_media_clicked, "on_selectphoto_clicked" : self.gallery.on_select_media_clicked, "on_close_marriage_editor" : self.on_close_marriage_editor, - "on_delete_event" : self.on_delete_event, + #"on_delete_event" : self.on_delete_event, "on_lds_src_clicked" : self.lds_src_clicked, "on_lds_note_clicked" : self.lds_note_clicked, "on_deletephoto_clicked" : self.gallery.on_delete_media_clicked, "on_edit_photo_clicked" : self.gallery.on_edit_media_clicked, "on_edit_properties_clicked": self.gallery.popup_change_description, - "on_marriageAddBtn_clicked" : self.on_add_clicked, - "on_event_update_clicked" : self.on_event_update_clicked, + #"on_marriageAddBtn_clicked" : self.on_add_clicked, + #"on_event_update_clicked" : self.on_event_update_clicked, "on_attr_update_clicked" : self.on_update_attr_clicked, - "on_marriageDeleteBtn_clicked" : self.on_delete_clicked, + #"on_marriageDeleteBtn_clicked" : self.on_delete_clicked, "on_switch_page" : self.on_switch_page }) @@ -148,22 +149,21 @@ class Marriage: Utils.set_title_label(self.top,self.title) - self.event_list = self.get_widget("marriageEventList") + self.event_ref_list = self.get_widget("marriageEventList") if gtk.gdk.screen_height() > 700: - self.event_list.set_size_request(500,250) + self.event_ref_list.set_size_request(500,250) else: - self.event_list.set_size_request(500,-1) - + self.event_ref_list.set_size_request(500,-1) # widgets self.complete = self.get_widget('complete') self.complete.set_sensitive(mode) - self.date_field = self.get_widget("marriageDate") - self.place_field = self.get_widget("marriagePlace") - self.cause_field = self.get_widget("marriageCause") - self.name_field = self.get_widget("marriageEventName") - self.descr_field = self.get_widget("marriageDescription") + #self.date_field = self.get_widget("marriageDate") + #self.place_field = self.get_widget("marriagePlace") + #self.cause_field = self.get_widget("marriageCause") + #self.name_field = self.get_widget("marriageEventName") + #self.descr_field = self.get_widget("marriageDescription") self.type_field = self.get_widget("marriage_type") self.type_field.set_sensitive(mode) self.notes_field = self.get_widget("marriageNotes") @@ -173,8 +173,12 @@ class Marriage: self.attr_list = self.get_widget("attr_list") self.attr_type = self.get_widget("attr_type") self.attr_value = self.get_widget("attr_value") - self.event_src_field = self.get_widget("event_srcinfo") - self.event_conf_field = self.get_widget("event_conf") + #self.event_src_field = self.get_widget("event_srcinfo") + #self.event_conf_field = self.get_widget("event_conf") + event_add_btn = self.get_widget("marriage_add") + event_edit_btn = self.get_widget("marriage_edit") + event_delete_btn = self.get_widget("marriage_del") + event_sel_btn = self.get_widget("marriage_sel") self.attr_src_field = self.get_widget("attr_srcinfo") self.attr_conf_field = self.get_widget("attr_conf") self.lds_date = self.get_widget("lds_date") @@ -201,7 +205,7 @@ class Marriage: self.preform = self.get_widget("mar_preform") self.preform.set_sensitive(mode) - self.ereflist = family.get_event_ref_list()[:] + #self.ereflist = family.get_event_ref_list()[:] self.alist = family.get_attribute_list()[:] self.lists_changed = 0 @@ -210,16 +214,22 @@ class Marriage: # set initial data self.gallery.load_images() - etitles = [(_('Event'),-1,100),(_('Date'),-1,125),(_('Place'),-1,150)] + #etitles = [(_('Event'),-1,100),(_('Date'),-1,125),(_('Place'),-1,150)] atitles = [(_('Attribute'),-1,150),(_('Value'),-1,150)] - self.etree = ListModel.ListModel(self.event_list, etitles, - self.on_select_row, - self.on_event_update_clicked) + #self.etree = ListModel.ListModel(self.event_list, etitles, + # self.on_select_row, + # self.on_event_update_clicked) self.atree = ListModel.ListModel(self.attr_list, atitles, self.on_attr_list_select_row, self.on_update_attr_clicked) + # event display + self.event_box = ListBox.EventListBox( + self, family, self.event_ref_list, self.events_label, + [event_add_btn,event_edit_btn,event_delete_btn,event_sel_btn]) + self.event_box.redraw() + self.type_selector = AutoComp.StandardCustomSelector( \ Utils.family_relations,self.type_field, RelLib.Family.CUSTOM,RelLib.Name.MARRIED) @@ -264,17 +274,17 @@ class Marriage: else: Utils.unbold_label(self.lds_label) - self.event_list.drag_dest_set(gtk.DEST_DEFAULT_ALL, - [DdTargets.FAMILY_EVENT.target()], - gtk.gdk.ACTION_COPY) - self.event_list.drag_source_set(gtk.gdk.BUTTON1_MASK, - [DdTargets.FAMILY_EVENT.target()], - gtk.gdk.ACTION_COPY) - self.event_list.connect('drag_data_get', - self.ev_source_drag_data_get) - self.event_list.connect('drag_data_received', - self.ev_dest_drag_data_received) - self.event_list.connect('drag_begin', self.ev_drag_begin) + #self.event_list.drag_dest_set(gtk.DEST_DEFAULT_ALL, + # [DdTargets.FAMILY_EVENT.target()], + # gtk.gdk.ACTION_COPY) + #self.event_list.drag_source_set(gtk.gdk.BUTTON1_MASK, + # [DdTargets.FAMILY_EVENT.target()], + # gtk.gdk.ACTION_COPY) + #self.event_list.connect('drag_data_get', + # self.ev_source_drag_data_get) + #self.event_list.connect('drag_data_received', + # self.ev_dest_drag_data_received) + #self.event_list.connect('drag_begin', self.ev_drag_begin) self.attr_list.drag_dest_set(gtk.DEST_DEFAULT_ALL, [DdTargets.FAMILY_ATTRIBUTE.target()], @@ -303,7 +313,7 @@ class Marriage: self.top.get_widget('add_src'), self.top.get_widget('edit_src'), self.top.get_widget('del_src'), self.db.readonly) - self.redraw_event_list() + #self.redraw_event_list() self.redraw_attr_list() self.add_itself_to_winsmenu() self.top.get_widget('ok').set_sensitive(not self.db.readonly) @@ -524,7 +534,8 @@ class Marriage: selection_data.set(selection_data.target, bits_per, data) def update_lists(self): - self.family.set_event_ref_list(self.ereflist) + eref_list = [event_ref for (event_ref,event) in self.event_box.data] + self.family.set_event_ref_list(eref_list) self.family.set_attribute_list(self.alist) def attr_edit_callback(self,attr): @@ -848,6 +859,8 @@ class Marriage: list.insert(dest,obj) def on_switch_page(self,obj,a,page): + if page == 0: + self.event_box.redraw() text = unicode(self.notes_buffer.get_text(self.notes_buffer.get_start_iter(), self.notes_buffer.get_end_iter(),False)) if text: diff --git a/src/RelLib.py b/src/RelLib.py index f2139af1e..96137c1e3 100644 --- a/src/RelLib.py +++ b/src/RelLib.py @@ -4177,6 +4177,7 @@ class EventRef(BaseObject,PrivacyBase,NoteBase): BRIDE = 5 GROOM = 6 WITNESS = 7 + FAMILY = 8 def __init__(self,source=None): """ diff --git a/src/Utils.py b/src/Utils.py index 6247dc3a1..4ad92675e 100644 --- a/src/Utils.py +++ b/src/Utils.py @@ -215,6 +215,12 @@ event_roles = { RelLib.EventRef.WITNESS : _("Witness"), } +family_event_roles = { + RelLib.EventRef.UNKNOWN : _("Unknown"), + RelLib.EventRef.CUSTOM : _("Custom"), + RelLib.EventRef.FAMILY : _("Family"), + } + repository_types = { RelLib.Repository.UNKNOWN : _("Unknown"), RelLib.Repository.CUSTOM : _("Custom"), diff --git a/src/gramps.glade b/src/gramps.glade index 4b9c62998..9b58a2a6b 100644 --- a/src/gramps.glade +++ b/src/gramps.glade @@ -12828,6 +12828,178 @@ tories</b> + + + 12 + True + 3 + 3 + False + 6 + 12 + + + + True + _Relationship type: + True + False + GTK_JUSTIFY_CENTER + False + False + 0 + 0.5 + 0 + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + _GRAMPS ID: + True + False + GTK_JUSTIFY_CENTER + False + False + 0 + 0.5 + 0 + 0 + gid + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + Last Changed: + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + + + 0 + 1 + 2 + 3 + fill + + + + + + + True + + False + False + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + + + 1 + 3 + 2 + 3 + fill + + + + + + + True + + + 1 + 3 + 0 + 1 + fill + fill + + + + + + True + True + Information i_s complete + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 2 + 3 + 1 + 2 + expand|shrink|fill + + + + + + + True + True + False + True + 0 + + True + * + False + + + 1 + 2 + 1 + 2 + expand|shrink|fill + + + + + + 0 + True + True + + + True @@ -12840,206 +13012,31 @@ tories</b> - + + 6 True False - 0 + 6 - - 12 + True - 4 - 2 - False - 6 - 12 + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT - - True - _Relationship type: - True - False - GTK_JUSTIFY_CENTER - False - False - 0 - 0.5 - 0 - 0 - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - _GRAMPS ID: - True - False - GTK_JUSTIFY_CENTER - False - False - 0 - 0.5 - 0 - 0 - gid - - - - - - 0 - 1 - 1 - 2 - fill - - - - - - + True True - False - True - 0 - - True - * - False + True + False + False + True - - 1 - 2 - 1 - 2 - - - - - - True - Last Changed: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 1 - 2 - 2 - 3 - fill - - - - - - - True - True - Information i_s complete - True - GTK_RELIEF_NORMAL - True - False - False - True - - - 1 - 2 - 3 - 4 - fill - - - - - - - True - - - 1 - 2 - 0 - 1 - fill - fill - - - - - 5 - True - True - - - - - False - True - - - - - - True - False - 0 - - - - True - gtk-file - 4 - 0.5 - 0.5 - 0 - 0 0 @@ -13049,593 +13046,125 @@ tories</b> - - True - <b>General</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - - - 0 - False - False - - - - - tab - - - - - - True - False - 0 - - - - 12 - True - 9 - 5 - False - 3 - 12 - - - - True - Date: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 1 - 2 - 2 - 3 - fill - - - - - - - True - Type: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 1 - 2 - 1 - 2 - fill - - - - - - - True - Place - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 1 - 2 - 3 - 4 - fill - - - - - - - True - Cause: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 1 - 2 - 4 - 5 - fill - - - - - - - True - Description: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 1 - 2 - 5 - 6 - fill - - - - - - - True - Name: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 1 - 2 - 8 - 9 - fill - - - - - - - True - Confidence: - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 3 - 4 - 8 - 9 - fill - - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 4 - 5 - 8 - 9 - - - - - - - True - <b>Events</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 0 - 5 - 0 - 1 - fill - - - - - - - True - <b>Primary source</b> - False - True - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 0 - 5 - 7 - 8 - fill - - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 2 - 5 - 1 - 2 - - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 2 - 5 - 2 - 3 - - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 2 - 5 - 4 - 5 - fill - - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 2 - 5 - 5 - 6 - fill - - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 2 - 3 - 8 - 9 - - - - - - - True - - False - False - GTK_JUSTIFY_LEFT - False - False - 0 - 0.5 - 0 - 0 - - - 2 - 5 - 3 - 4 - - - - - - 0 - False - True - - - - - - 6 + True False 6 - + True + Add new event to the database and link this marriage to it True - GTK_POLICY_AUTOMATIC - GTK_POLICY_AUTOMATIC - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT + GTK_RELIEF_NORMAL + True + - + True - True - True - False - False - True + gtk-add + 4 + 0.5 + 0.5 + 0 + 0 - - 0 - True - True - - - - - - True - False - 6 - - - - True - Add new event to the database and link this marriage to it - True - GTK_RELIEF_NORMAL - True - - - - - True - gtk-add - 4 - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - True - - - - - - True - Select an existing event from the database and link this marriage to it - True - GTK_RELIEF_NORMAL - True - - - - - True - gtk-index - 4 - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - True - GTK_RELIEF_NORMAL - True - - - - - True - edit_sm.png - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - - - - True - Delete selected event - True - GTK_RELIEF_NORMAL - True - - - - - True - gtk-remove - 4 - 0.5 - 0.5 - 0 - 0 - - - - - 0 - False - False - - - 0 False True + + + + True + Select an existing event from the database and link this marriage to it + True + GTK_RELIEF_NORMAL + True + + + + + True + gtk-index + 4 + 0.5 + 0.5 + 0 + 0 + + + + + 0 + False + False + + + + + + True + Edit the selected event reference + True + GTK_RELIEF_NORMAL + True + + + + + True + edit_sm.png + 0.5 + 0.5 + 0 + 0 + + + + + 0 + False + False + + + + + + True + Remove selected event reference + True + GTK_RELIEF_NORMAL + True + + + + + True + gtk-remove + 4 + 0.5 + 0.5 + 0 + 0 + + + + + 0 + False + False + + 0 - True + False True @@ -35362,7 +34891,7 @@ Family name Given name True GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE + GTK_WIN_POS_CENTER_ON_PARENT False 400 True