From 9a5d3b7dc5e11552b3bb7c157d600fcd0942461b Mon Sep 17 00:00:00 2001
From: Aleksey Lim <alsroot@member.fsf.org>
Date: Wed, 16 Sep 2009 18:41:33 +0000
Subject: favoritesview.py: icon-color KeyError #976
---
src/jarabe/desktop/favoritesview.py | 30 +++++++++++++++---------------
src/jarabe/journal/expandedentry.py | 10 ++++------
src/jarabe/journal/listmodel.py | 5 +----
src/jarabe/journal/misc.py | 11 +++++++++--
src/jarabe/journal/palettes.py | 9 +--------
5 files changed, 30 insertions(+), 35 deletions(-)
diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py
index 5680d3e..73ab327 100644
a
|
b
|
from jarabe.view import launcher |
42 | 42 | from jarabe.model.buddy import BuddyModel |
43 | 43 | from jarabe.model import shell |
44 | 44 | from jarabe.model import bundleregistry |
45 | | from jarabe import journal |
| 45 | from jarabe.journal import misc |
46 | 46 | |
47 | 47 | from jarabe.desktop import schoolserver |
48 | 48 | from jarabe.desktop.schoolserver import RegisterError |
… |
… |
class ActivityIcon(CanvasIcon): |
458 | 458 | def _update(self): |
459 | 459 | self.palette = None |
460 | 460 | if not self._resume_mode or not self._journal_entries: |
461 | | self.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg() |
462 | | self.props.fill_color = style.COLOR_TRANSPARENT.get_svg() |
| 461 | xo_color = XoColor('%s,%s' % (style.COLOR_BUTTON_GREY.get_svg(), |
| 462 | style.COLOR_TRANSPARENT.get_svg())) |
463 | 463 | else: |
464 | | first_entry = self._journal_entries[0] |
465 | | self.props.xo_color = XoColor(first_entry['icon-color']) |
| 464 | xo_color = misc.get_icon_color(self._journal_entries[0]) |
| 465 | self.props.xo_color = xo_color |
466 | 466 | |
467 | 467 | def create_palette(self): |
468 | 468 | palette = FavoritePalette(self._activity_info, self._journal_entries) |
… |
… |
class ActivityIcon(CanvasIcon): |
528 | 528 | |
529 | 529 | launcher.add_launcher(entry['activity_id'], |
530 | 530 | self._activity_info.get_icon(), |
531 | | XoColor(entry.get('icon-color', ''))) |
532 | | journal.misc.resume(entry, self._activity_info.get_bundle_id()) |
| 531 | misc.get_icon_color(entry)) |
| 532 | misc.resume(entry, self._activity_info.get_bundle_id()) |
533 | 533 | else: |
534 | 534 | client = gconf.client_get_default() |
535 | 535 | xo_color = XoColor(client.get_string('/desktop/sugar/user/color')) |
… |
… |
class FavoritePalette(ActivityPalette): |
569 | 569 | def __init__(self, activity_info, journal_entries): |
570 | 570 | ActivityPalette.__init__(self, activity_info) |
571 | 571 | |
572 | | if journal_entries and journal_entries[0].get('icon-color', ''): |
573 | | color = XoColor(journal_entries[0]['icon-color']) |
| 572 | if not journal_entries: |
| 573 | xo_color = XoColor('%s,%s' % (style.COLOR_BUTTON_GREY.get_svg(), |
| 574 | style.COLOR_TRANSPARENT.get_svg())) |
574 | 575 | else: |
575 | | color = XoColor('%s,%s' % (style.COLOR_BUTTON_GREY.get_svg(), |
576 | | style.COLOR_WHITE.get_svg())) |
| 576 | xo_color = misc.get_icon_color(journal_entries[0]) |
577 | 577 | |
578 | 578 | self.props.icon = Icon(file=activity_info.get_icon(), |
579 | | xo_color=color, |
| 579 | xo_color=xo_color, |
580 | 580 | icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) |
581 | 581 | |
582 | 582 | if journal_entries: |
… |
… |
class FavoritePalette(ActivityPalette): |
584 | 584 | |
585 | 585 | menu_items = [] |
586 | 586 | for entry in journal_entries: |
587 | | icon_file_name = journal.misc.get_icon_name(entry) |
588 | | color = XoColor(entry.get('icon-color', None)) |
| 587 | icon_file_name = misc.get_icon_name(entry) |
| 588 | color = misc.get_icon_color(entry) |
589 | 589 | |
590 | 590 | menu_item = MenuItem(text_label=entry['title'], |
591 | 591 | file_name=icon_file_name, |
… |
… |
class FavoritePalette(ActivityPalette): |
604 | 604 | |
605 | 605 | def __resume_entry_cb(self, menu_item, entry): |
606 | 606 | if entry is not None: |
607 | | journal.misc.resume(entry, entry['activity']) |
| 607 | misc.resume(entry, entry['activity']) |
608 | 608 | |
609 | 609 | class CurrentActivityIcon(CanvasIcon, hippo.CanvasItem): |
610 | 610 | def __init__(self): |
diff --git a/src/jarabe/journal/expandedentry.py b/src/jarabe/journal/expandedentry.py
index fdf3478..94d90ed 100644
a
|
b
|
class ExpandedEntry(hippo.CanvasBox): |
180 | 180 | self._icon_button_release_event_cb) |
181 | 181 | |
182 | 182 | if misc.is_activity_bundle(self._metadata): |
183 | | icon.props.fill_color = style.COLOR_TRANSPARENT.get_svg() |
184 | | icon.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg() |
| 183 | xo_color = XoColor('%s,%s' % (style.COLOR_BUTTON_GREY.get_svg(), |
| 184 | style.COLOR_TRANSPARENT.get_svg())) |
185 | 185 | else: |
186 | | if self._metadata.has_key('icon-color') and \ |
187 | | self._metadata['icon-color']: |
188 | | icon.props.xo_color = XoColor( \ |
189 | | self._metadata['icon-color']) |
| 186 | xo_color = misc.get_icon_color(self._metadata) |
| 187 | icon.props.xo_color = xo_color |
190 | 188 | |
191 | 189 | icon.set_palette(ObjectPalette(self._metadata)) |
192 | 190 | |
diff --git a/src/jarabe/journal/listmodel.py b/src/jarabe/journal/listmodel.py
index 917fbb1..32df853 100644
a
|
b
|
class ListModel(gtk.GenericTreeModel, gtk.TreeDragSource): |
132 | 132 | xo_color = XoColor('%s,%s' % (style.COLOR_BUTTON_GREY.get_svg(), |
133 | 133 | style.COLOR_TRANSPARENT.get_svg())) |
134 | 134 | else: |
135 | | if metadata.get('icon-color', ''): |
136 | | xo_color = XoColor(metadata['icon-color']) |
137 | | else: |
138 | | xo_color = None |
| 135 | xo_color = misc.get_icon_color(metadata) |
139 | 136 | self._cached_row.append(xo_color) |
140 | 137 | |
141 | 138 | title = gobject.markup_escape_text(metadata.get('title', None)) |
diff --git a/src/jarabe/journal/misc.py b/src/jarabe/journal/misc.py
index 5ea1d24..197fd48 100644
a
|
b
|
|
17 | 17 | import logging |
18 | 18 | import time |
19 | 19 | import os |
20 | | from gettext import gettext as _ |
21 | | |
| 20 | import gconf |
22 | 21 | import gio |
| 22 | from gettext import gettext as _ |
23 | 23 | |
24 | 24 | from sugar.activity import activityfactory |
25 | 25 | from sugar.activity.activityhandle import ActivityHandle |
26 | 26 | from sugar.graphics.icon import get_icon_file_name |
| 27 | from sugar.graphics.xocolor import XoColor |
27 | 28 | from sugar import mime |
28 | 29 | from sugar.bundle.activitybundle import ActivityBundle |
29 | 30 | from sugar.bundle.contentbundle import ContentBundle |
… |
… |
def is_bundle(metadata): |
229 | 230 | return is_activity_bundle(metadata) or is_content_bundle(metadata) or \ |
230 | 231 | is_journal_bundle(metadata) |
231 | 232 | |
| 233 | def get_icon_color(metadata): |
| 234 | if metadata is None or not 'icon-color' in metadata: |
| 235 | client = gconf.client_get_default() |
| 236 | return XoColor(client.get_string('/desktop/sugar/user/color')) |
| 237 | else: |
| 238 | return XoColor(metadata['icon-color']) |
diff --git a/src/jarabe/journal/palettes.py b/src/jarabe/journal/palettes.py
index cd4985a..e0dfbf4 100644
a
|
b
|
class ObjectPalette(Palette): |
51 | 51 | |
52 | 52 | activity_icon = Icon(icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR) |
53 | 53 | activity_icon.props.file = misc.get_icon_name(metadata) |
54 | | if metadata.has_key('icon-color') and \ |
55 | | metadata['icon-color']: |
56 | | activity_icon.props.xo_color = \ |
57 | | XoColor(metadata['icon-color']) |
58 | | else: |
59 | | activity_icon.props.xo_color = \ |
60 | | XoColor('%s,%s' % (style.COLOR_BUTTON_GREY.get_svg(), |
61 | | style.COLOR_TRANSPARENT.get_svg())) |
| 54 | activity_icon.props.xo_color = misc.get_icon_color(metadata) |
62 | 55 | |
63 | 56 | if metadata.has_key('title'): |
64 | 57 | title = gobject.markup_escape_text(metadata['title']) |