First implementation of ClipboardService. Implement pdf viewing and downloading via ClipboardService.
This commit is contained in:
@@ -0,0 +1,42 @@
|
||||
import logging
|
||||
import dbus
|
||||
import hippo
|
||||
|
||||
from sugar.graphics import style
|
||||
from view.ClipboardIcon import ClipboardIcon
|
||||
from sugar.clipboard import ClipboardService
|
||||
|
||||
class ClipboardBox(hippo.CanvasBox):
|
||||
|
||||
def __init__(self, frame, menu_shell):
|
||||
hippo.CanvasBox.__init__(self)
|
||||
self._frame = frame
|
||||
self._menu_shell = menu_shell
|
||||
self._icons = {}
|
||||
|
||||
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-changed', self._object_state_changed_cb)
|
||||
|
||||
def _object_added_cb(self, cb_service, name, mimeType, fileName):
|
||||
icon = ClipboardIcon(self._menu_shell, name, 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_cb(self, cb_service, fileName):
|
||||
icon = self._icons[fileName]
|
||||
self.remove(icon)
|
||||
del self._icons[fileName]
|
||||
logging.debug('ClipboardBox: ' + fileName + ' was deleted.')
|
||||
|
||||
def _object_state_changed_cb(self, cb_service, fileName, percent):
|
||||
icon = self._icons[fileName]
|
||||
icon.set_percent(percent)
|
||||
logging.debug('ClipboardBox: ' + fileName + ' state was changed.')
|
||||
@@ -23,6 +23,7 @@ from view.frame.ActivitiesBox import ActivitiesBox
|
||||
from view.frame.ZoomBox import ZoomBox
|
||||
from view.frame.overlaybox import OverlayBox
|
||||
from view.frame.FriendsBox import FriendsBox
|
||||
from view.frame.ClipboardBox import ClipboardBox
|
||||
from view.frame.PanelWindow import PanelWindow
|
||||
from view.frame.notificationtray import NotificationTray
|
||||
from view.frame.shutdownicon import ShutdownIcon
|
||||
@@ -205,7 +206,10 @@ class Frame:
|
||||
root.append(box)
|
||||
|
||||
# Left panel
|
||||
self._create_panel(grid, 0, 1, 1, 10)
|
||||
[menu_shell, root] = self._create_panel(grid, 0, 1, 1, 10)
|
||||
|
||||
box = ClipboardBox(self, menu_shell)
|
||||
root.append(box)
|
||||
|
||||
def _create_panel(self, grid, x, y, width, height):
|
||||
panel = PanelWindow()
|
||||
|
||||
@@ -2,6 +2,7 @@ sugardir = $(pkgdatadir)/shell/view/frame
|
||||
sugar_PYTHON = \
|
||||
__init__.py \
|
||||
ActivitiesBox.py \
|
||||
ClipboardBox.py \
|
||||
FriendsBox.py \
|
||||
PanelWindow.py \
|
||||
Frame.py \
|
||||
|
||||
Reference in New Issue
Block a user