Fix setting of languages that have commas in their names broken

This commit is contained in:
Kovid Goyal 2011-08-19 18:25:42 -06:00
parent d07398ef76
commit abe3848208

View File

@ -17,6 +17,9 @@ class LanguagesEdit(MultiCompleteComboBox):
MultiCompleteComboBox.__init__(self, parent) MultiCompleteComboBox.__init__(self, parent)
self._lang_map = lang_map() self._lang_map = lang_map()
self.names_with_commas = [x for x in self._lang_map.itervalues() if ',' in x]
self.comma_map = {k:k.replace(',', '|') for k in self.names_with_commas}
self.comma_rmap = {v:k for k, v in self.comma_map.iteritems()}
self._rmap = {v:k for k,v in self._lang_map.iteritems()} self._rmap = {v:k for k,v in self._lang_map.iteritems()}
all_items = sorted(self._lang_map.itervalues(), all_items = sorted(self._lang_map.itervalues(),
@ -25,12 +28,19 @@ class LanguagesEdit(MultiCompleteComboBox):
for item in all_items: for item in all_items:
self.addItem(item) self.addItem(item)
@property
def vals(self):
raw = unicode(self.lineEdit().text())
for k, v in self.comma_map.iteritems():
raw = raw.replace(k, v)
parts = [x.strip() for x in raw.split(',')]
return [self.comma_rmap.get(x, x) for x in parts]
@dynamic_property @dynamic_property
def lang_codes(self): def lang_codes(self):
def fget(self): def fget(self):
vals = [x.strip() for x in vals = self.vals
unicode(self.lineEdit().text()).split(',')]
ans = [] ans = []
for name in vals: for name in vals:
if name: if name:
@ -50,8 +60,7 @@ class LanguagesEdit(MultiCompleteComboBox):
return property(fget=fget, fset=fset) return property(fget=fget, fset=fset)
def validate(self): def validate(self):
vals = [x.strip() for x in vals = self.vals
unicode(self.lineEdit().text()).split(',')]
bad = [] bad = []
for name in vals: for name in vals:
if name: if name: