Don't traceback when buddies have bad colors

This commit is contained in:
Dan Williams 2006-08-25 12:11:25 -04:00
parent 8ac55c287e
commit ba3d5fce8c
2 changed files with 15 additions and 3 deletions

View File

@ -2,6 +2,7 @@ import gobject
from sugar.presence import PresenceService from sugar.presence import PresenceService
from sugar.canvas.IconColor import IconColor from sugar.canvas.IconColor import IconColor
import logging
class Friend: class Friend:
def __init__(self, buddy): def __init__(self, buddy):
@ -11,8 +12,13 @@ class Friend:
return self._buddy.get_name() return self._buddy.get_name()
def get_color(self): def get_color(self):
color = self._buddy.get_color() color = self._buddy.get_color()
return IconColor(color) try:
icolor = IconColor(color)
except RuntimeError:
icolor = IconColor()
logging.info("Buddy %s doesn't have an allowed color; using a random color instead." % self.get_name())
return icolor
class FriendsModel(gobject.GObject): class FriendsModel(gobject.GObject):
__gsignals__ = { __gsignals__ = {

View File

@ -109,7 +109,13 @@ class IconColor:
if fill_color == None: if fill_color == None:
n = int(random.random() * (len(self.__colors_dict) - 1)) n = int(random.random() * (len(self.__colors_dict) - 1))
fill_color = self.__colors_dict.keys()[n] fill_color = self.__colors_dict.keys()[n]
else:
if fill_color[0] == '#':
fill_color = fill_color.upper()
else:
fill_color = fill_color.lower()
if not self.__colors_dict.has_key(fill_color):
raise RuntimeError("Specified fill color %s is not allowed." % fill_color)
self._fill_color = fill_color self._fill_color = fill_color
def get_stroke_color(self): def get_stroke_color(self):