@classmethod
def from_dict(cls, label=None, label2=None, icon=None, thumbnail=None, path
    =None, selected=None, info=None, properties=None, context_menu=None,
    replace_context_menu=False, is_playable=None, info_type='video',
    stream_info=None, **kwargs):
    """A ListItem constructor for setting a lot of properties not
        available in the regular __init__ method. Useful to collect all
        the properties in a dict and then use the **dct to call this
        method.
        """
    listitem = cls(label, label2, path=path)
    listitem.art = {'icon': icon, 'thumb': thumbnail, 'poster': kwargs.get(
        'poster'), 'banner': kwargs.get('banner'), 'fanart': kwargs.get(
        'fanart'), 'landscape': kwargs.get('landscape')}
    if selected is not None:
        listitem.selected = selected
    if info:
        listitem.set_info(info_type, info)
    if is_playable:
        listitem.playable = True
    if properties:
        if hasattr(properties, 'items'):
            properties = properties.items()
        for key, val in properties:
            listitem.set_property(key, val)
    if stream_info:
        for stream_type, stream_values in stream_info.items():
            listitem.add_stream_info(stream_type, stream_values)
    if context_menu:
        listitem.add_context_menu_items(context_menu, replace_context_menu)
    return listitem
