3 Õì2aú(ã @s¶ddlZddlmZddlZddlmZmZmZddl m Z ddddd d d d d dddh Z dZ dZ ejdƒfdd„Zdd„ZGdd„dƒZejƒedkr²ddlmZedddd�dS) éN)Úmaxsize)ÚTOPÚXÚSUNKEN)ÚidleConfÚclassÚdefÚelifÚelseÚexceptÚfinallyÚforÚifÚtryÚwhileÚwithÚasyncédièz ^(\s*)(\w*)cCs|j|ƒjƒS)N)ÚmatchÚgroups)ÚcodelineÚc©rú0/opt/alt/python36/lib64/python3.6/codecontext.pyÚget_spaces_firstwordsrcCsFt|ƒ\}}t|ƒ}t|ƒ|ks,||dkr0t}|tko:|}|||fS)Nú#)rÚlenÚINFINITYÚ BLOCKOPENERS)rZspacesZ firstwordÚindentÚopenerrrrÚ get_line_infos   r!c@s^eZdZdd„Zedd„ƒZdd„Zddd „Zdd d „Zdd„Z ddd„Z dd„Z dd„Z dS)Ú CodeContextcCs^||_|j|_|jd|_tj|_d|_d|_dg|_|jj t |j ƒ|_ |jj t |jƒ|_dS)NÚfontérÚFéÿÿÿÿ)rr&r%F)ÚeditwinÚtextÚtextfontr"ÚcolorsÚ contextcolorsÚcontextÚ topvisibleÚinfoÚafterÚUPDATEINTERVALÚ timer_eventÚt1ÚCONFIGUPDATEINTERVALÚconfig_timer_eventÚt2)Úselfr'rrrÚ__init__0s zCodeContext.__init__cCs,tjdddddd�|_tjtjƒdƒ|_dS)NÚ extensionsr"ZmaxlinesÚinté)ÚtypeÚdefaultr,)rZ GetOptionÚ context_depthZ GetHighlightZ CurrentThemer*)ÚclsrrrÚreloadMszCodeContext.reloadc Cs2y |jj|jƒ|jj|jƒWn YnXdS)N)r(Z after_cancelr2r5)r6rrrÚ__del__Ts zCodeContext.__del__Nc Csà|jsÌ|jj|jjf}d}d}xP|D]H}||jj|jƒdƒ7}||jj|jdƒƒ7}||jj|jdƒƒ7}q$Wtj |jj |j |j d|j ddd||t dd� |_|jjd |jƒ|jjttd |jjd �n|jjƒd|_d S) NrÚpadxÚborderÚ backgroundÚ foregroundr$Údisabled) r#ÚbgZfgÚheightÚwidthrArBZreliefÚstatezF)ZsideÚfillÚexpandZbeforeÚbreak)r,r'r(Z text_frameZtkZgetintZ pack_infoZcgetÚtkinterZTextÚtopr)r+rZbindÚ jumptolineÚpackrrZdestroy)r6ÚeventZwidgetsrArBZwidgetrrrÚtoggle_code_context_event\s*    z%CodeContext.toggle_code_context_eventr$rc Cs¦g}t}xŒt||ddƒD]x}|jj|›d�|›d�ƒ}t|ƒ\}} } ||kr|}| dkrb|d7}| rˆ||krˆ||krˆ|j||| | fƒ||krPqW|jƒ||fS)Nr$z.0z.endr r r&)r r )rÚranger(Úgetr!ÚappendÚreverse) r6Únew_topvisibleZstoplineÚ stopindentÚlinesÚ lastindentZlinenumrrr(r rrrÚ get_context‚s zCodeContext.get_contextcCsZt|jjdƒjdƒdƒ}|j|kr(dS|j|krf|j||jƒ\}}x€|jdd|krb|jd=qFWn`|jddd}x,|jdd|kr¤|jdd}|jd=qzW|j||jddd|ƒ\}}|jj|ƒ||_dd„|j|j d…Dƒ}|d�rdnd}t |ƒ||j d<d|j d <|j j d d ƒ|j j d d j ||d…ƒƒd |j d <dS)Nz@0,0Ú.rr$cSsg|] }|d‘qS)ér)Ú.0Úxrrrú ¿sz3CodeContext.update_code_context..rGZnormalrIz1.0ÚendÚ rEr&r&r&r&r&r&r&)r9r(ÚindexÚsplitr-r[r.Úextendr=rr,ÚdeleteÚinsertÚjoin)r6rWrYrZrXZcontext_stringsZ showfirstrrrÚupdate_code_context s0       zCodeContext.update_code_contextcCspt|jƒ}|dkrd}n:tt|jjdƒƒƒ}td||jƒd}|j||d}|jj |›d�ƒ|j ƒdS)Nr$rgrz.0) rr.r9Úfloatr,rcÚmaxr=r(Zyviewri)r6rQrYZnewtopZ contextlineÚoffsetrrrrOÈs zCodeContext.jumptolinecCs$|jr|jƒ|jjt|jƒ|_dS)N)r,rir(r/r0r1r2)r6rrrr1ÖszCodeContext.timer_eventcCsv|jd}|jr`||jks&tj|jkr`||_tj|_|j|jd<|jd|jd<|jd|jd<|jjt|jƒ|_ dS)Nr#rCrD) r(r,r)r"r*r+r/r3r4r5)r6Z newtextfontrrrr4Üs   zCodeContext.config_timer_event)N)r$r)N) Ú__name__Ú __module__Ú __qualname__r7Ú classmethodr?r@rRr[rirOr1r4rrrrr"-s  & ( r"Ú__main__)Úmainz"idlelib.idle_test.test_codecontextr]F)Ú verbosityÚexit)ÚreÚsysrrrMZtkinter.constantsrrrZidlelib.configrrr0r3Úcompilerr!r"r?rmZunittestrrrrrrÚ s   =