Features/Enhanced color selector/Patch-xocolor
--- src/sugar/graphics/xocolor.py 2009-11-19 14:54:22.000000000 -0500 +++ src/sugar/graphics/xocolor.py 2009-11-19 15:00:58.000000000 -0500 @@ -1,4 +1,5 @@
# Copyright (C) 2006-2007 Red Hat, Inc.
+# Copyright (C) 2008-2009 Sugar Labs
# # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public
@@ -240,10 +241,11 @@ class XoColor:
randomize = False if randomize:
- n = int(random.random() * (len(colors) - 1)) - [self.stroke, self.fill] = colors[n] + [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()
def __cmp__(self, other): if isinstance(other, XoColor):
@@ -257,9 +259,43 @@ class XoColor:
def get_fill_color(self): return self.fill
+ 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) + + 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) + + 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) +
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 + return 0
if __name__ == "__main__": import sys