From e45cf453ff1955ca6c6e0c5a8dd4a1776d4ce4a6 Mon Sep 17 00:00:00 2001 From: Don Allingham Date: Fri, 31 Mar 2006 23:46:34 +0000 Subject: [PATCH] remember custom attributes/events svn: r6248 --- gramps2/ChangeLog | 8 ++ gramps2/src/AutoComp.py | 12 +- gramps2/src/DisplayTabs.py | 158 ++++++++++++++++---------- gramps2/src/Editors/_EditAttribute.py | 49 +++++--- gramps2/src/Editors/_EditEvent.py | 64 +++++++++-- gramps2/src/Editors/_EditEventRef.py | 52 +++++++-- gramps2/src/Editors/_EditFamily.py | 4 +- gramps2/src/GrampsDb/_GrampsDbBase.py | 20 +++- gramps2/src/GrampsWidgets.py | 7 +- 9 files changed, 268 insertions(+), 106 deletions(-) diff --git a/gramps2/ChangeLog b/gramps2/ChangeLog index 974a4ea88..c91386277 100644 --- a/gramps2/ChangeLog +++ b/gramps2/ChangeLog @@ -1,4 +1,12 @@ 2006-03-31 Don Allingham + * src/GrampsDb/_GrampsDbBase.py: handle saving of custom + attributes and event types for use in menus + * src/Editors/_EditAttribute.py: support for family vs. person + * src/Editors/_EditEventRef.py: support for family vs. person + * src/Editors/_EditEvent.py: support for family vs. person + * src/DisplayTabs: support for family vs. person attributes/events + * src/GrampsWidgets.py: initialize type value properly + * src/GrampsDb/_WriteGedcom.py: fix lds calls * src/lds.py: restore baptism status values * src/Editors/_EditPrimary.py: check for empty objects * src/Editors/_EditPlace.py: check for empty objects diff --git a/gramps2/src/AutoComp.py b/gramps2/src/AutoComp.py index 64e8271b4..f47614f65 100644 --- a/gramps2/src/AutoComp.py +++ b/gramps2/src/AutoComp.py @@ -117,7 +117,8 @@ class StandardCustomSelector: (active_key,mapping[active_key]) tuple. """ - def __init__(self,mapping,cbe=None,custom_key=None,active_key=None): + def __init__(self,mapping,cbe=None,custom_key=None,active_key=None, + additional=None): """ Constructor for the StandardCustomSelector class. @@ -136,7 +137,7 @@ class StandardCustomSelector: self.custom_key = custom_key self.active_key = active_key self.active_index = 0 - + self.additional = additional # make model self.store = gtk.ListStore(int,str) @@ -171,6 +172,13 @@ class StandardCustomSelector: self.active_index = index index = index + 1 + if self.additional: + for (value,data) in self.additional: + self.store.append(row=[value,data]) + if key == self.active_key: + self.active_index = index + index = index + 1 + def by_value(self,f,s): """ Method for sorting keys based on the values. diff --git a/gramps2/src/DisplayTabs.py b/gramps2/src/DisplayTabs.py index 79fd850e5..cf1a97412 100644 --- a/gramps2/src/DisplayTabs.py +++ b/gramps2/src/DisplayTabs.py @@ -640,6 +640,10 @@ class EventEmbedList(EmbeddedList): EmbeddedList.__init__(self, dbstate, uistate, track, _('Events'), EventRefModel, True) + def get_ref_editor(self): + from Editors import EditFamilyEventRef + return EditFamilyEventRef + def get_icon_name(self): return 'gramps-event' @@ -650,39 +654,36 @@ class EventEmbedList(EmbeddedList): return ((1,0),(1,1),(1,2),(1,3),(1,4),(1,5)) def handle_extra_type(self, objtype, obj): - from Editors import EditEventRef try: ref = RelLib.EventRef() event = self.dbstate.db.get_event_from_handle(obj) - if self.obj.__class__.__name__ == 'Person': - event.set_type((RelLib.Event.BIRTH,'')) - ref.set_role((RelLib.EventRef.PRIMARY,'')) - else: - event.set_type((RelLib.Event.MARRIAGE,'')) - ref.set_role((RelLib.EventRef.FAMILY,'')) - EditEventRef(self.dbstate,self.uistate,self.track, - event, ref, self.obj, self.event_added) + event.set_type(self.default_type()) + ref.set_role(self.default_role()) + self.get_ref_editor()( + self.dbstate,self.uistate,self.track, + event, ref, self.event_added) except Errors.WindowActiveError: pass + def default_type(self): + return (RelLib.EventRef.FAMILY,'') + + def default_role(self): + return (RelLib.Event.MARRIAGE,'') + def add_button_clicked(self,obj): - from Editors import EditEventRef try: ref = RelLib.EventRef() event = RelLib.Event() - if self.obj.__class__.__name__ == 'Person': - event.set_type((RelLib.Event.BIRTH,'')) - ref.set_role((RelLib.EventRef.PRIMARY,'')) - else: - event.set_type((RelLib.Event.MARRIAGE,'')) - ref.set_role((RelLib.EventRef.FAMILY,'')) - EditEventRef(self.dbstate,self.uistate,self.track, - event, ref, self.obj, self.event_added) + ref.set_role(self.default_role()) + event.set_type(self.default_type()) + self.get_ref_editor()( + self.dbstate,self.uistate,self.track, + event, ref, self.event_added) except Errors.WindowActiveError: pass def share_button_clicked(self,obj): - from Editors import EditEventRef import SelectEvent sel = SelectEvent.SelectEvent(self.dbstate.db,"Event Select") @@ -690,23 +691,21 @@ class EventEmbedList(EmbeddedList): if event: try: ref = RelLib.EventRef() - if self.obj.__class__.__name__ == 'Person': - ref.set_role((RelLib.EventRef.PRIMARY,'')) - else: - ref.set_role((RelLib.EventRef.FAMILY,'')) - EditEventRef(self.dbstate,self.uistate,self.track, - event, ref, self.obj, self.event_added) + ref.set_role(self.default_role()) + self.get_ref_editor()( + self.dbstate,self.uistate,self.track, + event, ref, self.event_added) except Errors.WindowActiveError: pass def edit_button_clicked(self,obj): ref = self.get_selected() if ref: - from Editors import EditEventRef event = self.dbstate.db.get_event_from_handle(ref.ref) try: - EditEventRef(self.dbstate,self.uistate,self.track, - event, ref, self.obj, self.event_updated) + self.get_ref_editor()( + self.dbstate,self.uistate,self.track, + event, ref, self.obj, self.event_updated) except Errors.WindowActiveError: pass @@ -732,6 +731,16 @@ class PersonEventEmbedList(EventEmbedList): def get_data(self): return self.orig_data + def default_role(self): + return (RelLib.EventRef.PRIMARY,'') + + def default_type(self): + return (RelLib.Event.BIRTH,'') + + def get_ref_editor(self): + from Editors import EditEventRef + return EditEventRef + def return_info(self): new_list = [] birth_ref = None @@ -946,6 +955,13 @@ class AttrEmbedList(EmbeddedList): EmbeddedList.__init__(self, dbstate, uistate, track, _('Attributes'), AttrModel) + def get_editor(self): + from Editors import EditAttribute + return EditAttribute + + def get_user_values(self): + return self.dbstate.db.get_person_attribute_types() + def get_data(self): return self.data @@ -953,14 +969,12 @@ class AttrEmbedList(EmbeddedList): return ((1,0),(1,1)) def add_button_clicked(self,obj): - from Editors import EditAttribute pname = '' - attr_list = [] attr = RelLib.Attribute() try: - EditAttribute( + self.get_editor()( self.dbstate, self.uistate, self.track, attr, - pname, attr_list, self.add_callback) + pname, self.get_user_values(), self.add_callback) except Errors.WindowActiveError: pass @@ -972,13 +986,11 @@ class AttrEmbedList(EmbeddedList): def edit_button_clicked(self,obj): attr = self.get_selected() if attr: - from Editors import EditAttribute pname = '' - attr_list = [] try: - EditAttribute( + self.get_editor()( self.dbstate, self.uistate, self.track, attr, - pname, attr_list, self.edit_callback) + pname, self.get_user_values(), self.edit_callback) except Errors.WindowActiveError: pass @@ -986,6 +998,23 @@ class AttrEmbedList(EmbeddedList): self.changed = True self.rebuild() +#------------------------------------------------------------------------- +# +# +# +#------------------------------------------------------------------------- +class FamilyAttrEmbedList(AttrEmbedList): + + def __init__(self,dbstate,uistate,track,data): + AttrEmbedList.__init__(self, dbstate, uistate, track, data) + + def get_editor(self): + from Editors import EditFamilyAttribute + return EditFamilyAttribute + + def get_user_values(self): + return self.dbstate.db.get_family_attribute_types() + #------------------------------------------------------------------------- # # @@ -1014,9 +1043,10 @@ class WebEmbedList(EmbeddedList): return ((1,0),(1,1),(1,2)) def add_button_clicked(self,obj): - from Editors import EditUrl url = RelLib.Url() try: + from Editors import EditUrl + EditUrl(self.dbstate, self.uistate, self.track, '', url, self.add_callback) except Errors.WindowActiveError: @@ -1029,8 +1059,9 @@ class WebEmbedList(EmbeddedList): def edit_button_clicked(self,obj): url = self.get_selected() if url: - from Editors import EditUrl try: + from Editors import EditUrl + EditUrl(self.dbstate, self.uistate, self.track, '', url, self.edit_callback) except Errors.WindowActiveError: @@ -1066,9 +1097,10 @@ class NameEmbedList(EmbeddedList): return ((1,0),(1,1)) def add_button_clicked(self,obj): - from Editors import EditName name = RelLib.Name() try: + from Editors import EditName + EditName(self.dbstate, self.uistate, self.track, name, self.add_callback) except Errors.WindowActiveError: @@ -1081,8 +1113,9 @@ class NameEmbedList(EmbeddedList): def edit_button_clicked(self,obj): name = self.get_selected() if name: - from Editors import EditName try: + from Editors import EditName + EditName(self.dbstate, self.uistate, self.track, name, self.edit_callback) except Errors.WindowActiveError: @@ -1121,9 +1154,10 @@ class AddrEmbedList(EmbeddedList): return ((1,0),(1,1),(1,2),(1,3),(1,4)) def add_button_clicked(self,obj): - from Editors import EditAddress addr = RelLib.Address() try: + from Editors import EditAddress + EditAddress(self.dbstate, self.uistate, self.track, addr, self.add_callback) except Errors.WindowActiveError: @@ -1136,8 +1170,9 @@ class AddrEmbedList(EmbeddedList): def edit_button_clicked(self,obj): addr = self.get_selected() if addr: - from Editors import EditAddress try: + from Editors import EditAddress + EditAddress(self.dbstate, self.uistate, self.track, addr, self.edit_callback) except Errors.WindowActiveError: @@ -1176,9 +1211,10 @@ class LocationEmbedList(EmbeddedList): return ((1,0),(1,1),(1,2),(1,3),(1,4)) def add_button_clicked(self,obj): - from Editors import EditLocation loc = RelLib.Location() try: + from Editors import EditLocation + EditLocation(self.dbstate, self.uistate, self.track, loc, self.add_callback) except Errors.WindowActiveError: @@ -1191,8 +1227,9 @@ class LocationEmbedList(EmbeddedList): def edit_button_clicked(self,obj): loc = self.get_selected() if loc: - from Editors import EditLocation try: + from Editors import EditLocation + EditLocation(self.dbstate, self.uistate, self.track, loc, self.edit_callback) except Errors.WindowActiveError: @@ -1423,7 +1460,6 @@ class GalleryTab(ButtonTab): return None def add_button_clicked(self,obj): - from Editors import EditMediaRef import AddMedia am = AddMedia.AddMediaObject(self.dbstate.db) @@ -1432,6 +1468,8 @@ class GalleryTab(ButtonTab): sref = RelLib.MediaRef() try: + from Editors import EditMediaRef + EditMediaRef(self.dbstate, self.uistate, self.track, src, sref, self.add_callback) except Errors.WindowActiveError: @@ -1471,10 +1509,10 @@ class GalleryTab(ButtonTab): def edit_button_clicked(self,obj): ref = self.get_selected() if ref: - from Editors import EditMediaRef - obj = self.dbstate.db.get_object_from_handle(ref.get_reference_handle()) try: + from Editors import EditMediaRef + EditMediaRef(self.dbstate, self.uistate, self.track, obj, ref, self.edit_callback) except Errors.WindowActiveError: @@ -1517,24 +1555,25 @@ class SourceEmbedList(EmbeddedList): return ((1,0),(1,1),(1,2),(1,3)) def add_button_clicked(self,obj): - from Editors import EditSourceRef - sref = RelLib.SourceRef() src = RelLib.Source() try: + from Editors import EditSourceRef + EditSourceRef(self.dbstate, self.uistate, self.track, src, sref, self.add_callback) except Errors.WindowActiveError: pass def share_button_clicked(self,obj): - from Editors import EditSourceRef import SelectSource sel = SelectSource.SelectSource(self.dbstate.db,"Source Select") src = sel.run() if src: try: + from Editors import EditSourceRef + ref = RelLib.SourceRef() EditSourceRef(self.dbstate,self.uistate,self.track, src, ref, self.add_callback) @@ -1548,12 +1587,12 @@ class SourceEmbedList(EmbeddedList): self.rebuild() def edit_button_clicked(self,obj): - from Editors import EditSourceRef - sref = self.get_selected() src = self.dbstate.db.get_source_from_handle(sref.ref) if sref: try: + from Editors import EditSourceRef + EditSourceRef(self.dbstate, self.uistate, self.track, src, sref, self.edit_callback) except Errors.WindowActiveError: @@ -1564,11 +1603,11 @@ class SourceEmbedList(EmbeddedList): self.rebuild() def handle_extra_type(self, objtype, obj): - from Editors import EditSourceRef - sref = RelLib.SourceRef() src = self.dbstate.db.get_source_from_handle(obj) try: + from Editors import EditSourceRef + EditSourceRef(self.dbstate, self.uistate, self.track, src, sref, self.add_callback) except Errors.WindowActiveError: @@ -1608,8 +1647,9 @@ class RepoEmbedList(EmbeddedList): return ((1,0),(1,1),(1,2),(1,3)) def handle_extra_type(self, objtype, obj): - from Editors import EditRepoRef try: + from Editors import EditRepoRef + ref = RelLib.RepoRef() repo = self.dbstate.db.get_repository_from_handle(obj) EditRepoRef( @@ -1619,11 +1659,11 @@ class RepoEmbedList(EmbeddedList): pass def add_button_clicked(self,obj): - from Editors import EditRepoRef - ref = RelLib.RepoRef() repo = RelLib.Repository() try: + from Editors import EditRepoRef + EditRepoRef( self.dbstate, self.uistate, self.track, repo, ref, self.add_callback) @@ -1637,12 +1677,12 @@ class RepoEmbedList(EmbeddedList): self.rebuild() def edit_button_clicked(self,obj): - from Editors import EditRepoRef - ref = self.get_selected() if ref: repo = self.dbstate.db.get_repository_from_handle(ref.ref) try: + from Editors import EditRepoRef + EditRepoRef( self.dbstate, self.uistate, self.track, repo, ref, self.edit_callback) diff --git a/gramps2/src/Editors/_EditAttribute.py b/gramps2/src/Editors/_EditAttribute.py index cec31d100..faa87cc01 100644 --- a/gramps2/src/Editors/_EditAttribute.py +++ b/gramps2/src/Editors/_EditAttribute.py @@ -53,7 +53,6 @@ import RelLib import GrampsDisplay from _EditSecondary import EditSecondary -from QuestionDialog import WarningDialog from DisplayTabs import * from GrampsWidgets import * @@ -77,6 +76,9 @@ class EditAttribute(EditSecondary): """ self.alist = data_list EditSecondary.__init__(self, state, uistate, track, attrib, callback) + + def attribute_list(self): + return Utils.personal_attributes def _local_init(self): self.top = gtk.glade.XML(const.gladeFile, "attr_edit","gramps") @@ -101,9 +103,12 @@ class EditAttribute(EditSecondary): self.type_selector = MonitoredType( self.top.get_widget("attr_menu"), - self.obj.set_type, self.obj.get_type, - dict(Utils.personal_attributes), - RelLib.Attribute.CUSTOM) + self.obj.set_type, + self.obj.get_type, + self.attribute_list(), + RelLib.Attribute.CUSTOM, + custom_values=self.alist, + ) def _create_tabbed_pages(self): notebook = gtk.Notebook() @@ -135,18 +140,32 @@ class EditAttribute(EditSecondary): Called when the OK button is pressed. Gets data from the form and updates the Attribute data structure. """ - - attr_data = self.obj.get_type() - if (attr_data[0] == RelLib.Attribute.CUSTOM and - not attr_data[1] in self.alist): - WarningDialog( - _('New attribute type created'), - _('The "%s" attribute type has been added to this database.\n' - 'It will now appear in the attribute menus for this database') % attr_data[1]) - self.alist.append(attr_data[1]) - self.alist.sort() - if self.callback: self.callback(self.obj) self.close_window(obj) + +#------------------------------------------------------------------------- +# +# EditAttribute class +# +#------------------------------------------------------------------------- +class EditFamilyAttribute(EditAttribute): + """ + Displays a dialog that allows the user to edit an attribute. + """ + def __init__(self, state, uistate, track, attrib, title, data_list, callback): + """ + Displays the dialog box. + + parent - The class that called the Address editor. + attrib - The attribute that is to be edited + title - The title of the dialog box + list - list of options for the pop down menu + """ + EditAttribute.__init__(self, state, uistate, track, attrib, title, + data_list, callback) + + def attribute_list(self): + return Utils.family_attributes + diff --git a/gramps2/src/Editors/_EditEvent.py b/gramps2/src/Editors/_EditEvent.py index 780609061..cc135a543 100644 --- a/gramps2/src/Editors/_EditEvent.py +++ b/gramps2/src/Editors/_EditEvent.py @@ -61,10 +61,6 @@ from GrampsWidgets import * # Constants # #------------------------------------------------------------------------- -total_events = dict(Utils.personal_events) -for event_type in Utils.family_events.keys(): - if not total_events.has_key(event_type): - total_events[event_type] = Utils.family_events[event_type] #------------------------------------------------------------------------- # @@ -78,9 +74,26 @@ class EditEvent(EditPrimary): EditPrimary.__init__(self, dbstate, uistate, track, event, dbstate.db.get_event_from_handle) + self._init_event() + + def _init_event(self): + self.commit_event = self.db.commit_event + def empty_object(self): return RelLib.Event() + def get_base_events(self): + new_batch = {} + for key in Utils.personal_events: + new_batch[key] = Utils.personal_events[key] + for key in Utils.family_events: + new_batch[key] = Utils.family_events[key] + return new_batch + + def get_custom_events(self): + return self.dbstate.db.get_person_event_type_list() + \ + self.dbstate.db.get_family_event_types() + def _local_init(self): self.top = gtk.glade.XML(const.gladeFile, "event_edit","gramps") self.window = self.top.get_widget("event_edit") @@ -122,8 +135,9 @@ class EditEvent(EditPrimary): self.top.get_widget("personal_events"), self.obj.set_type, self.obj.get_type, - dict(total_events), - RelLib.Event.CUSTOM) + self.get_base_events(), + RelLib.Event.CUSTOM, + custom_values=self.get_custom_events()) self.date_field = MonitoredDate( self.top.get_widget("eventDate"), @@ -209,18 +223,13 @@ class EditEvent(EditPrimary): trans = self.db.transaction_begin() if need_new: self.db.add_place(place_obj,trans) - self.db.commit_event(self.obj,trans) + self.commit_event(self.obj,trans) self.db.transaction_commit(trans,_("Edit Event")) if self.callback: self.callback(self.obj) self.close(obj) - def get_event_names(self): - data = set(self.db.get_family_event_types()) - data.union(self.db.get_person_event_types()) - return list(data) - def data_has_changed(self): if self.db.readonly: return False @@ -230,6 +239,36 @@ class EditEvent(EditPrimary): else: return True +class EditPersonEvent(EditEvent): + + def __init__(self, event, dbstate, uistate, track=[], callback=None): + EditEvent.__init__(self, event, dbstate, uistate, track, + callback) + + def _init_event(self): + self.commit_event = self.db.commit_personal_event + + def get_base_events(self): + return Utils.personal_events + + def get_custom_events(self): + return self.dbstate.db.get_person_event_type_list() + +class EditFamilyEvent(EditEvent): + + def __init__(self, event, dbstate, uistate, track=[], callback=None): + EditEvent.__init__(self, event, dbstate, uistate, track, + callback) + + def _init_event(self): + self.commit_event = self.db.commit_family_event + + def get_base_events(self): + return Utils.family_events + + def get_custom_events(self): + return self.dbstate.db.get_family_event_types() + #------------------------------------------------------------------------- # # Delete Query class @@ -262,3 +301,4 @@ class DelEventQuery: self.db.remove_event(self.event.get_handle(),trans) self.db.transaction_commit( trans,_("Delete Event (%s)") % self.event.get_gramps_id()) + diff --git a/gramps2/src/Editors/_EditEventRef.py b/gramps2/src/Editors/_EditEventRef.py index 38658bbe5..0c9d97657 100644 --- a/gramps2/src/Editors/_EditEventRef.py +++ b/gramps2/src/Editors/_EditEventRef.py @@ -70,11 +70,10 @@ for event_type in Utils.family_events.keys(): # #------------------------------------------------------------------------- class EditEventRef(EditReference): - def __init__(self, state, uistate, track, event, event_ref, referent, update): - self.referent = referent - + def __init__(self, state, uistate, track, event, event_ref, update): EditReference.__init__(self, state, uistate, track, event, event_ref, update) + self._init_event() def _local_init(self): @@ -85,10 +84,18 @@ class EditEventRef(EditReference): self.define_warn_box(self.top.get_widget("eer_warning")) self.define_expander(self.top.get_widget("eer_expander")) - if self.referent.__class__.__name__ == 'Person': - self.role_dict = Utils.event_roles - elif self.referent.__class__.__name__ == 'Family': - self.role_dict = Utils.family_event_roles + def _init_event(self): + self.commit_event = self.db.commit_personal_event + self.add_event = self.db.add_person_event + + def get_roles(self): + return Utils.event_roles + + def get_event_types(self): + return Utils.personal_events + + def get_custom_events(self): + return [ (RelLib.Event.CUSTOM,val) for val in self.dbstate.db.get_person_event_types()] def _connect_signals(self): self.define_ok_button(self.top.get_widget('ok'),self.ok_clicked) @@ -126,15 +133,16 @@ class EditEventRef(EditReference): self.top.get_widget('eer_role_combo'), self.source_ref.set_role, self.source_ref.get_role, - self.role_dict, + self.get_roles(), RelLib.EventRef.CUSTOM) self.event_menu = MonitoredType( self.top.get_widget("eer_type_combo"), self.source.set_type, self.source.get_type, - dict(total_events), - RelLib.Event.CUSTOM) + self.get_event_types(), + RelLib.Event.CUSTOM, + custom_values=self.get_custom_events()) self.date_check = MonitoredDate( self.top.get_widget("eer_date"), @@ -206,12 +214,12 @@ class EditEventRef(EditReference): if self.source.handle: if need_new: self.db.add_place(place_obj,trans) - self.db.commit_event(self.source,trans) + self.commit_event(self.source,trans) self.db.transaction_commit(trans,_("Modify Event")) else: if need_new: self.db.add_place(place_obj,trans) - self.db.add_event(self.source,trans) + self.add_event(self.source,trans) self.db.transaction_commit(trans,_("Add Event")) self.source_ref.ref = self.source.handle @@ -220,6 +228,26 @@ class EditEventRef(EditReference): self.close_window(None) +class EditFamilyEventRef(EditEventRef): + + def __init__(self, state, uistate, track, event, event_ref, update): + + EditEventRef.__init__(self, state, uistate, track, event, + event_ref, update) + + def _init_event(self): + self.commit_event = self.db.commit_family_event + self.add_event = self.db.add_family_event + + def get_roles(self): + return Utils.event_roles + + def get_event_types(self): + return Utils.family_events + + def get_custom_events(self): + return [ (RelLib.Event.CUSTOM,val) for val in self.dbstate.db.get_family_event_types()] + #------------------------------------------------------------------------- # diff --git a/gramps2/src/Editors/_EditFamily.py b/gramps2/src/Editors/_EditFamily.py index 0b3480069..75ca4d52a 100644 --- a/gramps2/src/Editors/_EditFamily.py +++ b/gramps2/src/Editors/_EditFamily.py @@ -473,8 +473,8 @@ class EditFamily(EditPrimary): self.attr_list = self._add_tab( notebook, - AttrEmbedList(self.dbstate, self.uistate, self.track, - self.obj.get_attribute_list())) + FamilyAttrEmbedList(self.dbstate, self.uistate, self.track, + self.obj.get_attribute_list())) self.note_tab = self._add_tab( notebook, diff --git a/gramps2/src/GrampsDb/_GrampsDbBase.py b/gramps2/src/GrampsDb/_GrampsDbBase.py index 71343ee27..9fc383b33 100644 --- a/gramps2/src/GrampsDb/_GrampsDbBase.py +++ b/gramps2/src/GrampsDb/_GrampsDbBase.py @@ -403,7 +403,7 @@ class GrampsDbBase(GrampsDBCallback): for attr in person.attribute_list: self.individual_attributes.add(attr.type) - + self.marker_names.add(person.marker[1]) def commit_media_object(self,obj,transaction,change_time=None): @@ -859,6 +859,24 @@ class GrampsDbBase(GrampsDBCallback): self.find_next_event_gramps_id, self.commit_event) + def add_person_event(self,event,transaction): + """ + Adds an Event to the database, assigning internal IDs if they have + not already been defined. + """ + if event.type[0] == Event.CUSTOM: + self.individual_event_names.add(event.type[1]) + return self.add_event(event,transaction) + + def add_family_event(self,event,transaction): + """ + Adds an Event to the database, assigning internal IDs if they have + not already been defined. + """ + if event.type[0] == Event.CUSTOM: + self.family_event_names.add(event.type[1]) + return self.add_event(event,transaction) + def add_place(self,place,transaction): """ Adds a Place to the database, assigning internal IDs if they have diff --git a/gramps2/src/GrampsWidgets.py b/gramps2/src/GrampsWidgets.py index 3023d35f7..f0bb07fc2 100644 --- a/gramps2/src/GrampsWidgets.py +++ b/gramps2/src/GrampsWidgets.py @@ -316,7 +316,8 @@ class MonitoredText: class MonitoredType: - def __init__(self,obj,set_val,get_val,mapping,custom,readonly=False): + def __init__(self,obj,set_val,get_val,mapping,custom,readonly=False, + custom_values=None): self.set_val = set_val self.get_val = get_val @@ -327,9 +328,9 @@ class MonitoredType: default = val[0] else: default = None - + self.sel = AutoComp.StandardCustomSelector( - mapping, obj, custom, default) + mapping, obj, custom, default, additional=custom_values) self.set_val(self.sel.get_values()) self.obj.set_sensitive(not readonly)