First thing that I want to write is about how to list embedded icons (or files) in Qt applications.
In this example, I will be using PySide and The Foundry's Hiero (however, this technique can be applied to any Qt application).
Background
In one of my projects, I needed to create a selection that looks like this:
As you can see, the highlighted icons are built-in Hiero icons. But how do we repurpose built-in icons like these?
Solution
Going through the example codes in Hiero's Python Dev Guide, I found that you can use the following code to use the built-in Video and Audio Track icons:
def getIconForTrack(self,track):
trackIcon = None
if isinstance(track,hiero.core.AudioTrack):
trackIcon = QIcon("icons:AudioOnly.png")
elif isinstance(track,hiero.core.VideoTrack):
trackIcon = QIcon("icons:VideoOnly.png")
return trackIconIf we have something like this, it is very simple to find the rest of the embedded icons.
This is how:
import os
from PySide import QtCore
file = QtCore.QFile("icons:AudioOnly.png")
directory = QtCore.QDir(os.path.dirname(file))
print(directory.entryList())Now, while the above solution will only work if we already know one of the embedded files; if you don't know a single embedded file in the Qt application you're working on, worry not. We can utilize the top directory and go down from there.
And in case of Autodesk's Maya, most of the icons are already there!
from PySide import QtCore
directory = QtCore.QDir(":")
print(directory.entryList())That's it! Simple.