diff options
author | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2008-07-16 11:21:17 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2008-07-21 19:34:19 (GMT) |
commit | d63f9b17da592d8d9f472562a6f4940502cfeed1 (patch) | |
tree | e99afc82be3ea9b769f7e1e848d11758e2b0745d | |
parent | e79e8b6261de5fa4ccda8dd6b8d570191f006bf4 (diff) |
#7152 Build palettes lazily
-rw-r--r-- | collapsedentry.py | 39 |
1 files changed, 32 insertions, 7 deletions
diff --git a/collapsedentry.py b/collapsedentry.py index 51a8835..6bbcbbe 100644 --- a/collapsedentry.py +++ b/collapsedentry.py @@ -32,6 +32,14 @@ from keepicon import KeepIcon from palettes import ObjectPalette, BuddyPalette import misc +class BuddyIcon(CanvasIcon): + def __init__(self, buddy, **kwargs): + CanvasIcon.__init__(self, **kwargs) + self._buddy = buddy + + def create_palette(self): + return BuddyPalette(self._buddy) + class BuddyList(hippo.CanvasBox): def __init__(self, model, width): hippo.CanvasBox.__init__(self, @@ -46,12 +54,29 @@ class BuddyList(hippo.CanvasBox): for buddy in model[0:3]: nick_, color = buddy - icon = CanvasIcon(icon_name='computer-xo', - xo_color=XoColor(color), - cache=True) - icon.set_palette(BuddyPalette(buddy)) + icon = BuddyIcon(buddy, + icon_name='computer-xo', + xo_color=XoColor(color), + cache=True) self.append(icon) +class EntryIcon(CanvasIcon): + def __init__(self, **kwargs): + CanvasIcon.__init__(self, **kwargs) + self._jobject = None + + def set_jobject(self, jobject): + self._jobject = jobject + self.props.file_name = misc.get_icon_name(jobject) + + def create_palette(self): + if self.show_palette: + return ObjectPalette(self._jobject) + else: + return None + + show_palette = gobject.property(type=bool, default=False) + class BaseCollapsedEntry(hippo.CanvasBox): __gtype_name__ = 'BaseCollapsedEntry' @@ -111,7 +136,7 @@ class BaseCollapsedEntry(hippo.CanvasBox): return date def _create_icon(self): - icon = CanvasIcon(size=style.STANDARD_ICON_SIZE, cache=True) + icon = EntryIcon(size=style.STANDARD_ICON_SIZE, cache=True) return icon def _create_title(self): @@ -207,7 +232,7 @@ class BaseCollapsedEntry(hippo.CanvasBox): self.date.props.text = misc.get_date(jobject) - self.icon.props.file_name = misc.get_icon_name(jobject) + self.icon.set_jobject(jobject) if jobject.is_activity_bundle(): self.icon.props.fill_color = style.COLOR_TRANSPARENT.get_svg() self.icon.props.stroke_color = style.COLOR_BUTTON_GREY.get_svg() @@ -254,6 +279,7 @@ class CollapsedEntry(BaseCollapsedEntry): def __init__(self): BaseCollapsedEntry.__init__(self) + self.icon.props.show_palette = True self.icon.connect('button-release-event', self.__icon_button_release_event_cb) @@ -295,7 +321,6 @@ class CollapsedEntry(BaseCollapsedEntry): def set_jobject(self, jobject): BaseCollapsedEntry.set_jobject(self, jobject) - self.icon.palette = ObjectPalette(jobject) self._title_entry.props.text = self.title.props.text jobject = property(BaseCollapsedEntry.get_jobject, set_jobject) |