Improve XOColor fallback logic

We was failing if the value in gconf was None. Also parsing
the string once just to see if it's valid was pretty dumb.
This commit is contained in:
Daniel Narvaez 2013-05-02 18:52:59 +02:00
parent 79fa03e846
commit 6cbc3d1a48

View File

@ -225,29 +225,23 @@ def _parse_string(color_string):
return None
def is_valid(color_string):
return (_parse_string(color_string) != None)
class XoColor:
def __init__(self, color_string=None):
if color_string == None:
randomize = True
elif not is_valid(color_string):
logging.debug('Color string is not valid: %s, '
'fallback to default', color_string)
parsed_color = None
if color_string is None:
client = GConf.Client.get_default()
color_string = client.get_string('/desktop/sugar/user/color')
randomize = is_valid(color_string)
else:
randomize = False
if randomize:
if color_string is not None:
parsed_color = _parse_string(color_string)
if parsed_color is None:
n = int(random.random() * (len(colors) - 1))
[self.stroke, self.fill] = colors[n]
else:
[self.stroke, self.fill] = _parse_string(color_string)
[self.stroke, self.fill] = parsed_color
def __cmp__(self, other):
if isinstance(other, XoColor):