def get_icon(self, doc):
try:
full_icon_file_name = self.db.get_iconname(doc)
icon_file_name = split_icon_ext(full_icon_file_name)
if icon_file_name:
icon_name = icon_file_name
if icon_name in self.icon_cache:
return self.icon_cache[icon_name]
# icons.load_icon takes between 0.001 to 0.01s on my
# machine, this is a significant burden because get_value
# is called *a lot*. caching is the only option
# look for the icon on the iconpath
if self.icons.has_icon(icon_name):
icon = self.icons.load_icon(icon_name, self.icon_size, 0)
if icon:
self.icon_cache[icon_name] = icon
return icon
elif self.db.get_icon_download_url(doc):
url = self.db.get_icon_download_url(doc)
self._download_icon_and_show_when_ready(
url,
self.get_pkgname(doc),
full_icon_file_name)
# display the missing icon while the real one downloads
self.icon_cache[icon_name] = self.missing_icon
except GObject.GError as e:
LOG.debug("get_icon returned '%s'" % e)
return self.missing_icon
评论列表
文章目录