59 lines
1.6 KiB
Python
59 lines
1.6 KiB
Python
|
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
|
||
|
|
||
|
clipboard_bubble = {
|
||
|
'fill-color' : 0x646464FF,
|
||
|
'stroke-color' : 0x646464FF,
|
||
|
'progress-color': 0x333333FF,
|
||
|
'spacing' : style.space_unit,
|
||
|
'padding' : style.space_unit * 1.5
|
||
|
}
|
||
|
|
||
|
clipboard_menu_item_title = {
|
||
|
'xalign': hippo.ALIGNMENT_START,
|
||
|
'padding-left': 5,
|
||
|
'color' : 0xFFFFFFFF,
|
||
|
'font' : style.get_font_description('Bold', 1.2)
|
||
|
}
|
||
|
|
||
|
style.register_stylesheet("clipboard.Bubble", clipboard_bubble)
|
||
|
style.register_stylesheet("clipboard.MenuItem.Title", clipboard_menu_item_title)
|
||
|
|
||
|
class ClipboardMenuItem(ClipboardBubble):
|
||
|
|
||
|
def __init__(self, percent = 0, stylesheet="clipboard.Bubble"):
|
||
|
ClipboardBubble.__init__(self, percent = percent)
|
||
|
style.apply_stylesheet(self, stylesheet)
|
||
|
|
||
|
class ClipboardMenu(Menu):
|
||
|
|
||
|
ACTION_DELETE = 0
|
||
|
ACTION_SHARE = 1
|
||
|
ACTION_STOP_DOWNLOAD = 2
|
||
|
|
||
|
def __init__(self, file_name, percent):
|
||
|
Menu.__init__(self, file_name)
|
||
|
|
||
|
self._progress_bar = ClipboardMenuItem(percent)
|
||
|
self._root.append(self._progress_bar)
|
||
|
|
||
|
icon = CanvasIcon(icon_name='stock-share-mesh')
|
||
|
self.add_action(icon, ClipboardMenu.ACTION_SHARE)
|
||
|
|
||
|
if percent == 100:
|
||
|
icon = CanvasIcon(icon_name='stock-remove')
|
||
|
self.add_action(icon, ClipboardMenu.ACTION_DELETE)
|
||
|
else:
|
||
|
icon = CanvasIcon(icon_name='stock-close')
|
||
|
self.add_action(icon, ClipboardMenu.ACTION_STOP_DOWNLOAD)
|
||
|
|
||
|
def set_percent(self, percent):
|
||
|
self._progress_bar.set_property('percent', percent)
|
||
|
|