B
    Z                 @   s,   d dl ZG dd deZG dd deZdS )    Nc               @   s(   e Zd ZdZdd Zdd Zdd ZdS )		IconCachezzMaintain a cache of icons.  If an icon is used more than once by a GUI
    then ensure that only one copy is created.
    c             C   s   || _ || _d| _g | _dS )zInitialise the cache. N)_object_factory_qtgui_module	_base_dir_cache)selfZobject_factoryqtgui_module r
   3lib/python3.7/site-packages/PyQt5/uic/icon_cache.py__init__   s    zIconCache.__init__c             C   s
   || _ dS )z? Set the base directory to be used for all relative filenames. N)r   )r   base_dirr
   r
   r   set_base_dir'   s    zIconCache.set_base_dirc             C   s   |j d}|dk	r2| jjdd| j|fddS |jdkr@dS t|| j}y| j	|}W n t
k
rt   d}Y nX |dkr| j| }nPd}t| j}|dkr|t|7 }| jjd	|d
dd}||| j | j| |jS )z2Return an icon described by the given iconset tag.themeNzQIcon.fromThemeiconF)Zis_attributer   QIconr
   )Zattribgetr   ZcreateQObjectZasStringtext_IconSetr   r   index
ValueErrorlenstrset_iconr   appendr   )r   iconsetr   Zisetidxnamer   r
   r
   r   get_icon,   s.    


zIconCache.get_iconN)__name__
__module____qualname____doc__r   r   r   r
   r
   r
   r   r      s   r   c               @   s4   e Zd ZdZdd Zedd Zdd Zdd	 Zd
S )r   zAAn icon set, ie. the mode and state and the pixmap used for each.c             C   s`   |  |j|| _d| _i | _x8|D ]0}|j}|dk	r@|  ||}|| j|j< d| _q"W d| _dS )z(Initialise the icon set from an XML tag.TNF)
_file_namer   	_fallback_use_fallback_rolestagr   )r   r   r   i	file_namer
   r
   r   r   W   s    

z_IconSet.__init__c             C   s>   |  dd} |dkr:| d dkr:tj| s:tj|| } | S )z: Convert a relative filename if we have a base directory. \z\\r   r   :)replaceospathisabsjoin)fnamer   r
   r
   r   r$   l   s     z_IconSet._file_namec             C   s   | j r|| j nx| j D ]\}}|drH|dd }|jj}n"|dr |dd }|jj}nq t	|j|
 }|r||||| q || || q W || _dS )z%Save the icon and set its attributes.ZoffNZon)r&   ZaddFiler%   r'   itemsendswithr   ZOffZOngetattrtitleZ	addPixmapZQPixmapr   )r   r   r	   ZroleZpixmapmodestater
   r
   r   r   w   s    



z_IconSet.set_iconc             C   sD   t |t| stS | jr.|jr*| j|jkS dS |jr8dS | j|jkS )z#Compare two icon sets for equality.F)
isinstancetypeNotImplementedr&   r%   r'   )r   otherr
   r
   r   __eq__   s    z_IconSet.__eq__N)	r    r!   r"   r#   r   staticmethodr$   r   r?   r
   r
   r
   r   r   T   s
   r   )os.pathr.   objectr   r   r
   r
   r
   r   <module>   s   :