diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-10-02 14:37:30 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-10-02 14:37:30 (GMT) |
commit | a951b36347bfb5350c4c6031ba1126c25b94f44d (patch) | |
tree | 63db8d067f78bdfe53d69b3eb472cbdffeba08ad /sugar/graphics/menu.py | |
parent | 4958c43b33f3a02982b58f612f2ba46b069d12bf (diff) |
Reimplement menu using hippo and hook it up for the
activity menu.
Diffstat (limited to 'sugar/graphics/menu.py')
-rw-r--r-- | sugar/graphics/menu.py | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/sugar/graphics/menu.py b/sugar/graphics/menu.py new file mode 100644 index 0000000..9a85bcf --- /dev/null +++ b/sugar/graphics/menu.py @@ -0,0 +1,50 @@ +import gtk +import hippo +import gobject + +from sugar.graphics.canvasicon import CanvasIcon + +class Menu(gtk.Window): + __gsignals__ = { + 'action': (gobject.SIGNAL_RUN_FIRST, + gobject.TYPE_NONE, ([int])), + } + + def __init__(self, title, content_box=None): + gtk.Window.__init__(self, gtk.WINDOW_POPUP) + + canvas = hippo.Canvas() + self.add(canvas) + canvas.show() + + self._root = hippo.CanvasBox(background_color=0x000000FF, + spacing=6) + canvas.set_root(self._root) + + text = hippo.CanvasText(text=title, color=0xFFFFFFFF) + self._root.append(text) + + if content_box: + separator = self._create_separator() + self._root.append(separator) + self._root.append(content_box) + + separator = self._create_separator() + self._root.append(separator) + + self._action_box = hippo.CanvasBox( + orientation=hippo.ORIENTATION_HORIZONTAL) + self._root.append(self._action_box) + + def _create_separator(self): + separator = hippo.CanvasBox(background_color=0xFFFFFFFF, + border_left=6, border_right=6, + box_height=2) + return separator + + def add_action(self, icon, action_id): + icon.connect('activated', self._action_clicked_cb, action_id) + self._action_box.append(icon) + + def _action_clicked_cb(self, icon, action): + self.emit('action', action) |