From eeb09294d8713c6b8a1e3d7b8b53e692b989cdcb Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Wed, 11 Apr 2007 16:22:52 +0000 Subject: Revert "Start reworking the cliboard services to use the types registry." This reverts commit fcb57779a275e8a3343b71f991c23cb98f5c1e7a. --- (limited to 'shell') diff --git a/shell/view/clipboardicon.py b/shell/view/clipboardicon.py index e6b4a3f..ef0de29 100644 --- a/shell/view/clipboardicon.py +++ b/shell/view/clipboardicon.py @@ -44,6 +44,7 @@ class ClipboardIcon(CanvasIcon): self._name = name self._percent = 0 self._preview = None + self._activity = None self._selected = False self._hover = False self.props.box_width = units.grid_to_pixels(1) @@ -73,26 +74,60 @@ class ClipboardIcon(CanvasIcon): self.props.background_color = color.TOOLBAR_BACKGROUND.get_int() def get_popup(self): - self._menu = ClipboardMenu(self._name, self._percent, self._preview) + self._menu = ClipboardMenu(self._name, self._percent, self._preview, + self._activity) self._menu.connect('action', self._popup_action_cb) return self._menu def get_popup_context(self): return self._popup_context - def set_name(self, name): + def set_state(self, name, percent, icon_name, preview, activity): self._name = name - if self._menu: - self._menu.set_title(name) - - def set_formats(self, formats): - self._preview = None - self.props.icon_name = 'theme:stock-missing' - - def set_state(self, percent): self._percent = percent + self._preview = preview + self._activity = activity + self.set_property("icon_name", icon_name) if self._menu: - self._menu.set_state(percent) + self._menu.set_state(name, percent, preview, activity) + + if activity and percent < 100: + self.props.xo_color = XoColor("#000000,#424242") + else: + self.props.xo_color = XoColor("#000000,#FFFFFF") + + if activity and percent == 100: + # FIXME: restrict based on file type rather than activity once + # we have a better type registry + # restrict auto-open to a specific set of activities + allowed = ["org.laptop.AbiWordActivity", + "org.laptop.sugar.Xbook", + "org.vpri.EtoysActivity"] + if activity in allowed: + self._open_file() + + def _open_file(self): + if self._percent < 100 or not self._activity: + return + + # Get the file path + cb_service = clipboardservice.get_instance() + obj = cb_service.get_object(self._object_id) + formats = obj['FORMATS'] + if len(formats) > 0: + path = cb_service.get_object_data(self._object_id, formats[0]) + + # FIXME: would be better to check for format.onDisk + try: + path_exists = os.path.exists(path) + except TypeError: + path_exists = False + + if path_exists: + uri = 'file://' + path + activityfactory.create_with_uri(self._activity, uri) + else: + logging.debug("Clipboard item file path %s didn't exist" % path) def _popup_action_cb(self, popup, menu_item): action = menu_item.props.action_id diff --git a/shell/view/clipboardmenu.py b/shell/view/clipboardmenu.py index 9699972..3e8239d 100644 --- a/shell/view/clipboardmenu.py +++ b/shell/view/clipboardmenu.py @@ -33,11 +33,9 @@ class ClipboardMenu(Menu): ACTION_OPEN = 1 ACTION_STOP_DOWNLOAD = 2 - def __init__(self, name, percent, preview): + def __init__(self, name, percent, preview, activity): Menu.__init__(self, name) self.props.border = 0 - - self._activities = None if percent < 100: self._progress_bar = ClipboardProgressBar(percent) @@ -56,10 +54,10 @@ class ClipboardMenu(Menu): self._preview_text.props.font_desc = font.DEFAULT.get_pango_desc() self.append(self._preview_text) - self._update_icons(percent) + self._update_icons(percent, activity) - def _update_icons(self, percent): - if percent == 100 and self._activities: + def _update_icons(self, percent, activity): + if percent == 100 and activity: if not self._remove_item: self._remove_item = MenuItem(ClipboardMenu.ACTION_DELETE, _('Remove'), @@ -75,7 +73,7 @@ class ClipboardMenu(Menu): if self._stop_item: self.remove_item(self._stop_item) self._stop_item = None - elif percent == 100 and not self._activities: + elif percent == 100 and not activity: if not self._remove_item: self._remove_item = MenuItem(ClipboardMenu.ACTION_DELETE, _('Remove'), @@ -104,33 +102,8 @@ class ClipboardMenu(Menu): self.remove_item(self._open_item) self._open_item = None - def _open_file(self): - if self._percent < 100 or not self._activity: - return - - # Get the file path - cb_service = clipboardservice.get_instance() - obj = cb_service.get_object(self._object_id) - formats = obj['FORMATS'] - if len(formats) > 0: - path = cb_service.get_object_data(self._object_id, formats[0]) - - # FIXME: would be better to check for format.onDisk - try: - path_exists = os.path.exists(path) - except TypeError: - path_exists = False - - if path_exists: - uri = 'file://' + path - activityfactory.create_with_uri(self._activity, uri) - else: - logging.debug("Clipboard item file path %s didn't exist" % path) - - def set_activities(self, activities): - self._activities = activities - - def set_state(self, percent): + def set_state(self, name, percent, preview, activity): + self.set_title(name) if self._progress_bar: - self._progress_bar.props.percent = percent - self._update_icons(percent) + self._progress_bar.set_property('percent', percent) + self._update_icons(percent, activity) diff --git a/shell/view/frame/clipboardbox.py b/shell/view/frame/clipboardbox.py index 1baca58..2dcad10 100644 --- a/shell/view/frame/clipboardbox.py +++ b/shell/view/frame/clipboardbox.py @@ -52,7 +52,6 @@ class ClipboardBox(hippo.CanvasBox): 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-changed', self._object_changed_cb) cb_service.connect('object-state-changed', self._object_state_changed_cb) def owns_clipboard(self): @@ -137,14 +136,10 @@ class ClipboardBox(hippo.CanvasBox): del self._icons[object_id] logging.debug('ClipboardBox: ' + object_id + ' was deleted.') - def _object_changed_cb(self, cb_service, object_id, name, formats): + def _object_state_changed_cb(self, cb_service, object_id, name, percent, + icon_name, preview, activity): icon = self._icons[object_id] - icon.set_name(name) - icon.set_formats(formats) - - def _object_state_changed_cb(self, cb_service, object_id, percent): - icon = self._icons[object_id] - icon.set_state(percent) + icon.set_state(name, percent, icon_name, preview, activity) if icon.props.selected and percent == 100: self._put_in_clipboard(object_id) -- cgit v0.9.1