Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2007-03-14 17:04:10 (GMT)
committer Dan Williams <dcbw@redhat.com>2007-03-14 17:04:10 (GMT)
commit653191806fc3739819773df050b2682026524009 (patch)
tree0f1fb965bd395f48f7f2c7bb1183d50467b99e48 /services
parent6ab478c6cd91dea2127f0ec1608fc0dd0d49e00a (diff)
Copy interesting files to /home/dcbw after download
Diffstat (limited to 'services')
-rw-r--r--services/clipboard/clipboardobject.py6
-rw-r--r--services/clipboard/clipboardservice.py36
2 files changed, 42 insertions, 0 deletions
diff --git a/services/clipboard/clipboardobject.py b/services/clipboard/clipboardobject.py
index af8ba5f..919acd0 100644
--- a/services/clipboard/clipboardobject.py
+++ b/services/clipboard/clipboardobject.py
@@ -54,3 +54,9 @@ class Format:
def get_data(self):
return self._data
+
+ def _set_data(self, data):
+ self._data = data
+
+ def get_on_disk(self):
+ return self._on_disk
diff --git a/services/clipboard/clipboardservice.py b/services/clipboard/clipboardservice.py
index bd932c5..0ed423b 100644
--- a/services/clipboard/clipboardservice.py
+++ b/services/clipboard/clipboardservice.py
@@ -16,11 +16,14 @@
import logging
import gobject
+import os
+import shutil
import dbus
import dbus.service
from sugar import env
from sugar import util
from clipboardobject import ClipboardObject, Format
+import typeregistry
NAME_KEY = 'NAME'
PERCENT_KEY = 'PERCENT'
@@ -48,6 +51,34 @@ class ClipboardDBusServiceHelper(dbus.service.Object):
self._next_id += 1
return self._next_id
+ def _handle_file_completed(self, cb_object):
+ """If the object is an on-disk file, and it's at 100%, and we care about
+ it's file type, copy that file to $HOME and upate the clipboard object's
+ data to point to the new location"""
+ formats = cb_object.get_formats()
+ if not len(formats) or len(formats) > 1:
+ return
+
+ format = formats.values()[0]
+ if not format.get_on_disk():
+ return
+
+ if not len(cb_object.get_activity()):
+ # no activity to handle this, don't autosave it
+ return
+
+ # copy to homedir
+ src = format.get_data()
+ if not os.path.exists(src):
+ logging.debug("File %s doesn't appear to exist" % src)
+ return
+ dst = os.path.join(os.path.expanduser("~"), os.path.basename(src))
+ try:
+ shutil.move(src, dst)
+ format._set_data(dst)
+ except IOError, e:
+ logging.debug("Couldn't move file %s to %s: %s" % (src, dst, e))
+
# dbus methods
@dbus.service.method(_CLIPBOARD_DBUS_INTERFACE,
in_signature="s", out_signature="o")
@@ -93,7 +124,12 @@ class ClipboardDBusServiceHelper(dbus.service.Object):
if cb_object.get_percent() == percent:
# ignore setting same percentage
return
+
cb_object.set_percent(percent)
+
+ if percent == 100:
+ self._handle_file_completed(cb_object)
+
self.object_state_changed(object_path, {NAME_KEY: cb_object.get_name(),
PERCENT_KEY: percent,
ICON_KEY: cb_object.get_icon(),