bug report #2162: handle surnames that have spaces within them; merged from gramps30

svn: r10770
This commit is contained in:
Stéphane Charette 2008-05-31 07:16:13 +00:00
parent b57eafff1a
commit e57e3fa7c7
2 changed files with 25 additions and 4 deletions

View File

@ -959,7 +959,17 @@ class GuiSurnameColourOption(gtk.HBox):
self.pack_end(self.vbbox, expand=False) self.pack_end(self.vbbox, expand=False)
# populate the surname/colour treeview # populate the surname/colour treeview
tmp = self.__option.get_value().split() #
# For versions prior to 3.0.2, the fields were delimited with
# whitespace. However, this causes problems when the surname
# also has a space within it. When populating the control,
# support both the new and old format -- look for the \xb0
# delimiter, and if it isn't there, assume this is the old-
# style space-delimited format. (Bug #2162.)
if (self.__option.get_value().find(u'\xb0') >= 0):
tmp = self.__option.get_value().split(u'\xb0')
else:
tmp = self.__option.get_value().split(' ')
while len(tmp) > 1: while len(tmp) > 1:
surname = tmp.pop(0) surname = tmp.pop(0)
colour = tmp.pop(0) colour = tmp.pop(0)
@ -977,10 +987,16 @@ class GuiSurnameColourOption(gtk.HBox):
surname = self.__model.get_value(i, 0) surname = self.__model.get_value(i, 0)
#surname = surname.encode('iso-8859-1','xmlcharrefreplace') #surname = surname.encode('iso-8859-1','xmlcharrefreplace')
colour = self.__model.get_value(i, 1) colour = self.__model.get_value(i, 1)
# tried to use a dictionary, and tried to save it as a tuple, # Tried to use a dictionary, and tried to save it as a tuple,
# but coulnd't get this to work right -- this is lame, but now # but coulnd't get this to work right -- this is lame, but now
# the surnames and colours are saved as a plain text string # the surnames and colours are saved as a plain text string
surname_colours += surname + ' ' + colour + ' ' #
# Hmmm...putting whitespace between the fields causes
# problems when the surname has whitespace -- for example,
# with surnames like "Del Monte". So now we insert a non-
# whitespace character which is unlikely to appear in
# a surname. (See bug report #2162.)
surname_colours += surname + u'\xb0' + colour + u'\xb0'
i = self.__model.iter_next(i) i = self.__model.iter_next(i)
self.__option.set_value( surname_colours ) self.__option.set_value( surname_colours )

View File

@ -359,7 +359,12 @@ class FamilyLinesReport(Report):
# convert the 'surnamecolors' string to a dictionary of names and colors # convert the 'surnamecolors' string to a dictionary of names and colors
self._surnamecolors = {} self._surnamecolors = {}
_opt = menu.get_option_by_name('surnamecolors') _opt = menu.get_option_by_name('surnamecolors')
tmp = _opt.get_value().split() tmp = _opt.get_value()
if (tmp.find(u'\xb0') >= 0):
tmp = tmp.split(u'\xb0') # new style delimiter (see bug report #2162)
else:
tmp = tmp.split(' ') # old style delimiter
while len(tmp) > 1: while len(tmp) > 1:
surname = tmp.pop(0).encode('iso-8859-1', 'xmlcharrefreplace') surname = tmp.pop(0).encode('iso-8859-1', 'xmlcharrefreplace')
colour = tmp.pop(0) colour = tmp.pop(0)