Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2008-07-16 11:21:17 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2008-07-21 19:34:19 (GMT)
commitd63f9b17da592d8d9f472562a6f4940502cfeed1 (patch)
treee99afc82be3ea9b769f7e1e848d11758e2b0745d
parente79e8b6261de5fa4ccda8dd6b8d570191f006bf4 (diff)
#7152 Build palettes lazily
-rw-r--r--collapsedentry.py39
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)