
    JeE                     D   d 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
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Z ej2                  edd      Zd Zd Zi ZddZddZd Z d Z!d dZ"d dZ#d Z$d Z%ejL                  D ]  Z' e#e'd        y)!a  
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)
dark_color)PYQT_VERSION)Qt)QFontQFontDatabaseQKeySequence)	QShortcut)CONF)to_text_string)programs)syntaxhighlightersShortcutdataz)QToolButton::menu-indicator{image: none;}z5.12<c                 t    t               j                         D cg c]  }t        |      | k(  r| c}S c c}w )zCheck if font is installed)r   familiesr   )fontfams     3/usr/lib/python3/dist-packages/spyder/config/gui.pyfont_is_installedr   -   s9    (?335 *Cc"D(  * * *s   5c                     t        | t              s| g} | D ]  }t        |      s|c S  t        d| z         t	               j                         S )z5Return the first installed font family in family listz5Warning: None of the following fonts is installed: %r)
isinstancelistr   printr   family)r   r   s     r   
get_familyr   3   sN    h%<  V$M  	EPQw~~    c                 .   t         j                  | ||f      }|t        j                  | |dz   d      }|
t               S t	        |      }t        j
                  }t        j                  | |dz   d      }t        j                  | |dz   d      rt        j                  }t        j                  | |dz   d      |z   }t        |||      }|j                  |       |t         | ||f<   t        j                  | |dz   d      |z   }|j                  |       |S )z<Get console font properties depending on OS and user optionsN/family/italicF/bold/size	   )	
FONT_CACHEgetr   r   r   NormalBold	setItalicsetPointSize)	sectionoptionfont_size_deltar   r   r   weightitalicsizes	            r   get_fontr1   A   s    >>7FO<=D|88GVI%5t<7NH%'6)#3U;88GVG^U3ZZFxx3oEVT6*v9=
GV_5688GVG^Q//ADdKr   c                    t        j                  ||dz   t        | j                                      t        j                  ||dz   t	        | j                                      t        j                  ||dz   t        | j                                      t        j                  ||dz   t        | j                                      d}| t        |||f<   y)z)Set font properties in our config system.r    r#   r!   r"   r   N)
r   setr   r   float	pointSizeintr/   boldr%   )r   r+   r,   r-   s       r   set_fontr8   \   s    HHWfY&t{{}(EFHHWfWneDNN,<&=>HHWfY&DKKM(:;HHWfWnc$))+&67 O59J12r   c                     t        t        |      |      }|j                  j                  |        |j	                  t
        j                         t        |||f      }|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	   	activatedconnect
setContextr   WidgetWithChildrenShortcutr   )actioncontextnamekeystrparentqscscs          r   _config_shortcutrE   j   sO     L(&
1CMM&!NN2001	Wd+	,BIr   c                     i }t         j                  D ]3  }t        j                  d| d|t         j                  |         ||<   5 |S )zGet syntax color scheme
appearance/default)shCOLOR_SCHEME_KEYSr   r&   COLOR_SCHEME_DEFAULT_VALUES)r@   color_schemekeys      r   get_color_schemerP   x   sP    L## 9 HHS!22379S9
 r   c                 |   d}t        j                  ddg       }t        j                  D ]D  }| d|}t        j                  ||d      }||s| |vs+t        j                  ||||          F |j                  t        |              t        j                  |dt        t        t	        |                         y)zSet syntax color schemerG   namesrH   NrI   )	r   r&   rK   rL   r3   appendr   sortedr   )r@   rN   replacer+   rR   rO   r,   values           r   set_color_schemerW      s    GHH\7B/E## 9 #&&$7=Gt5'8HHWfl3&78	9
 
LL%&HHWgvd3u:&678r   c                 n    | t         j                  v sJ t        | t        j                  |       |       y)z$Reset color scheme to default valuesrU   N)rK   COLOR_SCHEME_NAMESrW   rP   )r@   rU   s     r   set_default_color_schemer[      s-    2(((((T2..t4gFr   c                 @    t        |       } | d   \  }}}t        |      S )z9Check if the font color used in the color scheme is dark.normal)rP   r   )rN   
font_colorfon_fwfon_fss       r   is_dark_font_colorra      s(    #L1L!-h!7Jj!!r   c                      t        j                  dd      } t        j                  dd      }| dk(  ry| dk(  rt        |      syyy)NrG   ui_themeselecteddarkT	automaticF)r   r&   ra   )rc   rN   s     r   is_dark_interfacerg      sF    xxj1H88L*5L6	[	 !,/r   FrY   N)rG   r   r   )rG   r   )T)(__doc__collectionsr   qtconsole.stylesr   qtpyr   qtpy.QtCorer   
qtpy.QtGuir   r   r	   qtpy.QtWidgetsr
   spyder.config.managerr   spyder.py3compatr   spyder.utilsr   r   rK   r   STYLE_BUTTON_CSScheck_versionOLD_PYQTr   r   r%   r1   r8   rE   rP   rW   r[   ra   rg   rZ   _name r   r   <module>rw      s    # (   9 9 $ ' + ! 1
 j&) ?  "8!!,<*	  
6:
9G" "" 3EUE23r   