diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index c7306e7abc..5818eb46e3 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -539,10 +539,18 @@ class FileIconProvider(QFileIconProvider): def __init__(self): QFileIconProvider.__init__(self) - self.icons = {} - for key in self.__class__.ICONS.keys(): - self.icons[key] = I('mimetypes/')+self.__class__.ICONS[key]+'.png' - self.icons['calibre'] = I('lt.png') + upath, bpath = I('mimetypes'), I('mimetypes', allow_user_override=False) + if upath != bpath: + # User has chosen to override mimetype icons + path_map = {v:I('mimetypes/%s.png' % v) for v in set(self.ICONS.itervalues())} + for uicon in glob.glob(os.path.join(upath, '*.png')): + ukey = os.path.basename(uicon).rpartition('.')[0].lower() + if ukey not in path_map: + path_map[ukey] = uicon + else: + path_map = {v:os.path.join(bpath, v + '.png') for v in set(self.ICONS.itervalues())} + self.icons = {k:path_map[v] for k, v in self.ICONS.iteritems()} + self.icons['calibre'] = I('lt.png', allow_user_override=False) for i in ('dir', 'default', 'zero'): self.icons[i] = QIcon(self.icons[i])