Small fixes for ubuntu 12.11 quantal: icon name list weirdness + new xdg location for thumbnails
This commit is contained in:
parent
59a0990256
commit
899f0ec9ff
@ -19,12 +19,49 @@ except:
|
|||||||
|
|
||||||
BUS_PATH = "/org/recoll/unitylensrecoll/scope/main"
|
BUS_PATH = "/org/recoll/unitylensrecoll/scope/main"
|
||||||
|
|
||||||
# Thumbnails standard
|
XDGCACHE = os.getenv('XDG_CACHE_DIR', os.path.expanduser("~/.cache"))
|
||||||
# 256x256
|
THUMBDIRS = [os.path.join(XDGCACHE, "thumbnails"),
|
||||||
THMBDIRLARGE = "~/.thumbnails/large"
|
os.path.expanduser("~/.thumbnails")]
|
||||||
# 128x128
|
|
||||||
THMBDIRNORMAL = "~/.thumbnails/normal"
|
def _get_thumbnail_path(url):
|
||||||
|
"""Look for a thumbnail for the input url, according to the
|
||||||
|
freedesktop thumbnail storage standard. The input 'url' always
|
||||||
|
begins with file:// and is unencoded. We encode it properly
|
||||||
|
and compute the path inside the thumbnail storage
|
||||||
|
directory. We return the path only if the thumbnail does exist
|
||||||
|
(no generation performed)"""
|
||||||
|
global THUMBDIRS
|
||||||
|
|
||||||
|
# Compute the thumbnail file name by encoding and hashing the url string
|
||||||
|
path = url.replace("file://", "", 1)
|
||||||
|
try:
|
||||||
|
path = "file://" + urllib.quote(path)
|
||||||
|
except:
|
||||||
|
#print "_get_thumbnail_path: urllib.quote failed"
|
||||||
|
return None
|
||||||
|
#print "_get_thumbnail: encoded path: [%s]" % (path,)
|
||||||
|
thumbname = hashlib.md5(path).hexdigest() + ".png"
|
||||||
|
|
||||||
|
# If the "new style" directory exists, we should stop looking in
|
||||||
|
# the "old style" one (there might be interesting files in there,
|
||||||
|
# but they may be stale, so it's best to not touch them). We do
|
||||||
|
# this semi-dynamically so that we catch things up if the
|
||||||
|
# directory gets created while we are running.
|
||||||
|
if os.path.exists(THUMBDIRS[0]):
|
||||||
|
THUMBDIRS = THUMBDIRS[0:1]
|
||||||
|
|
||||||
|
# Check in appropriate directories to see if the thumbnail file exists
|
||||||
|
#print "_get_thumbnail: thumbname: [%s]" % (thumbname,)
|
||||||
|
for topdir in THUMBDIRS:
|
||||||
|
for dir in ("large", "normal"):
|
||||||
|
tpath = os.path.join(topdir, dir, thumbname)
|
||||||
|
# print "Testing [%s]" % (tpath,)
|
||||||
|
if os.path.exists(tpath):
|
||||||
|
return tpath
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
# Icon names for some recoll mime types which don't have standard icon by the
|
# Icon names for some recoll mime types which don't have standard icon by the
|
||||||
# normal method
|
# normal method
|
||||||
SPEC_MIME_ICONS = {'application/x-fsdirectory' : 'gnome-fs-directory.svg',
|
SPEC_MIME_ICONS = {'application/x-fsdirectory' : 'gnome-fs-directory.svg',
|
||||||
@ -163,31 +200,6 @@ class Scope (Unity.Scope):
|
|||||||
GObject.timeout_add(TYPING_TIMEOUT, self._on_timeout,
|
GObject.timeout_add(TYPING_TIMEOUT, self._on_timeout,
|
||||||
search_string, model)
|
search_string, model)
|
||||||
|
|
||||||
def _get_thumbnail_path(self, url):
|
|
||||||
"""Look for a thumbnail for the input url, according to the
|
|
||||||
freedesktop thumbnail storage standard. The input 'url' always
|
|
||||||
begins with file:// and is unencoded. We encode it properly
|
|
||||||
and compute the path inside the thumbnail storage
|
|
||||||
directory. We return the path only if the thumbnail does exist
|
|
||||||
(no generation performed)"""
|
|
||||||
path = url
|
|
||||||
path = path.replace("file://", "", 1)
|
|
||||||
try:
|
|
||||||
path = "file://" + urllib.quote(path)
|
|
||||||
except:
|
|
||||||
#print "_get_thumbnail_path: quote failed"
|
|
||||||
return None
|
|
||||||
#print "_get_thumbnail: encoded path: [%s]" % (path,)
|
|
||||||
thumbname = hashlib.md5(path).hexdigest() + ".png"
|
|
||||||
#print "_get_thumbnail: thumbname: [%s]" % (thumbname,)
|
|
||||||
tpath = os.path.join(os.path.expanduser(THMBDIRNORMAL), thumbname)
|
|
||||||
if os.path.exists(tpath):
|
|
||||||
return tpath
|
|
||||||
tpath = os.path.join(os.path.expanduser(THMBDIRLARGE), thumbname)
|
|
||||||
if os.path.exists(tpath):
|
|
||||||
return tpath
|
|
||||||
return None
|
|
||||||
|
|
||||||
def _really_do_search(self, search_string, model):
|
def _really_do_search(self, search_string, model):
|
||||||
#print "really_do_search:", "[" + search_string + "]"
|
#print "really_do_search:", "[" + search_string + "]"
|
||||||
|
|
||||||
@ -237,18 +249,9 @@ class Scope (Unity.Scope):
|
|||||||
else:
|
else:
|
||||||
mimetype = doc.mimetype
|
mimetype = doc.mimetype
|
||||||
url = doc.url
|
url = doc.url
|
||||||
# doc.url is a unicode string which is badly wrong. A
|
# doc.url is a unicode string which is badly wrong.
|
||||||
# future version of the pyrecoll module will have a
|
# Retrieve the binary path for thumbnail access.
|
||||||
# separate method to retrieve the binary
|
thumbnail = _get_thumbnail_path(doc.getbinurl())
|
||||||
# version. Until this happens, try to encode
|
|
||||||
# back. This won't work every time (ie: if the
|
|
||||||
# original path could not be translated to unicode by
|
|
||||||
# pyrecoll, or if the unicode can't be translated back
|
|
||||||
# in the current locale)
|
|
||||||
#encoding = locale.nl_langinfo(locale.CODESET)
|
|
||||||
#thumbnail = self._get_thumbnail_path(url.encode(encoding,
|
|
||||||
# errors='replace'))
|
|
||||||
thumbnail = self._get_thumbnail_path(doc.getbinurl())
|
|
||||||
|
|
||||||
titleorfilename = doc.title
|
titleorfilename = doc.title
|
||||||
if titleorfilename == "":
|
if titleorfilename == "":
|
||||||
@ -263,9 +266,14 @@ class Scope (Unity.Scope):
|
|||||||
else:
|
else:
|
||||||
icon = Gio.content_type_get_icon(doc.mimetype)
|
icon = Gio.content_type_get_icon(doc.mimetype)
|
||||||
if icon:
|
if icon:
|
||||||
iconname = icon.get_names()[0]
|
# At least on Quantal, get_names() sometimes returns
|
||||||
|
# a list with '(null)' in the first position...
|
||||||
|
for iname in icon.get_names():
|
||||||
|
if iname != '(null)':
|
||||||
|
iconname = iname
|
||||||
|
break
|
||||||
|
|
||||||
#print "iconname:", iconname
|
#print "iconname(%s) = %s" % (doc.mimetype, iconname)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
abstract = self.db.makeDocAbstract(doc, query).encode('utf-8')
|
abstract = self.db.makeDocAbstract(doc, query).encode('utf-8')
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user