Start: Use default file icon if mime-based one is unavailable for some reason

This commit is contained in:
Yorik van Havre
2018-11-08 17:56:21 -02:00
parent 490b76f405
commit 7d197ce829

View File

@@ -34,6 +34,7 @@ FreeCADGui.updateLocale()
iconprovider = QtGui.QFileIconProvider()
iconbank = {} # to store already created icons so we don't overpollute the temp dir
tempfolder = None # store icons inside a subfolder in temp dir
defaulticon = None # store a default icon for problematic file types
def gethexcolor(color):
@@ -142,14 +143,19 @@ def getInfo(filename):
if not image:
i = QtCore.QFileInfo(filename)
t = iconprovider.type(i)
if not t:
t = "Unknown"
if t in iconbank:
image = iconbank[t]
else:
icon = iconprovider.icon(i)
preferred = icon.actualSize(QtCore.QSize(128,128))
px = icon.pixmap(preferred)
image = tempfile.mkstemp(dir=tempfolder,suffix='.png')[1]
px.save(image)
if icon.availableSizes():
preferred = icon.actualSize(QtCore.QSize(128,128))
px = icon.pixmap(preferred)
image = tempfile.mkstemp(dir=tempfolder,suffix='.png')[1]
px.save(image)
else:
image = getDefaultIcon()
iconbank[t] = image
return [image,size,author,ctime,mtime,descr,company,lic]
@@ -158,6 +164,25 @@ def getInfo(filename):
def getDefaultIcon():
"retrieves or creates a default file icon"
global defaulticon
if not defaulticon:
i = QtCore.QFileInfo("Unknown")
icon = iconprovider.icon(i)
preferred = icon.actualSize(QtCore.QSize(128,128))
px = icon.pixmap(preferred)
image = tempfile.mkstemp(dir=tempfolder,suffix='.png')[1]
px.save(image)
defaulticon = image
return defaulticon
def buildCard(filename,method,arg=None):
"builds a html <li> element representing a file. method is a script + a keyword, for ex. url.py?key="