diff options
Diffstat (limited to 'shell/view/frame')
-rw-r--r-- | shell/view/frame/ClipboardBox.py | 42 | ||||
-rw-r--r-- | shell/view/frame/Frame.py | 6 | ||||
-rw-r--r-- | shell/view/frame/Makefile.am | 1 |
3 files changed, 48 insertions, 1 deletions
diff --git a/shell/view/frame/ClipboardBox.py b/shell/view/frame/ClipboardBox.py new file mode 100644 index 0000000..849c7e0 --- /dev/null +++ b/shell/view/frame/ClipboardBox.py @@ -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.') diff --git a/shell/view/frame/Frame.py b/shell/view/frame/Frame.py index fd3c11e..37f28cb 100644 --- a/shell/view/frame/Frame.py +++ b/shell/view/frame/Frame.py @@ -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() diff --git a/shell/view/frame/Makefile.am b/shell/view/frame/Makefile.am index 81a5406..5d96a23 100644 --- a/shell/view/frame/Makefile.am +++ b/shell/view/frame/Makefile.am @@ -2,6 +2,7 @@ sugardir = $(pkgdatadir)/shell/view/frame sugar_PYTHON = \ __init__.py \ ActivitiesBox.py \ + ClipboardBox.py \ FriendsBox.py \ PanelWindow.py \ Frame.py \ |