Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-09-05 11:55:18 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-09-05 11:55:18 (GMT)
commit3723ccead4d70bc6df69b0265efd58a9b872a494 (patch)
tree2745af8a5a8b2e708841b53bfe7dbb192bfb79ab /sugar
parent8b099b00ba6fc952d497151bcb808df12e743240 (diff)
Implement TrayIcon palette drawing.
Diffstat (limited to 'sugar')
-rw-r--r--sugar/graphics/tray.py38
1 files changed, 31 insertions, 7 deletions
diff --git a/sugar/graphics/tray.py b/sugar/graphics/tray.py
index e865db6..af2e7eb 100644
--- a/sugar/graphics/tray.py
+++ b/sugar/graphics/tray.py
@@ -193,23 +193,47 @@ class TrayButton(ToolButton):
def __init__(self, **kwargs):
ToolButton.__init__(self, **kwargs)
-class TrayIcon(gtk.ToolItem):
+class _IconWidget(gtk.EventBox):
+ __gtype_name__ = "SugarTrayIconWidget"
+
def __init__(self, icon_name=None, xo_color=None):
- gtk.ToolItem.__init__(self)
+ gtk.EventBox.__init__(self)
+
+ self._palette = None
- event_box = gtk.EventBox()
+ self.set_app_paintable(True)
icon = Icon(icon_name=icon_name, xo_color=xo_color,
icon_size=gtk.ICON_SIZE_LARGE_TOOLBAR)
- event_box.add(icon)
+ self.add(icon)
icon.show()
- self.add(event_box)
- event_box.show()
+ def do_expose_event(self, event):
+ if self._palette and self._palette.is_up():
+ invoker = self._palette.props.invoker
+ invoker.draw_rectangle(event, self._palette)
+
+ gtk.EventBox.do_expose_event(self, event)
def set_palette(self, palette):
self._palette = palette
- self._palette.props.invoker = ToolInvoker(self.child)
+ self._palette.props.invoker = ToolInvoker(self)
+
+class TrayIcon(gtk.ToolItem):
+ __gtype_name__ = "SugarTrayIcon"
+
+ def __init__(self, icon_name=None, xo_color=None):
+ gtk.ToolItem.__init__(self)
+
+ self._icon_widget = _IconWidget(icon_name, xo_color)
+ self.add(self._icon_widget)
+ self._icon_widget.show()
+
+ self.set_size_request(style.GRID_CELL_SIZE, style.GRID_CELL_SIZE)
+
+ def set_palette(self, palette):
+ self._icon_widget.set_palette(palette)
def set_tooltip(self, text):
self.set_palette(Palette(text))
+