B
    nb\+                 @   s  d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ dd	lmZ ed
dZdd Zdd Zi Zd,ddZd-ddZdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Z d.d%d&Z!d/d'd(Z"xej#D ]Z$e"e$d)d*  qW d+S )0a  
Spyder GUI-related configuration management
(for non-GUI configuration, see spyder/config/base.py)

Important note regarding shortcuts:
    For compatibility with QWERTZ keyboards, one must avoid using the following
    shortcuts:
        Ctrl + Alt + Q, W, F, G, Y, X, C, V, B, N
    )
namedtuple)Qt)QFontQFontDatabaseQKeySequence)	QShortcut)CONF)	NoDefault)to_text_string)syntaxhighlightersShortcutdatac                s    fddt   D S )zCheck if font is installedc                s   g | ]}t | kr|qS  )r
   ).0Zfam)fontr   0lib/python3.7/site-packages/spyder/config/gui.py
<listcomp>'   s    z%font_is_installed.<locals>.<listcomp>)r   families)r   r   )r   r   font_is_installed%   s    r   c             C   sD   t | ts| g} x.| D ]}t|r|S qW td|   t  S dS )z5Return the first installed font family in family listz5Warning: None of the following fonts is installed: %rN)
isinstancelistr   printr   family)r   r   r   r   r   
get_family+   s    

r   mainr   c       	      C   s   t | |f}|dkrt| |d d}|dkr6t S t|}tj}t| |d d}t| |d drntj}t| |d d| }t|||}|| |t | |f< t| |d d| }|| |S )z<Get console font properties depending on OS and user optionsNz/familyz/italicFz/boldz/size	   )	
FONT_CACHEgetr   r   r   ZNormalZBoldZ	setItalicZsetPointSize)	sectionoptionZfont_size_deltar   r   r   Zweightitalicsizer   r   r   get_font9   s"    

r"   c             C   sx   t ||d t|   t ||d t|   t ||d t|   t ||d t|   | t	||f< dS )zSet fontz/familyz/sizez/italicz/boldN)
r   setr
   r   floatZ	pointSizeintr    Zboldr   )r   r   r   r   r   r   set_fontT   s
    r&   c             C   s   t dd| |f S )z+Get keyboard shortcut (key sequence string)	shortcutsz%s/%s)r   r   )contextnamer   r   r   get_shortcut]   s    r*   c             C   s   t dd| |f | dS )z+Set keyboard shortcut (key sequence string)r'   z%s/%sN)r   r#   )r(   r)   keystrr   r   r   set_shortcutb   s    r,   c             C   s    t t| ||}|tj |S )z
    DEPRECATED: This function will be removed in Spyder 4.0

    Define a fixed shortcut according to a keysequence string
    )r   r   
setContextr   WidgetWithChildrenShortcut)r+   parentactionscr   r   r   fixed_shortcutg   s    r2   c             C   s:   t ||}tt||| }|tj t|||fd}|S )z
    Create a Shortcut namedtuple for a widget
    
    The data contained in this tuple will be registered in
    our shortcuts preferences page
    )r   )r*   r   r   r-   r   r.   r   )r0   r(   r)   r/   r+   Zqscr1   r   r   r   config_shortcutr   s
    
r3   c              c   s:   x4t dD ]&} | dd\}}||t||fV  qW dS )zIterate over keyboard shortcutsr'   /   N)r   Zoptionssplitr*   )r   r(   r)   r   r   r   iter_shortcuts   s    r7   c               C   s   t jdd dS )z*Reset keyboard shortcuts to default valuesr'   )r   N)r   Zreset_to_defaultsr   r   r   r   reset_shortcuts   s    r8   c             C   s0   i }x&t jD ]}tdd| |f ||< qW |S )zGet syntax color schemecolor_schemesz%s/%s)shCOLOR_SCHEME_KEYSr   r   )r)   color_schemekeyr   r   r   get_color_scheme   s    r>   Tc             C   s   d}t ddg }xPtjD ]F}d| |f }t j||dd}|dksN|sN| |krt ||||  qW |t|  t |dttt| dS )zSet syntax color schemer9   namesz%s/%sN)default)	r   r   r:   r;   r#   appendr
   sortedr   )r)   r<   replacer   r?   r=   r   valuer   r   r   set_color_scheme   s    rE   c             C   s&   | t jkstt| t | |d dS )z$Reset color scheme to default values)rC   N)r:   COLOR_SCHEME_NAMESAssertionErrorrE   r>   )r)   rC   r   r   r   set_default_color_scheme   s    rH   F)rC   N)r   r   r   )r   r   )T)T)%__doc__collectionsr   Zqtpy.QtCorer   Z
qtpy.QtGuir   r   r   Zqtpy.QtWidgetsr   Zspyder.config.mainr   Zspyder.config.userr	   Zspyder.py3compatr
   Zspyder.utilsr   r:   r   r   r   r   r"   r&   r*   r,   r2   r3   r7   r8   r>   rE   rH   rF   _namer   r   r   r   <module>   s2   


	

