U :e, @sddlZddlmZddlmZmZmZddlm Z m Z ddl m Z dddd d d d d ddddh Z edfddZddZGdddZeedkrddlmZedddddS)N)maxsize)FrameTextTclError)NSEWSUNKEN)idleConfclassdefifelifelsewhilefortryexceptfinallywithasyncz ^(\s*)(\w*)cCs||SN)matchgroups)codelinecr8/usr/local/python38/lib/python3.8/idlelib/codecontext.pyget_spaces_firstwordsrcCsFt|\}}t|}t||ks,||dkr0t}|tko:|}|||fS)N#)rlenINFINITY BLOCKOPENERS)rZspacesZ firstwordindentopenerrrr get_line_infos   r#c@sreZdZdZddZddZeddZdd Zdd d Z dddZ ddZ dddZ ddZ ddZddZd S) CodeContextdcCs||_|j|_|dSr)editwintext_reset)selfr&rrr__init__1szCodeContext.__init__cCs$d|_d|_d|_d|_dg|_dS)N)rF)contextcell00t1 topvisibleinfor)rrrr(Fs zCodeContext._resetcCstjdddddd|_dS)N extensionsr$Zmaxlinesint)typedefault)rZ GetOption context_depth)clsrrrreloadMs zCodeContext.reloadcCs<|jdk r8z|j|jWntk r0YnXd|_dSr)r0r' after_cancelrr3rrr__del__Ts  zCodeContext.__del__Nc Csv|jdkr |jj|jjf}d}d}|D]`}||jjkr@|n|}||j|d7}||j|d7}||j|d7}q(t |jjddd||t dd}|_| | | d|j||jddtdttd }t|jj|d d |_|jjddtdd } n:|jd|_|jd|_|j|j|d } |jjdd| dddS)Nrpadxborderr+disabled)heightwidthZhighlightthicknessr>r?Zreliefstatez)rowcolumnZsticky linenumber backgroundbgZHideZShowoptionsz *ode*ontextz Code Context)ZmenuindexZlabelbreak)r.r&r'Z text_frameZ grid_infoZ pack_infoZtkZgetintZcgetrr update_fontupdate_highlight_colorsbind jumptoline timer_eventZgridrr GetHighlight CurrentThemerr/Zdestroyr<r0r(Zupdate_menu_label) r)eventZwidgetsr>r?Zwidgetr2r.line_number_colorsZ menu_statusrrrtoggle_code_context_event]s\       z%CodeContext.toggle_code_context_eventr+rc Csg}t}t||ddD]z}|j|d|d}t|\}} } ||kr|}| dkr`|d7}| r||kr||kr|||| | f||krqq|||fS)Nr+r,.0z.end)r r )rranger'getr#appendreverse) r)new_topvisibleZstopline stopindentlines lastindentZlinenumrr!r'r"rrr get_contexts zCodeContext.get_contextcCsB|jd}|j|krdS|j|krT|||j\}}|jdd|kr|jd=q6n\|jddd}|jdd|kr|jdd}|jd=qf|||jddd|\}}|j|||_dd|j|j dD}|drdnd}t|||jd<d|jd <|j d d |j d d ||dd |jd <dS)Nz@0,0r,r+rcSsg|] }|dqS)r).0xrrr sz3CodeContext.update_code_context..rAZnormalrCz1.0end r@) r&Z getlinenor1r`r2extendr9rr.deleteinsertjoin)r)r\r^r_r]Zcontext_stringsZ showfirstrrrupdate_code_contexts4       zCodeContext.update_code_contextcCsz|jdWntk rt|j}|dkr8d}n:tt|jd}td||jd}|j||d}|j |d| YnXdS)Nz sel.firstr+rirrW) r.rKrrr2r5floatmaxr9r'Zyviewrk)r)rTr^ZnewtopZ contextlineoffsetrrrrPs zCodeContext.jumptolinecCs*|jdk r&||j|j|j|_dSr)r.rkr'ZafterUPDATEINTERVALrQr0r3rrrrQs zCodeContext.timer_eventcCs(|jdk r$t|jdd}||jd<dS)NmainZ EditorWindowfont)r.rZGetFontr')r)rqrrrrMs zCodeContext.update_fontcCsf|jdk r6ttd}|d|jd<|d|jd<|jdk rbttd}|jj|dddS)Nr.rGZ foregroundrFrH)r.rrRrSr/Zconfig)r)ZcolorsrUrrrrNs   z#CodeContext.update_highlight_colors)N)r+r)N)__name__ __module__ __qualname__ror*r( classmethodr;r=rVr`rkrPrQrMrNrrrrr$-s  8 ( r$__main__)rpz"idlelib.idle_test.test_codecontextraF) verbosityexit)resysrrtkinterrrrZtkinter.constantsrrZidlelib.configrr compilerr#r$r;rrZunittestrprrrrs&  [