B
    nôb\)  ã               @   sh   d Z ddlmZ ddlmZ ddlmZmZmZm	Z	m
Z
mZmZ ddlmZ dd„ Zdd	„ Zd
d„ ZdS )z
Style for IPython Console
é    )Úget_color_scheme)ÚStyle)ÚNameÚKeywordÚCommentÚStringÚNumberÚPunctuationÚOperator)Ú
dark_colorc             C   sŽ   dd„ }dd„ }t | ƒ} | d \}}}|}t|ƒr<d}d}nd}d	}| d
 }	d	}
d}d}|}|	}d}| ||	|
||||||||¡}|t|ƒfS )a  Returns a QSS stylesheet with Spyder color scheme settings.

    The stylesheet can contain classes for:
        Qt: QPlainTextEdit, QFrame, QWidget, etc
       Pygments: .c, .k, .o, etc. (see PygmentsHighlighter)
        IPython: .error, .in-prompt, .out-prompt, etc
    c             S   s   | rdS dS d S )NÚboldÚnormal© )Úis_boldr   r   ú9lib/python3.7/site-packages/spyder/utils/ipython/style.pyÚgive_font_weight   s    z*create_qss_style.<locals>.give_font_weightc             S   s   | rdS dS d S )NÚitalicr   r   )Ú	is_italicr   r   r   Úgive_font_style%   s    z)create_qss_style.<locals>.give_font_styler   ZnavyZdarkredZlimeZredZ
backgroundr   a  QPlainTextEdit, QTextEdit, ControlWidget {{
                                          color: {} ;
                                          background-color: {};
                                         }}
              .error {{ color: {}; }}
              .in-prompt {{ color: {}; }}
              .in-prompt-number {{ color: {}; font-weight: {}; }}
              .out-prompt {{ color: {}; }}
              .out-prompt-number {{ color: {}; font-weight: {}; }}
              .inverted {{ color: {}; background-color: {}; }}
              )r   r   Úformat)Úcolor_schemer   r   Úfon_cÚfon_fwÚfon_fsÚ
font_colorZin_prompt_colorZout_prompt_colorZbackground_colorZerror_colorZin_prompt_number_font_weightZout_prompt_number_font_weightZinverted_background_colorZinverted_font_colorZsheetZsheet_formattedr   r   r   Úcreate_qss_style   s4    	r   c       =      C   s>  dd„ }dd„ }t | ƒ}|d \}}}|}||ƒ}||ƒ}	|d \}
}}|
}||ƒ}||ƒ}|d \}}}|}||ƒ}||ƒ}|d \}}}|}||ƒ}||ƒ}|d	 \}}}|}||ƒ} ||ƒ}!|d
 \}"}#}$|"}%||#ƒ}&||$ƒ}'|d \}(})}*|(}+||)ƒ},||*ƒ}-|d \}.}/}0|.}1||/ƒ}2||0ƒ}3|	d | d | }4|-d |, d |+ }5|d | d | }6|3d |2 d |1 }7|d | d | }8|'d |& d |% }9|d | d | }:|!d |  d | };t|4 ¡ tj|5 ¡ tj|5 ¡ tj|6 ¡ tjj|7 ¡ t|8 ¡ tj|6 ¡ t	|9 ¡ t
|: ¡ t|; ¡ t|4 ¡ tj|8 ¡ i}<|<S )zX
    Create a dictionary that saves the given color scheme as a
    Pygments style.
    c             S   s   | rdS dS d S )Nr   Ú r   )r   r   r   r   r   Y   s    z.create_pygments_dict.<locals>.give_font_weightc             S   s   | rdS dS d S )Nr   r   r   )r   r   r   r   r   _   s    z-create_pygments_dict.<locals>.give_font_styler   ÚkeywordZbuiltinÚstringZnumberÚcommentZ
definitionÚinstanceú )r   r   ÚstripZClassZFunctionZBuiltinZPseudor   ZTyper   r   r   r	   r
   ZWord)=Úcolor_scheme_namer   r   r   r   r   r   r   Zfont_font_weightZfont_font_styleZkey_cZkey_fwZkey_fsZkeyword_colorZkeyword_font_weightZkeyword_font_styleZbui_cZbui_fwZbui_fsZbuiltin_colorZbuiltin_font_weightZbuiltin_font_styleZstr_cZstr_fwZstr_fsZstring_colorZstring_font_weightZstring_font_styleZnum_cZnum_fwZnum_fsZnumber_colorZnumber_font_weightZnumber_font_styleZcom_cZcom_fwZcom_fsZcomment_colorZcomment_font_weightZcomment_font_styleZdef_cZdef_fwZdef_fsZdefinition_colorZdefinition_font_weightZdefinition_font_styleZins_cZins_fwZins_fsZinstance_colorZinstance_font_weightZinstance_font_styleZ
font_tokenZdefinition_tokenZbuiltin_tokenZinstance_tokenZkeyword_tokenÚcomment_tokenZstring_tokenZnumber_tokenZsyntax_style_dicr   r   r   Úcreate_pygments_dictS   s|    



r%   c                s   G ‡ fdd„dt ƒ}|S )z:Create a Pygments Style class with the given color scheme.c                   s   e Zd ZdZe” ƒZdS )z&create_style_class.<locals>.StyleClassr   N)Ú__name__Ú
__module__Ú__qualname__Zdefault_styler%   Zstylesr   )r#   r   r   Ú
StyleClass«   s   r)   )r   )r#   r)   r   )r#   r   Úcreate_style_class¨   s    r*   N)Ú__doc__Zspyder.config.guir   Zpygments.styler   Zpygments.tokenr   r   r   r   r   r	   r
   Zqtconsole.stylesr   r   r%   r*   r   r   r   r   Ú<module>	   s   $=U