# Copyright (c) 2015 Shotgun Software Inc.
# 
# CONFIDENTIAL AND PROPRIETARY
# 
# This work is provided "AS IS" and subject to the Shotgun Pipeline Toolkit 
# Source Code License included in this distribution package. See LICENSE.
# By accessing, using, copying or modifying this work you indicate your 
# agreement to the Shotgun Pipeline Toolkit Source Code License. All rights 
# not expressly granted therein are reserved by Shotgun Software Inc.
from sgtk.platform.qt import QtCore, QtGui
from .ui import resources_rc
# list of all entity types for which an icon exists
_entity_types_with_icons = ["Asset", 
                           "ClientUser",
                           "EventLogEntry",
                           "Group",
                           "HumanUser",
                           "PublishedFile",
                           "TankPublishedFile",
                           "Note",
                           "Playlist",
                           "Project",
                           "Sequence",
                           "Shot",
                           "Tag",
                           "Task",
                           "Ticket",
                           "Version",
                           ]
_cached_entity_icons = {}
[docs]def get_entity_type_icon_url(entity_type):
    """
    Retrieve the icon resource path for the specified entity type if available.
    
    This is useful if you want to include an icon in a ``QLabel`` using
    an ``<img>`` html tag.
    :param entity_type: The entity type to retrieve the icon for
    :returns:           A string url with a qt resource path
    """
    if entity_type in _entity_types_with_icons:
        return ":/tk-framework-shotgunutils/icon_%s_dark.png" % entity_type
    else:
        return None 
[docs]def get_entity_type_icon(entity_type):
    """
    Retrieve the icon for the specified entity type if available.
    :param entity_type: The entity type to retrieve the icon for
    :returns:           A QIcon if an icon was found for the specified entity
                        type, otherwise None.
    """
    global _cached_entity_icons
    if entity_type not in _cached_entity_icons:
        # not yet cached
        icon = None
        url = get_entity_type_icon_url(entity_type) 
        if url:
            # create a QIcon for it
            icon = QtGui.QIcon(QtGui.QPixmap(url))
        # cache it
        _cached_entity_icons[entity_type] = icon
        
    # we've previously asked for the icon
    return _cached_entity_icons[entity_type]