Created SugarDownloadManager and ClipboardService's wrapper. Show and hide the frame when adding an object to the clipboard.

This commit is contained in:
Tomeu Vizoso
2006-11-05 19:52:46 +01:00
parent b9f75c1472
commit a7e4092b0e
22 changed files with 267 additions and 181 deletions
+14 -33
View File
@@ -4,58 +4,39 @@ import hippo
from sugar.graphics import style
from view.ClipboardIcon import ClipboardIcon
from sugar.clipboard import ClipboardService
class ClipboardBox(hippo.CanvasBox):
_CLIPBOARD_SERVICE = "org.laptop.Clipboard"
_CLIPBOARD_OBJECT_PATH = "/org/laptop/Clipboard"
def __init__(self, shell, menu_shell):
def __init__(self, frame, menu_shell):
hippo.CanvasBox.__init__(self)
self._shell = shell
self._frame = frame
self._menu_shell = menu_shell
self._icons = {}
bus = dbus.SessionBus()
bus.add_signal_receiver(self.name_owner_changed_cb,
signal_name="NameOwnerChanged",
dbus_interface="org.freedesktop.DBus")
# Try to register to ClipboardService, if we fail, we'll try later.
try:
self._connect_clipboard_signals()
except dbus.DBusException, exception:
pass
def _connect_clipboard_signals(self):
bus = dbus.SessionBus()
proxy_obj = bus.get_object(self._CLIPBOARD_SERVICE, self._CLIPBOARD_OBJECT_PATH)
iface = dbus.Interface(proxy_obj, self._CLIPBOARD_SERVICE)
iface.connect_to_signal('object_added', self.object_added_callback)
iface.connect_to_signal('object_deleted', self.object_deleted_callback)
iface.connect_to_signal('object_state_updated', self.object_state_updated_callback)
cb_service = ClipboardService.get_instance()
cb_service.connect('object-added', self._object_added_cb)
cb_service.connect('object-deleted', self._object_deleted_cb)
cb_service.connect('object-state-updated', self._object_state_updated_cb)
def name_owner_changed_cb(self, name, old, new):
if name != self._CLIPBOARD_SERVICE:
return
if (not old and not len(old)) and (new and len(new)):
# ClipboardService started up
self._connect_clipboard_signals()
def object_added_callback(self, mimeType, fileName):
def _object_added_cb(self, cb_service, mimeType, fileName):
icon = ClipboardIcon(self._menu_shell, fileName)
style.apply_stylesheet(icon, 'frame.BuddyIcon')
self.append(icon)
self._icons[fileName] = icon
if not self._frame.is_visible():
self._frame.show_and_hide(0.1)
logging.debug('ClipboardBox: ' + fileName + ' was added.')
def object_deleted_callback(self, fileName):
def _object_deleted_cb(self, cb_service, fileName):
icon = self._icons[fileName]
self.remove(icon)
self._icons.remove(icon)
del self._icons[fileName]
logging.debug('ClipboardBox: ' + fileName + ' was deleted.')
def object_state_updated_callback(self, fileName, percent):
def _object_state_updated_cb(self, cb_service, fileName, percent):
icon = self._icons[fileName]
icon.set_percent(percent)
logging.debug('ClipboardBox: ' + fileName + ' state was updated.')
+1 -1
View File
@@ -201,7 +201,7 @@ class Frame:
# Left panel
[menu_shell, root] = self._create_panel(grid, 0, 1, 1, 10)
box = ClipboardBox(self._shell, menu_shell)
box = ClipboardBox(self, menu_shell)
root.append(box)
def _create_panel(self, grid, x, y, width, height):