diff options
Diffstat (limited to 'shell/view/clipboardmenu.py')
-rw-r--r-- | shell/view/clipboardmenu.py | 55 |
1 files changed, 45 insertions, 10 deletions
diff --git a/shell/view/clipboardmenu.py b/shell/view/clipboardmenu.py index 031a49a..178edef 100644 --- a/shell/view/clipboardmenu.py +++ b/shell/view/clipboardmenu.py @@ -1,3 +1,4 @@ +import logging import gtk import gobject import hippo @@ -10,16 +11,28 @@ from sugar.graphics import style class ClipboardMenuItem(ClipboardBubble): def __init__(self, percent = 0, stylesheet="clipboard.Bubble"): - ClipboardBubble.__init__(self, percent = percent) + self._text_item = None + ClipboardBubble.__init__(self, percent=percent) style.apply_stylesheet(self, stylesheet) + + self._text_item = hippo.CanvasText(text=str(percent) + ' %') + style.apply_stylesheet(self._text_item, 'clipboard.MenuItem.Title') + self.append(self._text_item) + + def do_set_property(self, pspec, value): + if pspec.name == 'percent': + if self._text_item: + self._text_item.set_property('text', str(value) + ' %') + ClipboardBubble.do_set_property(self, pspec, value) + class ClipboardMenu(Menu): ACTION_DELETE = 0 - ACTION_SHARE = 1 + ACTION_OPEN = 1 ACTION_STOP_DOWNLOAD = 2 - def __init__(self, name, percent, preview): + def __init__(self, name, percent, preview, activity): Menu.__init__(self, name) if percent < 100: @@ -29,21 +42,39 @@ class ClipboardMenu(Menu): self._progress_bar = None self._remove_icon = None + self._open_icon = None self._stop_icon = None self.add_item(preview, wrap=True) - self._update_icons(percent) + self._update_icons(percent, activity) - def _update_icons(self, percent): - if percent == 100: + def _update_icons(self, percent, activity): + + if percent == 100 and activity: if not self._remove_icon: self._remove_icon = CanvasIcon(icon_name='stock-remove') self.add_action(self._remove_icon, ClipboardMenu.ACTION_DELETE) - + + if not self._open_icon: + self._open_icon = CanvasIcon(icon_name='stock-keep') + self.add_action(self._open_icon, ClipboardMenu.ACTION_OPEN) + if self._stop_icon: self.remove_action(self._stop_icon) self._stop_icon = None + elif percent == 100 and not activity: + if not self._remove_icon: + self._remove_icon = CanvasIcon(icon_name='stock-remove') + self.add_action(self._remove_icon, ClipboardMenu.ACTION_DELETE) + + if self._open_icon: + self.remove_action(self._open_icon) + self._open_icon = None + + if self._stop_icon: + self.remove_action(self._stop_icon) + self._stop_icon = None else: if not self._stop_icon: self._stop_icon = CanvasIcon(icon_name='stock-close') @@ -52,9 +83,13 @@ class ClipboardMenu(Menu): if self._remove_icon: self.remove_action(self._remove_icon) self._remove_icon = None - - def set_state(self, name, percent, preview): + + if self._open_icon: + self.remove_action(self._open_icon) + self._open_icon = None + + def set_state(self, name, percent, preview, activity): self.set_title(name) if self._progress_bar: self._progress_bar.set_property('percent', percent) - self._update_icons(percent) + self._update_icons(percent, activity) |