From 491b0cfdc7085a0a6c3c43339273e0e2266e8eda Mon Sep 17 00:00:00 2001 From: Alex Roitman Date: Mon, 6 Jun 2005 23:50:33 +0000 Subject: [PATCH] * 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 --- ChangeLog | 12 + src/AttrEdit.py | 20 +- src/AutoComp.py | 9 +- src/EditPerson.py | 3 +- src/EventEdit.py | 282 ++++++-- src/ListBox.py | 103 ++- src/NameEdit.py | 2 +- src/edit_person.glade | 240 +------ src/gramps.glade | 1538 +++++++++++++++++++++++++++++++++++++++++ 9 files changed, 1885 insertions(+), 324 deletions(-) diff --git a/ChangeLog b/ChangeLog index 15a3bb1e0..3e52a3e3a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,15 @@ +2005-06-06 Alex Roitman + * 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 * src/DateHandler.py: Fix typo caught in gramps20 branch. diff --git a/src/AttrEdit.py b/src/AttrEdit.py index 268be9eb7..e8eb51643 100644 --- a/src/AttrEdit.py +++ b/src/AttrEdit.py @@ -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() diff --git a/src/AutoComp.py b/src/AutoComp.py index 7a1155c1a..cb069b6dc 100644 --- a/src/AutoComp.py +++ b/src/AutoComp.py @@ -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): """ diff --git a/src/EditPerson.py b/src/EditPerson.py index 2af130915..176a047a3 100644 --- a/src/EditPerson.py +++ b/src/EditPerson.py @@ -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, diff --git a/src/EventEdit.py b/src/EventEdit.py index bbd6184a8..faab31eae 100644 --- a/src/EventEdit.py +++ b/src/EventEdit.py @@ -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) diff --git a/src/ListBox.py b/src/ListBox.py index dc3d7f39c..deaf79b7f 100644 --- a/src/ListBox.py +++ b/src/ListBox.py @@ -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); diff --git a/src/NameEdit.py b/src/NameEdit.py index f74f06825..46cea7e9d 100644 --- a/src/NameEdit.py +++ b/src/NameEdit.py @@ -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) diff --git a/src/edit_person.glade b/src/edit_person.glade index 57ba5654e..d1dbfc037 100644 --- a/src/edit_person.glade +++ b/src/edit_person.glade @@ -17,7 +17,6 @@ False GDK_WINDOW_TYPE_HINT_DIALOG GDK_GRAVITY_NORTH_WEST - True False @@ -109,10 +108,6 @@ 0 0 surname - PANGO_ELLIPSIZE_NONE - -1 - False - 0 1 @@ -138,10 +133,6 @@ 0 0 givenName - PANGO_ELLIPSIZE_NONE - -1 - False - 0 1 @@ -167,10 +158,6 @@ 0 0 prefix - PANGO_ELLIPSIZE_NONE - -1 - False - 0 5 @@ -196,10 +183,6 @@ 0 0 title - PANGO_ELLIPSIZE_NONE - -1 - False - 0 1 @@ -247,10 +230,6 @@ 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 1 @@ -268,8 +247,6 @@ Female Male Unknown - False - True 2 @@ -316,10 +293,6 @@ Unknown 0 0 suffix - PANGO_ELLIPSIZE_NONE - -1 - False - 0 3 @@ -344,10 +317,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 3 @@ -372,10 +341,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 5 @@ -435,9 +400,6 @@ Unknown True - False - True - True 6 @@ -508,10 +470,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -601,10 +559,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -657,10 +611,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 label_item @@ -742,9 +692,6 @@ Unknown False False True - False - False - False @@ -789,6 +736,34 @@ Unknown + + + True + Select an existing media object from the database and place it in this gallery + True + GTK_RELIEF_NORMAL + True + + + + + True + gtk-index + 4 + 0.5 + 0.5 + 0 + 0 + + + + + 0 + False + False + + + True @@ -813,7 +788,7 @@ Unknown 0 False - True + False @@ -842,13 +817,9 @@ Unknown 0 False - True + False - - - - 0 @@ -872,8 +843,6 @@ Unknown True - 4 - gtk-file 0.5 0.5 0 @@ -899,10 +868,6 @@ Unknown 0.5 6 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -941,9 +906,6 @@ Unknown False False True - False - False - False @@ -1071,8 +1033,6 @@ Unknown True - 4 - gtk-file 0.5 0.5 0 @@ -1098,10 +1058,6 @@ Unknown 0.5 6 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -1151,9 +1107,6 @@ Unknown False False True - False - False - False @@ -1295,8 +1248,6 @@ Unknown True - 4 - gtk-file 0.5 0.5 0 @@ -1322,10 +1273,6 @@ Unknown 0.5 6 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -1363,9 +1310,6 @@ Unknown False False True - False - False - False @@ -1493,8 +1437,6 @@ Unknown True - 4 - gtk-file 0.5 0.5 0 @@ -1520,10 +1462,6 @@ Unknown 0.5 6 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -1604,10 +1542,6 @@ Unknown 0 0 flowed - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -1688,8 +1622,6 @@ Unknown True - 4 - gtk-file 0.5 0.5 0 @@ -1715,10 +1647,6 @@ Unknown 0.5 6 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -1755,9 +1683,6 @@ Unknown False False True - False - False - False @@ -1880,8 +1805,6 @@ Unknown True - 4 - gtk-file 0.5 0.5 0 @@ -1907,10 +1830,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -2118,8 +2037,6 @@ Unknown True - 4 - gtk-file 0.5 0.5 0 @@ -2145,10 +2062,6 @@ Unknown 0.5 6 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -2192,9 +2105,6 @@ Unknown False False True - False - False - False @@ -2357,8 +2267,6 @@ Unknown True - 4 - gtk-file 0.5 0.5 0 @@ -2384,10 +2292,6 @@ Unknown 0.5 6 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -2425,10 +2329,6 @@ Unknown 0 0 ldsbapdate - PANGO_ELLIPSIZE_NONE - -1 - False - 0 1 @@ -2474,10 +2374,6 @@ Unknown 0 0 endowdate - PANGO_ELLIPSIZE_NONE - -1 - False - 0 Date: @@ -2526,10 +2422,6 @@ Unknown 0 0 sealdate - PANGO_ELLIPSIZE_NONE - -1 - False - 0 1 @@ -2754,10 +2646,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 3 @@ -2772,8 +2660,6 @@ Unknown True - False - True 4 @@ -2798,10 +2684,6 @@ Unknown 0 0 lds_bap_place - PANGO_ELLIPSIZE_NONE - -1 - False - 0 @@ -2839,8 +2721,6 @@ Unknown True - False - True 4 @@ -2865,10 +2745,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 3 @@ -2883,8 +2759,6 @@ Unknown True - False - True 4 @@ -2909,10 +2783,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 3 @@ -2938,10 +2808,6 @@ Unknown 0 0 lds_end_place - PANGO_ELLIPSIZE_NONE - -1 - False - 0 @@ -2990,10 +2856,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 3 @@ -3008,8 +2870,6 @@ Unknown True - False - True 4 @@ -3044,8 +2904,6 @@ Unknown True - False - True 4 @@ -3070,10 +2928,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 3 @@ -3099,10 +2953,6 @@ Unknown 0 0 lds_seal_place - PANGO_ELLIPSIZE_NONE - -1 - False - 0 @@ -3151,10 +3001,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 3 @@ -3169,8 +3015,6 @@ Unknown True - False - True 4 @@ -3215,10 +3059,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -3243,10 +3083,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -3271,10 +3107,6 @@ Unknown 0.5 0 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 @@ -3300,10 +3132,6 @@ Unknown 0 0 sealparents - PANGO_ELLIPSIZE_NONE - -1 - False - 0 1 @@ -3318,8 +3146,6 @@ Unknown True - False - True 2 @@ -3367,8 +3193,6 @@ Unknown True - 4 - gtk-file 0.5 0.5 0 @@ -3394,10 +3218,6 @@ Unknown 0.5 6 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 0 diff --git a/src/gramps.glade b/src/gramps.glade index 2ce92f13a..a96012de9 100644 --- a/src/gramps.glade +++ b/src/gramps.glade @@ -35011,4 +35011,1542 @@ Family name Given name + + True + + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + 400 + True + False + gramps.png + True + False + False + GDK_WINDOW_TYPE_HINT_DIALOG + GDK_GRAVITY_NORTH_WEST + False + + + + + True + False + 0 + + + + True + GTK_BUTTONBOX_END + + + + True + True + True + gtk-help + True + GTK_RELIEF_NORMAL + True + -11 + + + + + + + True + True + True + gtk-cancel + True + GTK_RELIEF_NORMAL + True + -6 + + + + + + + True + True + True + gtk-ok + True + GTK_RELIEF_NORMAL + True + -5 + + + + + + 0 + False + True + GTK_PACK_END + + + + + + 12 + True + 6 + 4 + False + 6 + 12 + + + + True + _Note: + True + False + GTK_JUSTIFY_CENTER + False + False + 0 + 0.5 + 0 + 0 + + + 1 + 2 + 3 + 4 + shrink|fill + + + + + + + True + _Role: + True + False + GTK_JUSTIFY_CENTER + False + False + 0 + 0.5 + 0 + 3 + + + 1 + 2 + 2 + 3 + shrink|fill + + + + + + + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_WORD + True + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + 2 + 3 + 3 + 4 + fill + fill + + + + + + True + + + 2 + 3 + 2 + 3 + fill + + + + + + True + <b>Reference information</b> + True + True + GTK_JUSTIFY_CENTER + False + False + 0 + 0.5 + 0 + 3 + + + 0 + 3 + 1 + 2 + fill + + + + + + + True + + True + True + GTK_JUSTIFY_CENTER + False + False + 0.5 + 0.5 + 0 + 3 + + + 0 + 3 + 0 + 1 + fill + + + + + + + 6 + True + True + False + 6 + + + + True + True + True + False + GTK_POS_TOP + False + False + + + + + 12 + True + 7 + 3 + False + 6 + 12 + + + + True + _Event type: + True + False + GTK_JUSTIFY_CENTER + False + False + 0 + 0.5 + 0 + 0 + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + _Date: + True + False + GTK_JUSTIFY_CENTER + False + False + 0 + 0.5 + 0 + 0 + eer_date + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + De_scription: + True + False + GTK_JUSTIFY_CENTER + False + False + 0 + 0.5 + 0 + 0 + eer_description + + + 0 + 1 + 4 + 5 + fill + + + + + + + True + _Place: + True + False + GTK_JUSTIFY_CENTER + False + False + 0 + 0.5 + 0 + 3 + eer_place + + + 0 + 1 + 2 + 3 + fill + + + + + + + True + _Cause: + True + False + GTK_JUSTIFY_CENTER + False + False + 0 + 0.5 + 0 + 0 + eer_cause + + + 0 + 1 + 3 + 4 + fill + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 2 + 1 + 2 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 3 + 4 + 5 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 3 + 3 + 4 + + + + + + + True + True + True + True + 0 + + True + * + False + + + 1 + 3 + 2 + 3 + + + + + + + True + True + _Private record + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 1 + 3 + 5 + 6 + fill + + + + + + + True + + + 1 + 3 + 0 + 1 + fill + fill + + + + + + True + True + GTK_RELIEF_NONE + True + + + + True + 0.5 + 0.5 + 0 + 0 + + + + + 2 + 3 + 1 + 2 + fill + fill + + + + + + True + <b>Note:</b> Any changes in the shared event information will be reflected in the event itself, for all participants in the event. + True + True + GTK_JUSTIFY_FILL + True + False + 0 + 0.5 + 0 + 3 + + + 1 + 3 + 6 + 7 + fill + + + + + + + True + gtk-dialog-warning + 6 + 0.5 + 0.5 + 0 + 0 + + + 0 + 1 + 6 + 7 + fill + fill + + + + + False + True + + + + + + True + False + 0 + + + + gtk-file + 4 + 0.5 + 0.5 + 0 + 0 + + + 0 + True + True + + + + + + True + General + False + True + GTK_JUSTIFY_CENTER + False + False + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + tab + + + + + + True + False + 0 + + + + 6 + True + False + 6 + + + + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + False + True + + + + + 0 + True + True + + + + + + True + False + 6 + + + + True + True + GTK_RELIEF_NORMAL + True + + + + True + gtk-add + 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 + True + GTK_RELIEF_NORMAL + True + + + + True + gtk-remove + 4 + 0.5 + 0.5 + 0 + 0 + + + + + 0 + False + False + + + + + + + + + 0 + False + True + + + + + 0 + True + True + + + + + + True + GTK_BUTTONBOX_SPREAD + 30 + + + 0 + False + True + + + + + False + True + + + + + + True + False + 0 + + + + gtk-file + 4 + 0.5 + 0.5 + 0 + 0 + + + 0 + True + True + + + + + + True + Sources + False + False + GTK_JUSTIFY_CENTER + False + False + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + tab + + + + + + True + False + 0 + + + + 6 + 400 + 200 + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + True + GTK_JUSTIFY_LEFT + GTK_WRAP_WORD + True + 0 + 0 + 0 + 0 + 0 + 0 + + + + + + 0 + True + False + + + + + + 12 + True + 2 + 3 + False + 12 + 24 + + + + True + <b>Format</b> + True + True + GTK_JUSTIFY_LEFT + False + False + 0 + 0.5 + 0 + 0 + + + 0 + 3 + 0 + 1 + fill + + + + + + + True + Multiple spaces, tabs, and single line breaks are replaced with single spaces. Two consecutive line breaks mark a new paragraph. + True + _Flowed + True + GTK_RELIEF_NORMAL + True + True + False + True + + + 1 + 2 + 1 + 2 + + + + + + + + True + Formatting is preserved, except for the leading whitespace. Multiple spaces, tabs, and all line breaks are respected. + True + _Preformatted + True + GTK_RELIEF_NORMAL + True + False + False + True + eer_ev_flowed + + + 2 + 3 + 1 + 2 + + + + + + + 0 + True + True + + + + + False + True + + + + + + True + False + 0 + + + + gtk-file + 4 + 0.5 + 0.5 + 0 + 0 + + + 0 + True + True + + + + + + True + Note + False + False + GTK_JUSTIFY_CENTER + False + False + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + tab + + + + + + True + False + 0 + + + + 6 + True + False + 6 + + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + False + True + + + + + 0 + True + True + + + + + + True + False + 6 + + + + True + True + GTK_RELIEF_NORMAL + True + + + + True + gtk-add + 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 + True + GTK_RELIEF_NORMAL + True + + + + True + gtk-remove + 4 + 0.5 + 0.5 + 0 + 0 + + + + + 0 + False + False + + + + + + + + + 0 + False + True + + + + + 0 + True + True + + + + + + True + GTK_BUTTONBOX_SPREAD + 0 + + + 0 + False + True + + + + + False + True + + + + + + True + False + 0 + + + + gtk-file + 4 + 0.5 + 0.5 + 0 + 0 + + + 0 + True + True + + + + + + True + Witnesses + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + tab + + + + + + True + False + 0 + + + + 6 + True + False + 6 + + + + True + True + GTK_POLICY_AUTOMATIC + GTK_POLICY_AUTOMATIC + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + False + 0 + 0 + 100 + 100 + 1 + + + + + 0 + True + True + + + + + + True + False + 6 + + + + True + Add a new media object to the database and place it in this gallery + True + GTK_RELIEF_NORMAL + True + + + + + True + gtk-add + 4 + 0.5 + 0.5 + 0 + 0 + + + + + 0 + False + False + + + + + + True + Select an existing media object from the database and place it in this gallery + True + GTK_RELIEF_NORMAL + True + + + + + True + gtk-index + 4 + 0.5 + 0.5 + 0 + 0 + + + + + 0 + False + False + + + + + + True + Edit the properties of the selected object + True + GTK_RELIEF_NORMAL + True + + + + + True + edit_sm.png + 0.5 + 0.5 + 0 + 0 + + + + + 0 + False + False + + + + + + True + Remove selected object from this gallery only + True + GTK_RELIEF_NORMAL + True + + + + + True + gtk-remove + 4 + 0.5 + 0.5 + 0 + 0 + + + + + 0 + False + False + + + + + 0 + False + True + + + + + 0 + True + True + + + + + + True + GTK_BUTTONBOX_SPREAD + 30 + + + 0 + False + True + + + + + False + True + + + + + + True + False + 0 + + + + gtk-file + 4 + 0.5 + 0.5 + 0 + 0 + + + 0 + True + True + + + + + + True + Gallery + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + 0 + False + False + + + + + tab + + + + + + + + True + <b>Shared event information</b> + False + True + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + + + label_item + + + + + 0 + 3 + 5 + 6 + fill + expand|shrink|fill + + + + + + True + True + _Private record + True + GTK_RELIEF_NORMAL + True + False + False + True + + + 2 + 4 + 4 + 5 + fill + + + + + + 0 + True + True + + + + + +