B YI~d>,ã @sªddlZddlmZddlZddlmZmZddlm Z ddddd d d d d dddh Z e  d¡fdd„Z dd„Z Gdd„dƒZe ¡edkr¦ddlmZedddd�dS)éN)Úmaxsize)ÚNSEWÚSUNKEN)ÚidleConfÚclassÚdefÚifÚelifÚelseÚwhileÚforÚtryÚexceptÚfinallyÚwithÚasyncz ^(\s*)(\w*)cCs| |¡ ¡S)N)ÚmatchÚgroups)ÚcodelineÚc©rú8/opt/alt/python37/lib64/python3.7/idlelib/codecontext.pyÚget_spaces_firstwordsrcCsFt|ƒ\}}t|ƒ}t|ƒ|ks,||dkr0t}|tko:|}|||fS)Nú#)rÚlenÚINFINITYÚ BLOCKOPENERS)rZspacesZ firstwordÚindentÚopenerrrrÚ get_line_infos   rc@sreZdZdZdd„Zdd„Zedd„ƒZdd „Zdd d „Z ddd„Z dd„Z ddd„Z dd„Z dd„Zdd„Zd S)Ú CodeContextédcCs||_|j|_| ¡dS)N)ÚeditwinÚtextÚ_reset)Úselfr"rrrÚ__init__.szCodeContext.__init__cCs$d|_d|_d|_d|_dg|_dS)Né)réÿÿÿÿÚF)ÚcontextÚcell00Út1Ú topvisibleÚinfo)r%rrrr$Cs zCodeContext._resetcCstjdddddd�|_dS)NÚ extensionsr ZmaxlinesÚinté)ÚtypeÚdefault)rZ GetOptionÚ context_depth)ÚclsrrrÚreloadJszCodeContext.reloadcCs>|jdk r:y|j |j¡Wntjk r2YnXd|_dS)N)r,r#Ú after_cancelÚtkinterÚTclError)r%rrrÚ__del__Qs  zCodeContext.__del__Nc Cs~|jdk�r(|jj|jjf}d}d}xh|D]`}||jjkrB| ¡n| ¡}||j |d¡7}||j | d¡¡7}||j | d¡¡7}q*Wt j |jjddd||t dd�}|_|  ¡|  ¡| d|j¡| ¡|jddtd�t t ¡d ¡}t j|jj|d d �|_|jjddtd�d } n:|j ¡d|_|j ¡d|_|j |j¡| ¡d } |jjdd| ›d�d�dS)NrÚpadxÚborderr'Údisabled)ÚheightÚwidthZhighlightthicknessr;r<ZreliefÚstatez)ÚrowÚcolumnZstickyÚ linenumberÚ background)ÚbgZHideZShowÚoptionsz* Code Contextz Code Context)ZmenuÚindexZlabelÚbreak)r*r"r#Z text_frameZ grid_infoZ pack_infoZtkZgetintZcgetr8ZTextrÚ update_fontÚupdate_highlight_colorsZbindÚ jumptolineÚ timer_eventZgridrrÚ GetHighlightÚ CurrentThemeZFramer+Zdestroyr7r,r$Zupdate_menu_label) r%ÚeventZwidgetsr;r<Zwidgetr.r*Úline_number_colorsZ menu_statusrrrÚtoggle_code_context_eventZsJ       z%CodeContext.toggle_code_context_eventr'rc Cs¦g}t}xŒt||ddƒD]x}|j |›d�|›d�¡}t|ƒ\}} } ||kr|}| dkrb|d7}| rˆ||krˆ||krˆ| ||| | f¡||krPqW| ¡||fS)Nr'r(z.0z.end)r r )rÚranger#ÚgetrÚappendÚreverse) r%Únew_topvisibleZstoplineÚ stopindentÚlinesÚ lastindentZlinenumrrr#rrrrÚ get_context’s zCodeContext.get_contextcCsJ|j d¡}|j|krdS|j|krX| ||j¡\}}x€|jdd|krT|jd=q8Wn`|jddd}x,|jdd|kr–|jdd}|jd=qlW| ||jddd|¡\}}|j |¡||_dd„|j|j d…Dƒ}|dròdnd}t|ƒ||jd<d|jd <|j  d d ¡|j  d d   ||d…¡¡d |jd <dS)Nz@0,0r(r'rcSsg|] }|d‘qS)ér)Ú.0Úxrrrú Ïsz3CodeContext.update_code_context..r>Znormalr@z1.0ÚendÚ r=) r"Z getlinenor-rZr.Úextendr4rr*ÚdeleteÚinsertÚjoin)r%rVrXrYrWZcontext_stringsZ showfirstrrrÚupdate_code_context°s0        zCodeContext.update_code_contextcCs˜y|j d¡Wn‚tjk r’t|jƒ}|dkr:d}n:tt|j d¡ƒƒ}td||j ƒd}|j||d}|j   |›d�¡|  ¡YnXdS)Nz sel.firstr'rcrz.0) r*rGr8r9rr.r0ÚfloatÚmaxr4r#Zyviewre)r%rOrXZnewtopZ contextlineÚoffsetrrrrKØs zCodeContext.jumptolinecCs*|jdk r&| ¡|j |j|j¡|_dS)N)r*rer#ZafterÚUPDATEINTERVALrLr,)r%rrrrLís zCodeContext.timer_eventcCs(|jdk r$t |jdd¡}||jd<dS)NÚmainZ EditorWindowÚfont)r*rZGetFontr#)r%rkrrrrIós zCodeContext.update_fontcCsf|jdk r6t t ¡d¡}|d|jd<|d|jd<|jdk rbt t ¡d¡}|jj|dd�dS)Nr*rDZ foregroundrC)rE)r*rrMrNr+Zconfig)r%ZcolorsrPrrrrJøs   z#CodeContext.update_highlight_colors)N)r'r)N)Ú__name__Ú __module__Ú __qualname__rir&r$Ú classmethodr6r:rQrZrerKrLrIrJrrrrr *s  8 ( r Ú__main__)rjz"idlelib.idle_test.test_codecontextr[F)Ú verbosityÚexit)ÚreÚsysrrr8Ztkinter.constantsrrZidlelib.configrrÚcompilerrr r6rlZunittestrjrrrrÚ s  [