Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIRIE Shinsuke <irieshinsuke@yahoo.co.jp>2014-02-19 08:32:54 +0400
committerCampbell Barton <ideasman42@gmail.com>2014-02-19 08:32:54 +0400
commitbf2f6d6161bc8db60d8a8b69e8db37e64cd61e60 (patch)
treee9a30ef8d5a8f1dbef48d4ed1c44682aea6efaa2 /release/bin
parente3f4037075718f1a6fe288f15f0f37fc8d3dcc2b (diff)
blender-thumbnailer.py: Fix GVFS support not working with Python 3
also update doc string.
Diffstat (limited to 'release/bin')
-rwxr-xr-xrelease/bin/blender-thumbnailer.py60
1 files changed, 46 insertions, 14 deletions
diff --git a/release/bin/blender-thumbnailer.py b/release/bin/blender-thumbnailer.py
index 22e811c538e..91aeb7af2ab 100755
--- a/release/bin/blender-thumbnailer.py
+++ b/release/bin/blender-thumbnailer.py
@@ -21,10 +21,16 @@
# <pep8 compliant>
"""
-Thumbnailer runs with python 2.6 and 3.x.
-To run automatically with nautilus:
- gconftool --type boolean --set /desktop/gnome/thumbnailers/application@x-blender/enable true
- gconftool --type string --set /desktop/gnome/thumbnailers/application@x-blender/command "blender-thumbnailer.py %u %o"
+Thumbnailer runs with python 2.7 and 3.x.
+To run automatically with a file manager such as Nautilus, save this file
+in a directory that is listed in PATH environment variable, and create
+blender.thumbnailer file in ${HOME}/.local/share/thumbnailers/ directory
+with the following contents:
+
+[Thumbnailer Entry]
+TryExec=blender-thumbnailer.py
+Exec=blender-thumbnailer.py %u %o
+MimeType=application/x-blender;
"""
import struct
@@ -34,21 +40,47 @@ def open_wrapper_get():
""" wrap OS spesific read functionality here, fallback to 'open()'
"""
- def open_gio(path, mode):
- g_file = gio.File(path).read()
- g_file.orig_seek = g_file.seek
+ class GFileWrapper:
+ __slots__ = ("mode", "g_file")
+ def __init__(self, url, mode='r'):
+ self.mode = mode # used in gzip module
+ self.g_file = Gio.File.parse_name(url).read(None)
- def new_seek(offset, whence=0):
- return g_file.orig_seek(offset, [1, 0, 2][whence])
+ def read(self, size):
+ return self.g_file.read_bytes(size, None).get_data()
- g_file.seek = new_seek
- return g_file
+ def seek(self, offset, whence=0):
+ self.g_file.seek(offset, [1, 0, 2][whence], None)
+ return self.g_file.tell()
+
+ def tell(self):
+ return self.g_file.tell()
+
+ def close(self):
+ self.g_file.close(None)
+
+ def open_local_url(url, mode='r'):
+ o = urlparse(url)
+ if o.scheme == '':
+ path = o.path
+ elif o.scheme == 'file':
+ path = unquote(o.path)
+ else:
+ raise(IOError('URL scheme "%s" needs gi.repository.Gio module' % o.scheme))
+ return open(path, mode)
try:
- import gio
- return open_gio
+ from gi.repository import Gio
+ return GFileWrapper
except ImportError:
- return open
+ try:
+ # Python 3
+ from urllib.parse import urlparse, unquote
+ except ImportError:
+ # Python 2
+ from urlparse import urlparse
+ from urllib import unquote
+ return open_local_url
def blend_extract_thumb(path):