
    G@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j        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j&        D ]Z' e#e'd           d S )$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                 \      fdt                                                      D             S )zCheck if font is installedc                 :    g | ]}t          |          k    |S  r   ).0famfonts     1lib/python3.11/site-packages/spyder/config/gui.py
<listcomp>z%font_is_installed.<locals>.<listcomp>/   s5     * * *Cc""D(( (((    )r   families)r   s   `r   font_is_installedr   -   s=    * * * *=??3355 * * * *r   c                     t          | t                    s| g} | D ]}t          |          r|c S t          d| z             t	                                                      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   sr    h%%  <    V$$ 	MMM	 	EPQQQww~~r   
appearancer   c                 D   t                               | |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          |||          }|                    |           |t           | |f<   t          j        | |dz   d          |z   }|                    |           |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_fontr7   A   s   >>7F+,,D|8GVI%5t<<77NH%%'6)#3U;;8GVG^U33 	 ZFx33oEVT6**v(,
GV$%8GVG^Q///ADdKr   c                    t          j        ||dz   t          |                                                      t          j        ||dz   t	          |                                                      t          j        ||dz   t          |                                                      t          j        ||dz   t          |                                                      | t          ||f<   dS )zSet fontr&   r)   r'   r(   N)
r   setr   r"   float	pointSizeintr5   boldr+   )r   r1   r2   s      r   set_fontr>   \   s    HWfY&t{{}}(E(EFFFHWfWneDNN,<,<&=&=>>>HWfY&DKKMM(:(:;;;HWfWnc$))++&6&6777$(J !!!r   c                     t          t          |          ||           }|                    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	   
setContextr   WidgetWithChildrenShortcutr   )actioncontextnamekeystrparentqscscs          r   _config_shortcutrI   e   sN     L((&&
9
9CNN20111	Wd+	,	,	,BIr   c                     i }t           j        D ]1}t          j        d| d|t           j        |                   ||<   2|S )zGet syntax color schemer$   /default)shCOLOR_SCHEME_KEYSr   r,   COLOR_SCHEME_DEFAULT_VALUES)rD   color_schemekeys      r   get_color_schemerS   r   s[    L# 9 9 HttSS!2379 9 9S r   Tc                    d}t          j        ddg           }t          j        D ]D}| d|}t          j        ||d          }||s| |vrt          j        ||||                    E|                    t          |                      t          j        |dt          t          t	          |                                         dS )zSet syntax color schemer$   namesrK   NrL   )	r   r,   rN   rO   r9   appendr   sortedr    )rD   rQ   replacer1   rU   rR   r2   values           r   set_color_schemerZ   }   s    GH\7B//E# 9 9 DD##&&$777=G=t5'8'8HWfl3&7888	LL%%&&&HWgvd3u::&6&67788888r   c                 n    | t           j        v sJ t          | t          j        |           |           dS )z$Reset color scheme to default valuesrX   N)rN   COLOR_SCHEME_NAMESrZ   rS   )rD   rX   s     r   set_default_color_schemer^      s<    2(((((T2.t44gFFFFFFr   c                 V    t          |           } | d         \  }}}t          |          S )z9Check if the font color used in the color scheme is dark.normal)rS   r   )rQ   
font_colorfon_fwfon_fss       r   is_dark_font_colorrd      s.    #L11L!-h!7Jj!!!r   c                      t          j        dd          } t          j        dd          }| dk    rdS | dk    rt          |          sdS dS dS )Nr$   ui_themeselecteddarkT	automaticF)r   r,   rd   )rf   rQ   s     r   is_dark_interfacerj      s^    xj11H8L*55L6t	[	 	 !,// 	45ur   Fr\   N)r$   r   r   )r$   r   )T)(__doc__collectionsr   qtconsole.stylesr   qtpyr   qtpy.QtCorer   
qtpy.QtGuir   r   r	   qtpy.QtWidgetsr
   spyder.config.managerr   spyder.py3compatr   spyder.utilsr   r   rN   r   STYLE_BUTTON_CSScheck_versionOLD_PYQTr   r#   r+   r7   r>   rI   rS   rZ   r^   rd   rj   r]   _namer   r   r   <module>ry      s    # " " " " " ( ' ' ' ' '             9 9 9 9 9 9 9 9 9 9 $ $ $ $ $ $ ' & & & & & + + + + + + ! ! ! ! ! ! 1 1 1 1 1 1
 :j&)) ?  "8!,<<* * *	  	  	  
   6) ) ) )
 
 
  
9 
9 
9 
9G G G G" " "   " 3 3EUE222223 3r   