Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/services
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-09-17 00:39:02 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-09-17 00:39:02 (GMT)
commitecb8816bc9b59fc633302c47eb4d7f98b802b610 (patch)
tree76739526e0d5d0356a9134a827275b621e310ee1 /services
parent6ec3246a1e6c7225131d8497d2eb53014753dd73 (diff)
Add XdndDirectSave support to the clipboard.
I think it could be a little cleaner, but it would require refactoring, we can do that post Trial-3. Also we might have to figure out a way to get file saving progress feedback at some point.
Diffstat (limited to 'services')
-rw-r--r--services/shell/clipboardobject.py24
-rw-r--r--services/shell/clipboardservice.py6
2 files changed, 18 insertions, 12 deletions
diff --git a/services/shell/clipboardobject.py b/services/shell/clipboardobject.py
index c3cdab3..ea5a9a1 100644
--- a/services/shell/clipboardobject.py
+++ b/services/shell/clipboardobject.py
@@ -95,17 +95,21 @@ class ClipboardObject:
format = mime.choose_most_significant(self._formats.keys())
- if format == 'text/uri-list':
+ uri = None
+ if format == 'XdndDirectSave0':
+ uri = self._formats['XdndDirectSave0'].get_data()
+ elif format == 'text/uri-list':
data = self._formats['text/uri-list'].get_data()
- uris = data.split('\n')
- if len(uris) == 1 or not uris[1]:
- uri = urlparse.urlparse(uris[0], 'file')
- if uri.scheme == 'file':
- if os.path.exists(uri.path):
- format = mime.get_for_file(uri.path)
- else:
- format = mime.get_from_file_name(uri.path)
- logging.debug('Choosed %r!' % format)
+ uri = data.split('\n')[0]
+
+ if uri:
+ uri = urlparse.urlparse(uri, 'file')
+ if uri.scheme == 'file':
+ if os.path.exists(uri.path):
+ format = mime.get_for_file(uri.path)
+ else:
+ format = mime.get_from_file_name(uri.path)
+ logging.debug('Choosed %r!' % format)
return format
diff --git a/services/shell/clipboardservice.py b/services/shell/clipboardservice.py
index 6671fbf..f0b2baa 100644
--- a/services/shell/clipboardservice.py
+++ b/services/shell/clipboardservice.py
@@ -75,7 +75,9 @@ class ClipboardService(dbus.service.Object):
logging.debug('ClipboardService.add_object_format')
cb_object = self._objects[str(object_path)]
- if on_disk and cb_object.get_percent() == 100:
+ if format_type == 'XdndDirectSave0':
+ cb_object.add_format(Format(format_type, data, on_disk))
+ elif on_disk and cb_object.get_percent() == 100:
new_uri = self._copy_file(data)
cb_object.add_format(Format(format_type, new_uri, on_disk))
logging.debug('Added format of type ' + format_type + ' with path at ' + new_uri)
@@ -114,7 +116,7 @@ class ClipboardService(dbus.service.Object):
if percent == 100:
formats = cb_object.get_formats()
for format_name, format in formats.iteritems():
- if format.is_on_disk():
+ if format.is_on_disk() and format_name != 'XdndDirectSave0':
new_uri = self._copy_file(format.get_data())
format.set_data(new_uri)