B
    b¹_m*  ã               @   s  d Z dZddlZddlmZ ddlZddlZddlZddlZddlm	Z	 ddl
mZ dejkrzd	d
dddddddddœ
Zntdejkr²dejks˜dejkr²ddddddddddœ	Zn<dejkrÖddd dd!dddddœ	Znd"d#d$dd!dddddœ	ZG d%d&„ d&ejƒZdS )'zEditWindow class.z(Patrick K. O'Brien <pobrien@orbtech.com>é    N)Ústcé   )Ú
dispatcher)ÚVERSIONZwxMSWzTimes New RomanzCourier NewZArialzLucida ConsolezComic Sans MSé
   é   z#FFFFFFz#FFFFB8z#404040)
ÚtimesÚmonoÚhelvZlucidaÚotherÚsizeÚlnsizeÚbackcolÚ	calltipbgÚ	calltipfgZwxGTKZgtk2Zgtk3ZSerifZ	MonospaceZSansznew century schoolbooké	   )	r   r	   r
   r   r   r   r   r   r   ZwxMaczLucida GrandeZMonacoZGenevaé   ZTimesZCourierZ	Helveticac               @   s    e Zd ZdZdejejejejB f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„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd"d d!„ZdS )#Ú
EditWindowz#EditWindow based on StyledTextCtrl.éÿÿÿÿc             C   sb   t j | |||||¡ |  ¡  |  t j| j¡ tj| j	dd tj| j	dd tj| j	dd dS )zCreate EditWindow instance.ÚFontIncrease)ÚreceiverÚsignalÚFontDecreaseÚFontDefaultN)
r   ÚStyledTextCtrlÚ__init__Ú_EditWindow__configZBindZEVT_STC_UPDATEUIÚ
OnUpdateUIr   ZconnectÚ
_fontsizer)ÚselfÚparentÚidÚposr   Zstyle© r#   ú/lib/python3.7/site-packages/wx/py/editwindow.pyr   H   s    zEditWindow.__init__c             C   s~   | s8t j| jdd t j| jdd t j| jdd dS |  ¡ }|dkrR|d7 }n|dkrd|d8 }n|dkrpd}|  |¡ dS )zReceiver for Font* signals.r   )r   r   r   r   Nr   r   )r   Z
disconnectr   ZGetZoomZSetZoom)r   r   r   r#   r#   r$   r   R   s    

zEditWindow._fontsizerc             C   sò   |   d¡ |  tj¡ |  dd tj¡¡ |  t	¡ |  
d¡ |  d¡ |  d¡ d| _d| _d| _d| _d| _|  | j¡ d| _|  | j¡ |  d¡ d| _d| _|  t	d ¡ |  t	d ¡ |  d¡ y|  d¡ W n tk
rì   Y nX d S )	NFr   ú é   Tz .,;:([)]}'"\<>%^&+-=*/|`r   r   )ÚsetDisplayLineNumbersZSetLexerr   ZSTC_LEX_PYTHONZSetKeyWordsÚjoinÚkeywordÚkwlistÚ	setStylesÚFACESZSetViewWhiteSpaceZSetTabWidthZ
SetUseTabsZautoCompleteZautoCompleteIncludeMagicZautoCompleteIncludeSingleZautoCompleteIncludeDoubleZautoCompleteCaseInsensitiveZAutoCompSetIgnoreCaseZautoCompleteAutoHideZAutoCompSetAutoHideZAutoCompStopsZautoCallTipZcallTipInsertZCallTipSetBackgroundZCallTipSetForegroundZSetWrapModeZSetEndAtLastLineÚAttributeError)r   r#   r#   r$   Z__configc   s2    






zEditWindow.__configc             C   sB   || _ |r&|  dtj¡ |  dd¡ n|  dd¡ |  dd¡ d S )Nr   é(   r   r   )ZlineNumbersZSetMarginTyper   ZSTC_MARGIN_NUMBERZSetMarginWidth)r   Ústater#   r#   r$   r'   ‚   s    z EditWindow.setDisplayLineNumbersc             C   sb  |   tjd| ¡ |  ¡  |  dtj tj¡¡ |  	dtj tj
¡¡ |   tjdt ¡ |   tjd| ¡ |   tjd¡ |   tjd¡ |   tjd| ¡ |   tjd| ¡ |   tjd¡ |   tjd	| ¡ |   tjd	| ¡ |   tjd
¡ |   tjd¡ |   tjd¡ |   tjd¡ |   tjd¡ |   tjd¡ |   tjd¡ |   tjd¡ |   tjd| ¡ dS )z2Configure font size, typeface and color for lexer.z,face:%(mono)s,size:%(size)d,back:%(backcol)sTz*back:#C0C0C0,face:%(mono)s,size:%(lnsize)dzface:%(mono)szfore:#0000FF,back:#FFFF88zfore:#FF0000,back:#FFFF88zfore:#007F00,face:%(mono)sÚ zfore:#7F007F,face:%(mono)szfore:#00007F,boldzfore:#7F0000zfore:#000033,back:#FFFFE8zfore:#0000FF,boldzfore:#007F7F,boldzfore:#7F7F7Fz1fore:#000000,face:%(mono)s,back:#E0C0E0,eolfilledN)ZStyleSetSpecr   ZSTC_STYLE_DEFAULTZStyleClearAllZSetSelForegroundÚwxZSystemSettingsZ	GetColourZSYS_COLOUR_HIGHLIGHTTEXTZSetSelBackgroundZSYS_COLOUR_HIGHLIGHTZSTC_STYLE_LINENUMBERr,   ZSTC_STYLE_CONTROLCHARZSTC_STYLE_BRACELIGHTZSTC_STYLE_BRACEBADZSTC_P_DEFAULTZSTC_P_COMMENTLINEZSTC_P_NUMBERZSTC_P_STRINGZSTC_P_CHARACTERZ
STC_P_WORDZSTC_P_TRIPLEZSTC_P_TRIPLEDOUBLEZSTC_P_CLASSNAMEZSTC_P_DEFNAMEÚSTC_P_OPERATORZSTC_P_IDENTIFIERZSTC_P_COMMENTBLOCKZSTC_P_STRINGEOL)r   Zfacesr#   r#   r$   r+   Œ   sT    





zEditWindow.setStylesc       	      C   sæ   |   ¡ s|  ¡ rdS d}d}d}|  ¡ }|dkrL|  |d ¡}|  |d ¡}|rnt|ƒdkrn|tjkrn|d }|dk r¨|  |¡}|  |¡}|r¨t|ƒdkr¨|tjkr¨|}|dkrº|  |¡}|dkrÖ|dkrÖ|  	|¡ n|  
||¡ dS )zCheck for matching braces.Nr   r   r   z[]{}())ZAutoCompActiveZCallTipActiveÚGetCurrentPosZ	GetCharAtZ
GetStyleAtÚchrr   r2   Z
BraceMatchZBraceBadLightZBraceHighlight)	r   ZeventZbraceAtCaretZbraceOppositeZ
charBeforeZcaretPosZstyleBeforeZ	charAfterZ
styleAfterr#   r#   r$   r   À   s.    




zEditWindow.OnUpdateUIc             C   s   |   ¡ |  ¡ kS )z2Return True if text is selected and can be copied.)ZGetSelectionStartZGetSelectionEnd)r   r#   r#   r$   ÚCanCopyâ   s    zEditWindow.CanCopyc             C   s   |   ¡ o|  ¡ S )z/Return True if text is selected and can be cut.)r5   ÚCanEdit)r   r#   r#   r$   ÚCanCutæ   s    zEditWindow.CanCutc             C   s
   |   ¡  S )z&Return True if editing should succeed.)ZGetReadOnly)r   r#   r#   r$   r6   ê   s    zEditWindow.CanEditc             C   s   t j | ¡o|  ¡ S )z&Return True if pasting should succeed.)r   r   ÚCanPaster6   )r   r#   r#   r$   r8   î   s    zEditWindow.CanPastec             C   s   |   ¡ S )N)Z	GetLength)r   r#   r#   r$   ÚGetLastPositionó   s    zEditWindow.GetLastPositionc             C   s   |   ||¡S )N)ZGetTextRange)r   ÚstartÚendr#   r#   r$   ÚGetRangeö   s    zEditWindow.GetRangec             C   s   |   ¡ |  ¡ fS )N)Z	GetAnchorr3   )r   r#   r#   r$   ÚGetSelectionù   s    zEditWindow.GetSelectionc             C   s   |   |¡}|  |¡ d S )N)ZLineFromPositionZGotoLine)r   r"   Úliner#   r#   r$   ÚShowPositionü   s    
zEditWindow.ShowPositionNc             C   sH  |  ¡ tj@  }|  ¡ tj@ dk}|  ¡ }|  d|¡ d¡}| ¡  d¡}|s^| ¡ }| ¡ }|r~|  	¡ d }| 
|d|¡}	n|  	¡ d }| ||¡}	|	dkrÎ|dkrÎ|r¾|}| 
|d|¡}	nd}| ||¡}	|	dkrþt | ddtjtjB ¡}
|
 ¡  |
 ¡  |r&|	dkrt |j¡ d S | ¡  |  |	¡ |  |	|	t|ƒ ¡ d S )Nr   zutf-8r   r   zUnable to find the search text.z
Not found!)ZGetFlagsr1   ZFR_DOWNZFR_MATCHCASEr9   r<   ÚencodeZGetFindStringÚlowerr=   ÚrfindÚfindZMessageDialogZOKZICON_INFORMATIONZ	ShowModalZDestroyZ	CallAfterZSetFocusZCloser?   ZSetSelectionÚlen)r   ZfindDataZfindDlgZbackwardZ	matchcaser;   Z
textstringZ
findstringr:   ZlocZdlgr#   r#   r$   Ú
DoFindNext  s@    

zEditWindow.DoFindNext)N)Ú__name__Ú
__module__Ú__qualname__Ú__doc__r1   ZDefaultPositionZDefaultSizeZCLIP_CHILDRENZSUNKEN_BORDERr   r   r   r'   r+   r   r5   r7   r6   r8   r9   r<   r=   r?   rE   r#   r#   r#   r$   r   D   s"   	
4"r   )rI   Ú
__author__r1   r   r)   ÚosÚsysZtimer0   r   Úversionr   ZPlatformInfor,   r   r   r#   r#   r#   r$   Ú<module>   sf   





