Allow users to add extra mimetype icons by placing appropriately named image files in the resources/mimetypes override directory

This commit is contained in:
Kovid Goyal 2014-08-18 09:00:03 +05:30
parent cac8476f0e
commit 64d37eae40

View File

@ -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])