From 1dc536fd60e2a919006dec7ef639023382d17f66 Mon Sep 17 00:00:00 2001 From: Don Allingham Date: Thu, 26 Aug 2004 21:54:14 +0000 Subject: [PATCH] * src/Sort.py: use locale.strcoll for sorting * src/RelLib.py: don't use accent for sort name * src/EditPerson.py: compare edited ID value properly * src/Marriage.py: compare edited ID value properly * src/PeopleModel.py: use locale.strcoll for comparing * src/GrampsBSDDB.py: use locale.strcoll for comparing/sorting * src/GrampsDbBase.py: use locale.strcoll for comparing/sorting * src/DbPrompter.py: handle bad filenames a bit better svn: r3514 --- gramps2/ChangeLog | 10 ++++++++++ gramps2/src/DbPrompter.py | 25 ++++++++++++++----------- gramps2/src/EditPerson.py | 2 ++ gramps2/src/GrampsBSDDB.py | 3 ++- gramps2/src/GrampsDbBase.py | 11 ++++++----- gramps2/src/Marriage.py | 2 ++ gramps2/src/PeopleModel.py | 3 ++- gramps2/src/RelLib.py | 5 +++-- gramps2/src/Sort.py | 8 +++++--- 9 files changed, 46 insertions(+), 23 deletions(-) diff --git a/gramps2/ChangeLog b/gramps2/ChangeLog index 16d8545fb..e385a3443 100644 --- a/gramps2/ChangeLog +++ b/gramps2/ChangeLog @@ -1,3 +1,13 @@ +2004-08-26 Don Allingham + * src/Sort.py: use locale.strcoll for sorting + * src/RelLib.py: don't use accent for sort name + * src/EditPerson.py: compare edited ID value properly + * src/Marriage.py: compare edited ID value properly + * src/PeopleModel.py: use locale.strcoll for comparing + * src/GrampsBSDDB.py: use locale.strcoll for comparing/sorting + * src/GrampsDbBase.py: use locale.strcoll for comparing/sorting + * src/DbPrompter.py: handle bad filenames a bit better + 2004-08-25 Don Allingham * src/gramps_main.py: update properly after an edit * src/Utils.py: generate correct path name, using gramps id diff --git a/gramps2/src/DbPrompter.py b/gramps2/src/DbPrompter.py index e86304328..5be365de4 100644 --- a/gramps2/src/DbPrompter.py +++ b/gramps2/src/DbPrompter.py @@ -358,14 +358,17 @@ class NewNativeDbPrompter: choose.set_current_folder(default_dir) choose.set_current_name(os.path.split(new_filename)[1]) - response = choose.run() - if response == gtk.RESPONSE_OK: - filename = choose.get_filename() - if os.path.splitext(filename)[1] != ".grdb": - filename = filename + ".grdb" - choose.destroy() - self.parent.read_file(filename) - return 1 - else: - choose.destroy() - return 0 + while (True): + response = choose.run() + if response == gtk.RESPONSE_OK: + filename = choose.get_filename() + if filename == None: + continue + if os.path.splitext(filename)[1] != ".grdb": + filename = filename + ".grdb" + choose.destroy() + self.parent.read_file(filename) + return 1 + else: + choose.destroy() + return 0 diff --git a/gramps2/src/EditPerson.py b/gramps2/src/EditPerson.py index 81cf8edb3..9657a4f86 100644 --- a/gramps2/src/EditPerson.py +++ b/gramps2/src/EditPerson.py @@ -1099,6 +1099,8 @@ class EditPerson: self.notes_buffer.get_end_iter(),gtk.FALSE)) format = self.preform.get_active() idval = unicode(self.gid.get_text()) + if idval == "": + idval = None changed = 0 name = self.person.get_primary_name() diff --git a/gramps2/src/GrampsBSDDB.py b/gramps2/src/GrampsBSDDB.py index 9cc9ff511..b4e13aa3a 100644 --- a/gramps2/src/GrampsBSDDB.py +++ b/gramps2/src/GrampsBSDDB.py @@ -22,6 +22,7 @@ import os import time +import locale from RelLib import * from GrampsDbBase import * @@ -158,7 +159,7 @@ class GrampsBSDDB(GrampsDbBase): for name in names: a[unicode(name)] = 1 vals = a.keys() - vals.sort(accent.sort_by_accent) + vals.sort(locale.strcoll) return vals def get_person_event_type_list(self): diff --git a/gramps2/src/GrampsDbBase.py b/gramps2/src/GrampsDbBase.py index 0ae0b84cc..d89dae291 100644 --- a/gramps2/src/GrampsDbBase.py +++ b/gramps2/src/GrampsDbBase.py @@ -33,6 +33,7 @@ from this class. from RelLib import * import cPickle import time +import locale from gettext import gettext as _ #------------------------------------------------------------------------- @@ -968,21 +969,21 @@ class GrampsDbBase: def _sortbyname(self,f,s): n1 = self.person_map.get(str(f))[2].sname n2 = self.person_map.get(str(s))[2].sname - return cmp(n1,n2) + return locale.strcoll(n1,n2) def _sortbyplace(self,f,s): - return cmp(self.place_map.get(str(f))[2].upper(), - self.place_map.get(str(s))[2].upper()) + return locale.strcoll(self.place_map.get(str(f))[2].upper(), + self.place_map.get(str(s))[2].upper()) def _sortbysource(self,f,s): fp = self.source_map[str(f)][2].upper() sp = self.source_map[str(s)][2].upper() - return cmp(fp,sp) + return locale.strcoll(fp,sp) def _sortbymedia(self,f,s): fp = self.media_map[str(f)][4].upper() sp = self.media_map[str(s)][4].upper() - return cmp(fp,sp) + return locale.strcoll(fp,sp) def set_person_column_order(self,list): """ diff --git a/gramps2/src/Marriage.py b/gramps2/src/Marriage.py index 0e6a9cbeb..0509bba12 100644 --- a/gramps2/src/Marriage.py +++ b/gramps2/src/Marriage.py @@ -523,6 +523,8 @@ class Marriage: changed = 1 idval = unicode(self.gid.get_text()) + if idval == "": + idval = None if self.family.get_handle() != idval: changed = 1 diff --git a/gramps2/src/PeopleModel.py b/gramps2/src/PeopleModel.py index 2e8007b1e..74cd7b135 100644 --- a/gramps2/src/PeopleModel.py +++ b/gramps2/src/PeopleModel.py @@ -27,6 +27,7 @@ #------------------------------------------------------------------------- from gettext import gettext as _ import time +import locale #------------------------------------------------------------------------- # @@ -130,7 +131,7 @@ class PeopleModel(gtk.GenericTreeModel): def byname(self,f,s): n1 = self.db.person_map.get(str(f))[_NAME_COL].get_sort_name() n2 = self.db.person_map.get(str(s))[_NAME_COL].get_sort_name() - return cmp(n1,n2) + return locale.strcoll(n1,n2) def on_get_flags(self): '''returns the GtkTreeModelFlags for this particular type of model''' diff --git a/gramps2/src/RelLib.py b/gramps2/src/RelLib.py index 3e070f3d0..ee7d9f021 100644 --- a/gramps2/src/RelLib.py +++ b/gramps2/src/RelLib.py @@ -35,7 +35,6 @@ import os import os.path import time import types -import accent from gettext import gettext as _ #------------------------------------------------------------------------- @@ -1848,7 +1847,9 @@ class Name(DataObj): def build_sort_name(self): if self.surname: - self.sname = accent.deaccent("%-25s%-30s%s" % (self.surname.upper(),self.first_name.upper(),self.suffix.upper())) + self.sname = "%-25s%-30s%s" % (self.surname.upper(), + self.first_name.upper(), + self.suffix.upper()) else: self.sname = "@" diff --git a/gramps2/src/Sort.py b/gramps2/src/Sort.py index dc2a89e56..ed0ecc29d 100644 --- a/gramps2/src/Sort.py +++ b/gramps2/src/Sort.py @@ -27,6 +27,8 @@ and directly use class members. For this reason, care needs to be taken to make sure these remain in sync with the rest of the design. """ +import locale + #------------------------------------------------------------------------- # # Imported Modules @@ -92,11 +94,11 @@ class Sort: ffn = name1.get_first_name().upper() sfn = name2.get_first_name().upper() if ffn == sfn: - return cmp(name1.get_suffix().upper(), name2.get_suffix().upper()) + return locale.strcoll(name1.get_suffix().upper(), name2.get_suffix().upper()) else: - return cmp(ffn, sfn) + return locale.strcoll(ffn, sfn) else: - return cmp(fsn, ssn) + return locale.strcoll(fsn, ssn) def by_birthdate(self,first_id,second_id): """Sort routine for comparing two people by birth dates. If the birth dates