2006-11-15 13:56:19 +01:00
|
|
|
import gtk
|
|
|
|
import gobject
|
|
|
|
import hippo
|
|
|
|
|
|
|
|
from sugar.graphics.menu import Menu
|
|
|
|
from sugar.graphics.canvasicon import CanvasIcon
|
|
|
|
from sugar.graphics.ClipboardBubble import ClipboardBubble
|
|
|
|
from sugar.graphics import style
|
|
|
|
|
|
|
|
class ClipboardMenuItem(ClipboardBubble):
|
|
|
|
|
2006-12-04 20:12:24 +01:00
|
|
|
def __init__(self, percent = 0, stylesheet="clipboard.Bubble"):
|
|
|
|
ClipboardBubble.__init__(self, percent = percent)
|
|
|
|
style.apply_stylesheet(self, stylesheet)
|
2006-11-15 13:56:19 +01:00
|
|
|
|
|
|
|
class ClipboardMenu(Menu):
|
|
|
|
|
2006-12-04 20:12:24 +01:00
|
|
|
ACTION_DELETE = 0
|
|
|
|
ACTION_SHARE = 1
|
|
|
|
ACTION_STOP_DOWNLOAD = 2
|
|
|
|
|
2007-01-05 21:13:46 +01:00
|
|
|
def __init__(self, name, percent, preview):
|
2006-12-04 20:12:24 +01:00
|
|
|
Menu.__init__(self, name)
|
2006-12-14 13:50:42 +01:00
|
|
|
|
|
|
|
if percent < 100:
|
|
|
|
self._progress_bar = ClipboardMenuItem(percent)
|
|
|
|
self._root.append(self._progress_bar)
|
|
|
|
else:
|
|
|
|
self._progress_bar = None
|
2006-12-04 20:12:24 +01:00
|
|
|
|
|
|
|
self._remove_icon = None
|
|
|
|
self._stop_icon = None
|
|
|
|
|
2007-01-07 23:38:33 +01:00
|
|
|
self.add_item(preview, wrap=True)
|
2007-01-05 21:13:46 +01:00
|
|
|
|
2006-12-14 13:50:42 +01:00
|
|
|
self._update_icons(percent)
|
2006-12-04 20:12:24 +01:00
|
|
|
|
2006-12-14 13:50:42 +01:00
|
|
|
def _update_icons(self, percent):
|
2006-12-04 20:12:24 +01:00
|
|
|
if percent == 100:
|
|
|
|
if not self._remove_icon:
|
|
|
|
self._remove_icon = CanvasIcon(icon_name='stock-remove')
|
|
|
|
self.add_action(self._remove_icon, ClipboardMenu.ACTION_DELETE)
|
|
|
|
|
|
|
|
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')
|
|
|
|
self.add_action(self._stop_icon, ClipboardMenu.ACTION_STOP_DOWNLOAD)
|
2006-11-15 13:56:19 +01:00
|
|
|
|
2006-12-04 20:12:24 +01:00
|
|
|
if self._remove_icon:
|
|
|
|
self.remove_action(self._remove_icon)
|
|
|
|
self._remove_icon = None
|
|
|
|
|
2007-01-05 21:13:46 +01:00
|
|
|
def set_state(self, name, percent, preview):
|
|
|
|
self.set_title(name)
|
2006-12-14 13:50:42 +01:00
|
|
|
if self._progress_bar:
|
|
|
|
self._progress_bar.set_property('percent', percent)
|
|
|
|
self._update_icons(percent)
|