diff --git a/gramps/src/Config.py b/gramps/src/Config.py index cf4a4c3e4..33d5db1d2 100644 --- a/gramps/src/Config.py +++ b/gramps/src/Config.py @@ -106,6 +106,7 @@ report_dir = "./" web_dir = "./" db_dir = "./" id_visible = 0 +id_edit = 0 #------------------------------------------------------------------------- # @@ -151,6 +152,7 @@ def loadConfig(call): global usetabs global uncompress global id_visible + global id_edit global show_detail global hide_altnames global lastfile @@ -172,6 +174,7 @@ def loadConfig(call): usetabs = gnome.config.get_bool("/gramps/config/UseTabs") uncompress = gnome.config.get_bool("/gramps/config/DontCompressXML") id_visible = gnome.config.get_bool("/gramps/config/IdVisible") + id_edit = gnome.config.get_bool("/gramps/config/IdEdit") show_detail = gnome.config.get_bool("/gramps/config/ShowDetail") status_bar = gnome.config.get_int("/gramps/config/StatusBar") display_attr = gnome.config.get_bool("/gramps/config/DisplayAttr") @@ -244,6 +247,8 @@ def loadConfig(call): uncompress = 0 if id_visible == None: id_visible = 0 + if id_edit == None: + id_edit = 0 if show_detail == None: show_detail = 0 if status_bar == None: @@ -345,6 +350,7 @@ def on_propertybox_apply(obj,page): global usetabs global uncompress global id_visible + global id_edit global status_bar global display_attr global attr_name @@ -366,6 +372,7 @@ def on_propertybox_apply(obj,page): usetabs = prefsTop.get_widget("usetabs").get_active() uncompress = prefsTop.get_widget("uncompress").get_active() id_visible = prefsTop.get_widget("gid_visible").get_active() + id_edit = prefsTop.get_widget("gid_edit").get_active() hide_altnames = prefsTop.get_widget("display_altnames").get_active() paper_obj = prefsTop.get_widget("paper_size").get_menu().get_active() output_obj = prefsTop.get_widget("output_format").get_menu().get_active() @@ -395,6 +402,7 @@ def on_propertybox_apply(obj,page): gnome.config.set_bool("/gramps/config/UseTabs",usetabs) gnome.config.set_bool("/gramps/config/DontCompressXML",uncompress) gnome.config.set_bool("/gramps/config/IdVisible",id_visible) + gnome.config.set_bool("/gramps/config/IdEdit",id_edit) gnome.config.set_bool("/gramps/config/ShowDetail",show_detail) gnome.config.set_int("/gramps/config/StatusBar",status_bar) gnome.config.set_bool("/gramps/config/DisplayAttr",display_attr) @@ -532,6 +540,7 @@ def display_preferences_box(): pbox = prefsTop.get_widget("propertybox") auto = prefsTop.get_widget("autoload") vis = prefsTop.get_widget("gid_visible") + idedit = prefsTop.get_widget("gid_edit") tabs = prefsTop.get_widget("usetabs") compress = prefsTop.get_widget("uncompress") detail = prefsTop.get_widget("showdetail") @@ -542,6 +551,7 @@ def display_preferences_box(): tabs.set_active(usetabs) compress.set_active(uncompress) vis.set_active(id_visible) + idedit.set_active(id_edit) if status_bar == 0: prefsTop.get_widget("stat1").set_active(1) diff --git a/gramps/src/EditPerson.glade b/gramps/src/EditPerson.glade index b3e8fdd60..5114ffea6 100644 --- a/gramps/src/EditPerson.glade +++ b/gramps/src/EditPerson.glade @@ -971,32 +971,6 @@ 0 0 - - GtkLabel - gid - - GTK_JUSTIFY_CENTER - False - 0 - 0.5 - 0 - 0 - - 2 - 3 - 0 - 1 - 5 - 5 - True - False - False - False - True - False - - - GtkLabel user_data @@ -1126,6 +1100,30 @@ False + + + GtkEntry + gid + True + False + True + 0 + + + 2 + 3 + 0 + 1 + 2 + 0 + True + False + False + False + True + False + + diff --git a/gramps/src/EditPerson.py b/gramps/src/EditPerson.py index 2c543daa6..11ae0736b 100644 --- a/gramps/src/EditPerson.py +++ b/gramps/src/EditPerson.py @@ -148,6 +148,7 @@ class EditPerson: self.attr_source = self.get_widget("attr_source") self.name_note = self.get_widget("name_note") self.name_source = self.get_widget("name_source") + self.gid = self.get_widget("gid") self.elist = person.getEventList()[:] self.nlist = person.getAlternateNames()[:] @@ -203,7 +204,8 @@ class EditPerson: const.surnames.sort() self.get_widget("lastNameList").set_popdown_strings(const.surnames) - self.get_widget("gid").set_text(person.getId()) + self.gid.set_text(person.getId()) + self.gid.set_editable(Config.id_edit) self.event_list.set_column_visibility(3,Config.show_detail) self.name_list.set_column_visibility(1,Config.show_detail) self.attr_list.set_column_visibility(2,Config.show_detail) @@ -453,10 +455,13 @@ def did_data_change(obj): dplace = epo.dplace.get_text() gender = epo.is_male.get_active() text = epo.notes_field.get_chars(0,-1) + idval = epo.gid.get_text() changed = 0 name = person.getPrimaryName() - + + if person.getId() != idval: + changed = 1 if suffix != name.getSuffix() or surname != name.getSurname(): changed = 1 if given != name.getFirstName() or nick != person.getNickName(): @@ -1108,9 +1113,20 @@ def save_person(obj): given = epo.given.get_text() nick = epo.nick.get_text() title = epo.title.get_text() + idval = epo.gid.get_text() name = epo.pname + if idval != person.getId(): + m = epo.db.getPersonMap() + if not m.has_key(idval): + person.setId(idval) + else: + n = Config.nameof(m[idval]) + msg1 = _("GRAMPS ID value was not changed.") + msg2 = _("%s is already used by %s") % (idval,n) + GnomeWarningDialog("%s\n%s" % (msg1,msg2)) + if suffix != name.getSuffix(): name.setSuffix(suffix) diff --git a/gramps/src/config.glade b/gramps/src/config.glade index 22092741d..45a4c6bde 100644 --- a/gramps/src/config.glade +++ b/gramps/src/config.glade @@ -59,7 +59,7 @@ GtkTable table13 - 5 + 6 2 False 0 @@ -82,8 +82,8 @@ 1 2 - 4 - 5 + 5 + 6 0 0 True @@ -111,8 +111,8 @@ 0 1 - 4 - 5 + 5 + 6 5 5 False @@ -239,6 +239,35 @@ False + + + GtkCheckButton + gid_edit + True + + toggled + on_object_toggled + propertybox + Thu, 12 Jul 2001 13:42:44 GMT + + + False + True + + 0 + 2 + 4 + 5 + 5 + 5 + False + False + False + False + True + False + +