
W                  @   s   d  d l  Z  d  d l m Z m Z m Z m Z m Z d  d l Z d  d l m	 Z
 d  d l m Z d d d d d	 d
 d d d d d h Z d Z d Z e j d  d d  Z Gd d   d  Z d S)    N)TOPLEFTXWSUNKEN)maxsize)idleConfclassdefelifelseexceptfinallyforiftrywhilewithd   i  z^(\s*)(\w*)c             C   s   | j  |   j   S)N)matchgroups)sc r   @/afs/.cs/s/python-3.5.2/amd64_ubu14/lib/python3.5/CodeContext.py<lambda>   s    r   c               @   s   e  Z d  Z d d  g f g Z e j d d  d d d d d	 Z e j d d  d
 d d d d Z e j d d  d d d d d Z d d   Z	 d d d  Z
 d d   Z d d d d  Z d d   Z d d   Z d d   Z d S)!CodeContextoptions!Code Conte_xt<<toggle-code-context>>
extensionsZnumlinestypeintdefault   bgcolorstrZ	LightGrayfgcolorZBlackc             C   s   | |  _  | j |  _ |  j d |  _ d  |  _ d g |  _ d |  _ t j d d d d	 d
 d d } | r |  j   |  j  j	 d d  |  j j
 t |  j  |  j j
 t |  j  d  S)Nfontr       Fr    r   visibler!   boolr#   z<<toggle-code-context>>T)r   r-   r*   F)editwintexttextfontlabelinfo
topvisibler   	GetOptiontoggle_code_context_eventZsetvarafterUPDATEINTERVALtimer_eventFONTUPDATEINTERVALfont_timer_event)selfr.   r+   r   r   r   __init__"   s    			
zCodeContext.__init__Nc             C   s  |  j  sC|  j j |  j j f } d } xM | D]E } | | j j | j   d  7} | | j j | j d   7} q. Wd } x- | D]% } | | j j | j d   7} q Wt j	 |  j j
 d d |  j d d t d t d	 |  j d
 |  j d |  j d d d | d | d t 
|  _  |  j  j d t d t d d d |  j j  n |  j  j   d  |  _  t j d d d t |  j  d  k	   t j   d  S)Nr   padxborderr/   
r)   ZanchorZjustifyr(   bgZfgwidthZreliefZsidefillexpandFZbeforer    r   r+   )r1   r.   r/   Z
text_frameZtkZgetintZ	pack_infoZcgettkinterZLabeltopcontext_depthr   r   r0   r%   r'   r   packr   r   Zdestroyr   Z	SetOptionr&   ZSaveUserCfgFiles)r;   eventZwidgetsr=   Zwidgetr>   r   r   r   r5   7   s0    	 ##		z%CodeContext.toggle_code_context_eventc             C   s   |  j  j d | d |  } t |  \ } } | t k o> | } t |  t |  k so | t |  d k rx t } n t |  } | | | f S)Nz%d.0z%d.end#)r/   getgetspacesfirstwordBLOCKOPENERSlenINFINITY)r;   linenumr/   ZspacesZ	firstwordopenerindentr   r   r   get_line_info[   s    .	zCodeContext.get_line_infor)   r   c       
      C   s   g  } t  } x t | | d d  D] } |  j |  \ } } }	 | | k  r# | } |	 d k ri | d 7} |	 r | | k  r | | k r | j | | | |	 f  | | k r# Pq# W| j   | | f S)Nr)   r   r   r-   )zelsezelif)rN   rangerR   appendreverse)
r;   new_topvisibleZstopline
stopindentlines
lastindentrO   rQ   r/   rP   r   r   r   get_contextk   s    

zCodeContext.get_contextc             C   s  t  |  j j d  j d  d  } |  j | k r8 d  S|  j | k  r |  j | |  j  \ } } x |  j d
 d | k r |  j d =qe Wn |  j | k r|  j d d d } x6 |  j d d | k r |  j d d } |  j d =q W|  j | |  j d d d |  \ } } |  j j |  | |  _ d g t d |  j	 t
 |  j   } | d d   |  j |  j	 d   D 7} d j |  |  j d	 <d  S)Nz@0,0.r   r)   r*   c             S   s   g  |  ] } | d   q S)   r   ).0xr   r   r   
<listcomp>   s   	 z3CodeContext.update_code_context.<locals>.<listcomp>r?   r/   r-   r-   r-   r-   r-   r-   r-   )r"   r/   indexsplitr3   rZ   r2   extendmaxrF   rM   joinr1   )r;   rV   rX   rY   rW   Zcontext_stringsr   r   r   update_code_context   s*    %			&(zCodeContext.update_code_contextc             C   s-   |  j  r |  j   |  j j t |  j  d  S)N)r1   re   r/   r6   r7   r8   )r;   r   r   r   r8      s    	
zCodeContext.timer_eventc             C   sX   |  j  d } |  j r> | |  j k r> | |  _ |  j |  j d <|  j  j t |  j  d  S)Nr(   )r/   r1   r0   r6   r9   r:   )r;   Znewtextfontr   r   r   r:      s
    	zCodeContext.font_timer_event)r   r   )__name__
__module____qualname__Zmenudefsr   r4   rF   r%   r'   r<   r5   rR   rZ   re   r8   r:   r   r   r   r   r      s   $ r   )rD   Ztkinter.constantsr   r   r   r   r   resysr   rN   Zidlelib.configHandlerr   rL   r7   r9   compilerK   r   r   r   r   r   <module>   s   (