B
    nôb\*  ã               @   s¬  d Z ddlZddlmZ ddlZddlmZ ddlm	Z	 e	dƒdfe	dƒdfe	d	ƒd
fe	dƒdfe	dƒdfe	dƒdfe	dƒdfe	dƒdfe	dƒdfe	dƒdfe	dƒdfe	dƒdfe	dƒdfe	dƒd fe	d!ƒd"fe	d#ƒd$fe	d%ƒd&fe	d'ƒd(fe	d)ƒd*fe	d+ƒd,fe	d-ƒd.fe	d/ƒd0fe	d1ƒd2fe	d3ƒd4fgZ
d5e	d6ƒ Zeejj ¡ ƒZd7d8„ Zd9d:„ Zd;d<„ Zd=d>„ Zd?d@„ ZdAdB„ ZdCdD„ ZdEdF„ ZdGdH„ ZdIdJ„ ZdKdL„ ZdMdN„ ZdS )Oz*
Utilities to define configuration values
é    N)Úiofuncs)Ú_zPython files)z.pyz.pywz.ipyzCython/Pyrex files)z.pyxz.pxdz.pxizC files)z.cz.hz	C++ files)z.ccz.cppz.cxxz.hz.hhz.hppz.hxxzOpenCL files)z.clzFortran files)z.fz.forz.f77z.f90z.f95z.f2kz	IDL files)z.prozMATLAB files)z.mzJulia files)z.jlz
Yaml files)z.yamlz.ymlzPatch and diff files)z.patchz.diffz.rejzBatch files)z.batz.cmdz
Text files)z.txtzreStructuredText files)z.txtz.rstzgettext files)z.poz.potz
NSIS files)z.nsiz.nshzWeb page files)z.scssz.cssz.htmz.htmlz	XML files)z.xmlzJavascript files)z.jsz
Json files)z.jsonzIPython notebooks)z.ipynbzEnaml files)z.enamlzConfiguration files)z.propertiesz.sessionz.iniz.infz.regz.cfgz.desktopzMarkdown files)z.mdz%s (*)z	All filesc             C   s   d| d  |¡f S )Nz%s (*%s)z *)Újoin)ÚtitleÚftypes© r   ú2lib/python3.7/site-packages/spyder/config/utils.pyÚ_create_filter>   s    r	   c             C   s:   g }x | D ]\}}|  t||ƒ¡ q
W |  t¡ d |¡S )Nz;;)Úappendr	   Ú
ALL_FILTERr   )Ú	filetypesÚfiltersr   r   r   r   r   Ú_get_filtersB   s
    
r   c             C   s&   g }x| D ]\}}|t |ƒ7 }q
W |S )N)Úlist)r   Z
ftype_listZ_titler   r   r   r   Ú_get_extensionsJ   s    r   c              C   s|   ddl m}  g }xZ|  ¡ D ]N}|d }|rdd„ |D ƒ}dd„ |D ƒ}dd„ |D ƒ}|t|ƒ t|ƒ }qW ttt|ƒƒƒS )z5Return all file type extensions supported by Pygmentsr   Né   c             S   s   g | ]}|  d ¡s|‘qS )Ú*)Ú
startswith)Ú.0Úler   r   r   ú
<listcomp>]   s    z,_get_pygments_extensions.<locals>.<listcomp>c             S   s"   g | ]}|  d ¡r|dd… ‘qS )r   é   N)r   )r   r   r   r   r   r   a   s    c             S   s   g | ]}|  d ¡s|‘qS )z_*)Úendswith)r   r   r   r   r   r   b   s    )Zpygments.lexersÚlexersZget_all_lexersr   ÚsortedÚset)r   Ú
extensionsZlxZ
lexer_extsÚ
other_extsr   r   r   Ú_get_pygments_extensionsQ   s    r   c             C   s4   |st S x&| D ]\}}||krt||ƒS qW dS dS )z*Return filter associated to file extensionÚ N)r   r	   )r   Úextr   r   r   r   r   Ú
get_filterk   s    r!   c                 s’   t jdkrg } n$y
tƒ } W n tk
r2   g } Y nX dddddddd	d
ddddddddddg‰ ‡ fdd„| D ƒ}tˆ | ƒ}tdƒ|f}|gt S )z*Get all file types supported by the EditorÚntz.pyz.Rz.jlz.ipynbz.mdz.pywz.pyxz.cz.cppz.jsonz.datz.csvz.tsvz.txtz.iniz.htmlz.jsz.hz.batc                s   g | ]}|ˆ kr|‘qS r   r   )r   r    )Úfavorite_extsr   r   r   ˆ   s    z&get_edit_filetypes.<locals>.<listcomp>zSupported text files)ÚosÚnamer   Ú	ExceptionÚtupler   ÚEDIT_FILETYPES)Zsupported_extsr   Zall_extsZtext_filetypesr   )r#   r   Úget_edit_filetypesv   s    


r)   c              C   s   t ƒ } t| ƒS )zS
    Return filters associated with the file types
    supported by the Editor
    )r)   r   )Úedit_filetypesr   r   r   Úget_edit_filtersŽ   s    r+   c              C   s   t ƒ } t| ƒdg S )zV
    Return extensions associated with the file types
    supported by the Editor
    r   )r)   r   )r*   r   r   r   Úget_edit_extensions—   s    r,   c              C   s<   t j d¡r4t d¡r4tdƒ ¡ } d| kr.dS dS ndS dS )z8Detect if we are running in an Ubuntu-based distributionÚlinuxz/etc/lsb-releaseZUbuntuTFN)ÚsysÚplatformr   ÚospÚisfileÚopenÚread)Zrelease_infor   r   r   Ú	is_ubuntu£   s    r4   c                 sV   t j d¡rNtj dd¡‰ ˆ rHdddg} t‡ fdd„| D ƒƒrBd	S d
S qRd
S nd
S dS )z/Detect if we are running in a Gtk-based desktopr-   ÚXDG_CURRENT_DESKTOPr   ZUnityZGNOMEZXFCEc                s   g | ]}ˆ   |¡‘qS r   )r   )r   Úd)Úxdg_desktopr   r   r   µ   s    z"is_gtk_desktop.<locals>.<listcomp>TFN)r.   r/   r   r$   ÚenvironÚgetÚany)Zgtk_desktopsr   )r7   r   Úis_gtk_desktop¯   s    
r;   c              C   s>   t j d¡r6tj dd¡} | r0d| kr*dS dS q:dS ndS dS )z)Detect if we are running in a KDE desktopr-   r5   r   ZKDETFN)r.   r/   r   r$   r8   r9   )r7   r   r   r   Úis_kde_desktop¿   s    r<   c              C   s   t  t  tjd¡¡} | S )zn
    Detect if we are running under Anaconda.

    Taken from https://stackoverflow.com/a/47610844/438386
    z
conda-meta)r0   Úexistsr   r.   Úprefix)Zis_condar   r   r   Úis_anacondaÎ   s    r?   )Ú__doc__r$   Úos.pathÚpathr0   r.   Zspyder_kernels.utilsr   Zspyder.config.baser   r(   r   r   ZiofunctionsZload_extensionsÚvaluesZ
IMPORT_EXTr	   r   r   r   r!   r)   r+   r,   r4   r;   r<   r?   r   r   r   r   Ú<module>	   sV   






















	