Difference between revisions of "Features/Enhanced color selector/Patch-xocolor"
Jump to navigation
Jump to search
Line 1: | Line 1: | ||
<pre> | <pre> | ||
− | -- | + | diff --git a/src/sugar/graphics/xocolor.py b/src/sugar/graphics/xocolor.py |
− | +++ 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 | randomize = False | ||
if randomize: | 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): | def __cmp__(self, other): | ||
if isinstance(other, XoColor): | if isinstance(other, XoColor): | ||
− | @@ - | + | @@ -261,40 +262,32 @@ class XoColor: |
− | def | + | |
− | 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) | ||
+ | + 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): | def to_string(self): | ||
return '%s,%s' % (self.stroke, self.fill) | 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 | + | + 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__": | if __name__ == "__main__": | ||
− | |||
</pre> | </pre> |
Latest revision as of 17:46, 21 December 2009
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__":