Mini Shell

Direktori : /lib/python3.6/site-packages/xdg/__pycache__/
Upload File :
Current File : //lib/python3.6/site-packages/xdg/__pycache__/IconTheme.cpython-36.opt-1.pyc

3

ѢUPC=�@sdZddlZddlZddlZddlmZmZddlmZddl	m
Z
mZddlZ
Gdd�de�ZGdd	�d	e�ZgZx4eD],Zejejjed
��ejejjed��qzWejejjd��gaiZiZiZddd
ddgfdd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdS)zl
Complete implementation of the XDG Icon Spec Version 0.8
http://standards.freedesktop.org/icon-theme-spec/
�N)�IniFile�is_ascii)�
xdg_data_dirs)�NoThemeError�debugc@s�eZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(S))�	IconThemez&Class to parse and validate IconThemescCstj|�dS)N)r�__init__)�self�r
�/usr/lib/python3.6/IconTheme.pyrszIconTheme.__init__cCs|jS)N)�name)r	r
r
r�__repr__szIconTheme.__repr__cCs8tj||ddg�tjj|�|_tjj|j�\}|_dS)Nz
Icon ThemezKDE Icon Theme)r�parse�os�path�dirname�dir�splitr)r	�fileZnilr
r
rrszIconTheme.parsecCs|jS)N)r)r	r
r
r�getDirszIconTheme.getDircCs|jddd�S)N�NameT)�locale)�get)r	r
r
r�getName szIconTheme.getNamecCs|jddd�S)N�CommentT)r)r)r	r
r
r�
getComment"szIconTheme.getCommentcCs|jddd�S)N�InheritsT)�list)r)r	r
r
r�getInherits$szIconTheme.getInheritscCs|jddd�S)N�DirectoriesT)r)r)r	r
r
r�getDirectories&szIconTheme.getDirectoriescCs|jddd�S)N�Hidden�boolean)�type)r)r	r
r
r�	getHidden(szIconTheme.getHiddencCs
|jd�S)N�Example)r)r	r
r
r�
getExample*szIconTheme.getExamplecCs|jdd|d�S)N�Size�integer)r#�group)r)r	�	directoryr
r
r�getSize.szIconTheme.getSizecCs|jd|d�S)N�Context)r))r)r	r*r
r
r�
getContext0szIconTheme.getContextcCs|jd|d�}|r|SdSdS)N�Type)r)�	Threshold)r)r	r*�valuer
r
r�getType2szIconTheme.getTypecCs.|jdd|d�}|s|dkr |S|j|�SdS)N�MaxSizer()r#r)r)rr+)r	r*r0r
r
r�
getMaxSize8szIconTheme.getMaxSizecCs.|jdd|d�}|s|dkr |S|j|�SdS)N�MinSizer()r#r)r)rr+)r	r*r0r
r
r�
getMinSize>szIconTheme.getMinSizecCs(|jdd|d�}|s|dkr |SdSdS)Nr/r()r#r)r�)r)r	r*r0r
r
r�getThresholdDszIconTheme.getThresholdcCs�|jdkr|jjd�|jdkr"n$|jdkr:|jjd�n|jjd�y|j|jd|_Wn tk
r||jjd�YnXy|j|jd	|_Wn tk
r�|jjd
�YnXy|j|jd|_	Wn tk
r�|jjd�YnXdS)
NzKDE Icon Themez%[KDE Icon Theme]-Header is deprecatedz.themez.desktopz$.desktop fileExtension is deprecatedzUnknown File extensionrzKey 'Name' is missingrzKey 'Comment' is missingrzKey 'Directories' is missing)
�defaultGroup�warnings�append�
fileExtension�contentr�KeyError�errorsZcommentZdirectories)r	r
r
r�checkExtrasLs&


zIconTheme.checkExtrascCs$||jkr�y|j|d|_Wn$tk
rB|jjd|�YnXy|j|d|_Wn$tk
r||jjd|�YnXn�||j�kr�y|j|d|_Wntk
r�d|_YnXy|j|d|_Wn$tk
r�|jjd|�YnXn(tj	d	|��ot
|��s |jjd
|�dS)Nrz#Key 'Name' in Group '%s' is missingrz&Key 'Comment' in Group '%s' is missingr.r/r'z#Key 'Size' in Group '%s' is missingz^\[X-zInvalid Group name: %s)r8r<rr=r>r:r r#�re�matchr)r	r)r
r
r�
checkGroupls(
zIconTheme.checkGroupcCs||jkr�tjdtjjd|�r$n�tjdtjjd|�r>n�|dkrX|j||dd�nh|dkrr|j||dd�nN|dkr�|j||d	d
�n4|dkr�|j||�ntjd|�r�n|jjd
|��nD||j	�k�r|dkr�|j||dd
��n|dk�r|j||��n|dk�r:|j||�|dk�r|jjd|�n�|dk�rt|j||dd
�|j
dk�r|jjd|j
�n�|dk�r�|j||dd
�|j
dk�r|jjd|j
�nZ|dk�r�|j||dd
�|j
dk�r|jjd|j
�n tjd|��r�n|jjd
|�dS)Nz^Name�$z^CommentrT)rrr!r")r#r%z^X-[a-zA-Z0-9-]+zInvalid key: %sr'r(r,r.�Fixed�Scalabler/zGKey 'Type' must be one out of 'Fixed','Scalable','Threshold', but is %sr2z"Key 'MaxSize' give, but Type is %sr4z"Key 'MinSize' give, but Type is %sz$Key 'Threshold' give, but Type is %s)rDrEr/)r8r@rA�xdg�Locale�regex�
checkValuer>r:r r#)r	�keyr0r)r
r
r�checkKey�sP






zIconTheme.checkKeyN)�__name__�
__module__�__qualname__�__doc__rr
rrrrrr r$r&r+r-r1r3r5r7r?rBrKr
r
r
rrs( rc@sXeZdZdZdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dd�Zdd�ZdS)�IconDataz*Class to parse and validate IconData FilescCstj|�dS)N)rr)r	r
r
rr�szIconData.__init__cCs|j�}|rd|SdSdS)Nz<IconData: %s>z
<IconData>)�getDisplayName)r	Zdisplaynamer
r
rr
�szIconData.__repr__cCstj||dg�dS)Nz	Icon Data)rr)r	rr
r
rr�szIconData.parsecCs|jddd�S)zBRetrieve the display name from the icon data, if one is specified.ZDisplayNameT)r)r)r	r
r
rrQ�szIconData.getDisplayNamecCs|jdddd�S)zzRetrieve the embedded text rectangle from the icon data as a list of
        numbers (x0, y0, x1, y1), if it is specified.�EmbeddedTextRectangler(T)r#r)r)r	r
r
r�getEmbeddedTextRectangle�sz!IconData.getEmbeddedTextRectanglecCs|jdddd�S)z�Retrieve the anchor points for overlays & emblems from the icon data,
        as a list of co-ordinate pairs, if they are specified.�AttachPoints�pointT)r#r)r)r	r
r
r�getAttachPoints�szIconData.getAttachPointscCs|jdkr|jjd�dS)Nz.iconzUnknown File extension)r;r9r:)r	r
r
rr?�s
zIconData.checkExtrascCs:||jkptjd|�ot|�s6|jjd|jdd��dS)Nz^\[X-zInvalid Group name: %s�ascii�replace)r8r@rArr>r:�encode)r	r)r
r
rrB�s
zIconData.checkGroupcCsttjdtjjd|�rnV|dkr6|j||ddd�n:|dkrR|j||ddd�ntjd	|�r`n|jjd
|�dS)Nz^DisplayNamerCrRr(T)r#rrTrUz^X-[a-zA-Z0-9-]+zInvalid key: %s)r@rArFrGrHrIr>r:)r	rJr0r)r
r
rrK�szIconData.checkKeyN)
rLrMrNrOrr
rrQrSrVr?rBrKr
r
r
rrP�srPZiconsZpixmapsz~/.iconsZpngZsvgZxpmc
CsX|dkrtjj}|dkr tjj}tjj|�r0|Stjj|�ddd�|kr\tjj|�d}tgksrtdj	|kr~t
t|��a|||t|�f}yt
|\}}Wntk
r�Yn"Xtj�|tjjkr�t
|=n|Sx2tD]*}t||||�}|r�tj�|ft
|<|Sq�Wx�tD]z}|tk�sXttj�t|d�tjjk�rt|dtjj|�k�rtjj|��rtj|�tj�tjj|�ft|<�qWx�tj�D]�\}	}
x�|D]|}yD|d||
dk�r�tjj|	|d|�}tj�|gt
|<|SWn0tk
�r}zt�r|�nWYdd}~XnX�q�W�q�W|dk�rTt||d�}tj�|gt
|<|SdS)a�Get the path to a specified icon.
    
    size :
      Icon size in pixels. Defaults to ``xdg.Config.icon_size``.
    theme :
      Icon theme name. Defaults to ``xdg.Config.icon_theme``. If the icon isn't
      found in the specified theme, it will be looked up in the basic 'hicolor'
      theme.
    extensions :
      List of preferred file extensions.
    
    Example::
    
        >>> getIconPath("inkscape", 32)
        '/usr/share/icons/hicolor/32x32/apps/inkscape.png'
    N�rr6�.Zhicolor)rF�ConfigZ	icon_sizeZ
icon_themerr�isabs�splitext�themesrr�__get_themes�tuple�
icon_cacher=�time�
cache_time�
LookupIcon�icondirs�	dir_cache�int�getmtime�isdir�listdir�items�join�UnicodeDecodeErrorr�getIconPath)
�iconname�size�theme�
extensionsZtmpZ	timestampZiconZthmer*r�values�	extension�er
r
rro�sX


"&

rocCsDtjj|�r@tjj|�dd}tjj|�r@t�}|j|�|SdS)z�Retrieve the data from the .icon file corresponding to the given file. If
    there is no .icon file, it returns None.
    
    Example::
    
        getIconData("/usr/share/icons/Tango/scalable/places/folder.svg")
    rz.iconN)rr�isfiler^rPr)rZ	icon_file�datar
r
r�getIconDataFs
ryccs�xXtD]@}tjj||d�}tjj|�r(Ptjj||d�}tjj|�rPqWtrVt|��dSt�}|j|�|Vx(|j	�D]}xt
|�D]
}|Vq�WqzWdS)zjGenerator yielding IconTheme objects for a specified theme and any themes
    from which it inherits.
    zindex.themez
index.desktopN)rfrrrmrwrrrrrr`)Z	themenamerZ
theme_filerrZsubtheme�tr
r
rr`Us 

r`cCs@|jtkrVgt|j<t|jjtj�tjjd�t|jjd�t|jjt��ttj�t|jd�tjjk�rHtj�t|jd<x�|j	�D]�}x�t
D]�}tjj
||j|�}|t|jdks�t|jdtjjtjj
||j��kr�|dkr�tjj|�r�|tj|�gt|jd|<tjjtjj
||j��t|jd<q�Wq�Wxnt|jdj�D]X\}}t|d||��r\x:|D]2}|d||dk�r|tjj
||d|�S�q|W�q\Wd}	d}
xzt|jdj�D]d\}}t|d||�}||	k�r�x>|D]6}|d||dk�r�tjj
||d|�}
|}	�q�W�q�W|
S)NrZrr6�r[�l)r�theme_cacher:rcrFr\rd�dictrhr rfrrrmrirjrkrl�DirectoryMatchesSize�DirectorySizeDistance)rprqrrrs�subdirr*rrtruZminimal_sizeZclosest_filenameZdistancer
r
rrels>

 $
&*
"

recCs�|j|�}|j|�}|j|�}|j|�}|j|�}|dkrB||kS|dkrb||ko\|kSS|dkr�|||ko�||kSSdS)NrDZ	Scaleabler/)r1r+r7r5r3)r��iconsizerrr.r'r/r4r2r
r
rr�s




rcCs�|j|�}|j|�}|j|�}|j|�}|j|�}|dkrFt||�S|dkrr||kr^||S||krn||SdS|dkr�|||kr�||S|||kr�||SdSdS)NrDrErr/)r1r+r7r5r3�abs)r�r�rrr.r'r/r4r2r
r
rr��s&




r�) rOrrcr@Zxdg.IniFilerrZxdg.BaseDirectoryrZxdg.ExceptionsrrZ
xdg.ConfigrFrrPrfZbasedirr:rrm�
expanduserr_r}rgrbroryr`rerr�r
r
r
r�<module>s0#7
R'