diff options
author | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-11-11 22:51:16 (GMT) |
---|---|---|
committer | Marco Pesenti Gritti <marco@localhost.localdomain> | 2006-11-11 22:51:16 (GMT) |
commit | d3e99e76ef12ee0037e54d268cf2727da6be9f50 (patch) | |
tree | be75e93faf8df466677dd4c935819deef4ff4561 /sugar/graphics/menu.py | |
parent | 053dd74e0b50ca528e66d29364d34cf11f5a3740 (diff) |
Add a shutdown button
Diffstat (limited to 'sugar/graphics/menu.py')
-rw-r--r-- | sugar/graphics/menu.py | 37 |
1 files changed, 33 insertions, 4 deletions
diff --git a/sugar/graphics/menu.py b/sugar/graphics/menu.py index 5404cf5..dfc0e47 100644 --- a/sugar/graphics/menu.py +++ b/sugar/graphics/menu.py @@ -28,7 +28,7 @@ class Menu(gtk.Window): gobject.TYPE_NONE, ([int])), } - def __init__(self, title, content_box=None): + def __init__(self, title=None, content_box=None): gtk.Window.__init__(self, gtk.WINDOW_POPUP) canvas = hippo.Canvas() @@ -39,9 +39,12 @@ class Menu(gtk.Window): style.apply_stylesheet(self._root, 'menu') canvas.set_root(self._root) - text = hippo.CanvasText(text=title) - style.apply_stylesheet(text, 'menu.Title') - self._root.append(text) + if title: + self._title_item = hippo.CanvasText(text=title) + style.apply_stylesheet(self._title_item, 'menu.Title') + self._root.append(self._title_item) + else: + self._title_item = None if content_box: separator = self._create_separator() @@ -49,12 +52,22 @@ class Menu(gtk.Window): self._root.append(content_box) self._action_box = None + self._item_box = None def _create_separator(self): separator = hippo.CanvasBox() style.apply_stylesheet(separator, 'menu.Separator') return separator + def _create_item_box(self): + if self._title_item: + separator = self._create_separator() + self._root.append(separator) + + self._item_box = hippo.CanvasBox( + orientation=hippo.ORIENTATION_VERTICAL) + self._root.append(self._item_box) + def _create_action_box(self): separator = self._create_separator() self._root.append(separator) @@ -63,6 +76,19 @@ class Menu(gtk.Window): orientation=hippo.ORIENTATION_HORIZONTAL) self._root.append(self._action_box) + def add_item(self, label, action_id): + if not self._item_box: + self._create_item_box() + + text = hippo.CanvasText(text=label) + style.apply_stylesheet(text, 'menu.Item') + + # FIXME need a way to make hippo items activable in python + text.connect('button-press-event', self._item_clicked_cb, action_id) + #text.connect('activated', self._action_clicked_cb, action_id) + + self._item_box.append(text) + def add_action(self, icon, action_id): if not self._action_box: self._create_action_box() @@ -71,5 +97,8 @@ class Menu(gtk.Window): icon.connect('activated', self._action_clicked_cb, action_id) self._action_box.append(icon) + def _item_clicked_cb(self, icon, event, action): + self.emit('action', action) + def _action_clicked_cb(self, icon, action): self.emit('action', action) |