diff --git a/src/sugar/graphics/xocolor.py b/src/sugar/graphics/xocolor.py
index 75b5400..57b5712 100644
--- a/src/sugar/graphics/xocolor.py
+++ b/src/sugar/graphics/xocolor.py
@@ -221,10 +221,12 @@ def _parse_string(color_string):
else:
return None
-
def is_valid(color_string):
return (_parse_string(color_string) != None)
+def get_random_color():
+ color_index = int(random.random() * (len(colors) - 1))
+ return "%s,%s" % (colors[color_index][0], colors[color_index][1])
class XoColor:
@@ -232,8 +234,9 @@ class XoColor:
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)
+ logging.error(
+ 'Color string is not valid: %s; fallback to default',
+ color_string)
client = gconf.client_get_default()
color_string = client.get_string('/desktop/sugar/user/color')
randomize = False
@@ -241,11 +244,9 @@ class XoColor:
randomize = False
if randomize:
- [self.strole, self.fill] = self.get_random_color()
- else:
- [self.stroke, self.fill] = _parse_string(color_string)
- # save an index to our color in the list
- self.n = self.find_index()
+ color_string = get_random_color()
+ [self.stroke, self.fill] = _parse_string(color_string)
+ self._current_color_index = self._find_index()
def __cmp__(self, other):
if isinstance(other, XoColor):
@@ -261,40 +262,32 @@ class XoColor:
def set_color(self, color_string):
if color_string == None or not is_valid(color_string):
- logging.debug('Color string is not valid: %s, '
- 'fallback to default', color_string)
- [self.stroke,self.fill] = _parse_string(color_string)
- self.n = self.find_index()
-
- def get_random_color(self):
- my_n = int(random.random() * (len(colors) - 1))
- [my_stroke, my_fill] = colors[my_n]
- return "%s,%s" % (my_stroke, my_fill)
+ logging.error(
+ 'Color string is not valid: %s; fallback to default',
+ color_string)
+ else:
+ [self.stroke, self.fill] = _parse_string(color_string)
+ self._current_color_index = self._find_index()
def get_next_color(self):
- my_n = self.n
- my_n += 1
- if my_n == len(colors):
- my_n = 0
- [my_stroke, my_fill] = colors[my_n]
- return "%s,%s" % (my_stroke, my_fill)
+ next_index = self._current_color_index + 1
+ if next_index == len(colors):
+ next_index = 0
+ return "%s,%s" % (colors[next_index][0], colors[next_index][1])
def get_prev_color(self):
- my_n = self.n
- my_n -= 1
- if my_n < 0:
- my_n = len(colors)-1
- [my_stroke, my_fill] = colors[my_n]
- return "%s,%s" % (my_stroke, my_fill)
+ prev_index = self._current_color_index - 1
+ if prev_index < 0:
+ prev_index = len(colors)-1
+ return "%s,%s" % (colors[prev_index][0], colors[prev_index][1])
def to_string(self):
return '%s,%s' % (self.stroke, self.fill)
- def find_index(self):
- for c in range(0,len(colors)):
- if colors[c] == [self.stroke, self.fill]:
- return c
- # if the color is not found, then return 0
+ def _find_index(self):
+ for color in range(0,len(colors)):
+ if colors[color] == [self.stroke, self.fill]:
+ return color
return 0
if __name__ == "__main__":