\dJddlZddlZddlTddlmZmZddlmZddlm Z ddl m Z Gddej Z Gd d ZGd d e ZGd dZedkrddlmZeddddSdS)N)*)Frame Scrollbar)macosx) ScrolledList)ListedToplevelc,eZdZdZdZdZdZdZdS)IdbcR||_tj|dSN)guibdbBdb__init__)selfr s !..\python\lib\idlelib\debugger.pyrz Idb.__init__s% c||r|dS||} |j||dS#t $rYdSwxYwr ) in_rpc_codeset_step_Idb__frame2messager interactionTclError)rframemessages r user_linez Idb.user_lines   E " "  MMOOO F&&u--  H % 0 0 0 0 0    DD sA A-,A-c||r|dS||}|j|||dSr )rrrr r)rrinfors ruser_exceptionzIdb.user_exceptions]   E " "  MMOOO F&&u-- WeT22222rc|jjdrdS|j}|jj}d|vrd|vrdS||S)Nzrpc.pyTidlelibdebuggerF)f_code co_filenamecountf_backr)rr prev_frame prev_names rrzIdb.in_rpc_code#sd < # ) )( 3 3 04J")5II%%* *A*Au##J// /rc|j}|j}|j}tj|}|d|}|jdkr |d|jd}|S)N:?: z())r#r$f_linenoospathbasenameco_name)rrcodefilenamelinenor0rs r__frame2messagezIdb.__frame2message/sj|#7##H--(((( <3   44DL444GrN)__name__ __module__ __qualname__rrrrrrrr r s_333 0 0 0rr ceZdZdxZxZxZZddZdZddZ dZ ddZ dZ dZ d Zd Zd Zd Zd ZdZdZdZdZdZdZdZdZdZddZdZdZdZdZ dS)DebuggerNc|t|}||_||_d|_|d|_d|_dSNr)r pyshellidbrmake_gui interacting nesting_level)rr>r?s rrzDebugger.__init__>sJ ;d))C   rcjdkr5jdfddS d_jjd_S#d_wxYw)NrdcjSr )run)argsrsrzDebugger.run..hs4r)rB abort_looprootafterrAr?rF)rrGs``rrFz Debugger.runHs<   ! ! OO    IOOC!8!8!8!8!8 9 9 9 F ! D 48<& D  qD  s A!! A*cH |n#t$rYnwxYw|jr|jdS|jr |jd|_|j|j dSr ) quit ExceptionrAtopbell stackviewercloser>close_debuggerdestroyrevents rrSzDebugger.closeps  IIKKKK    D     HMMOOO F   >   " " $ $ $d&6 ##%%% s  $$c |j}|j|_|jx|_}t|x|_}|jd|jd|d|j|j d|jt|x|_ }|j dgx|_ }t|d|jx|_}||t|d |jx|_}||t|d |jx|_}||t|d |jx|_}||t|d |jx|_}|||D].}|d | d/t|x|_}|j d|js3t9||j_|jdt?|d|j |j|_!|j!"dd|j#st9||j_#t?|d|j$|j#|_%|j%"dd|j&s3t9||j_&|j&dt?|d|j'|j&|_(|j("dd|j)st9||j_)t?|d|j*|j)|_+|j+"ddtY|d|_-|j- dtY|d|_.|j. dd|j./d|_0t|d|_1|j1 ddt||_2|j2 ddt|d|_3|j3 dd|j4r| |j&4r|'|j)4r|*dSdS)Nz Debug ControlDebugWM_DELETE_WINDOWzw)anchorGo)textcommandStepOverOutQuitdisabledstateleft)siderIStack)r^r_variablerrowcolumnSourceLocalsGlobalsx)r\fill background)heightbothexpandrr)5r>flistrKrrPwm_title wm_iconname wm_protocolrSbindrbframepackbuttonsButtoncontbcontappendstepbstepnextbnextretbretrN configurecframevstack BooleanVar __class__set Checkbutton show_stackbstackgridvsource show_sourcebsourcevlocals show_localsblocalsvglobals show_globalsbglobalsLabelstatuserrorcgeterrorbgfstackflocalsfglobalsget)rr>rKrPr}blbrs rr@zDebugger.make_guis,] "<' D'---3 /*** W%%% *DJ777  j$*---$Szz) f $$$ rT49EEEE Q ! VTYGGGG Q ! VTYGGGG Q ! vE48DDDD A ! vFDIFFFF A !   A KKjK ) ) ) FFF    $V}}, f f%%%{ $.sOODN ! KOOA   !&$/DKIII  Qq)))| 5%/__DN ""64#3dlLLL  a***| %/__DN " L  Q   "64#3dlLLL  a***} 6&0ooDN ##FD$5 OOO  q+++C,,,  $$$3s+++  s---z|44 C***  ///Szz  000c!,,,  !&111 ;??    OO    <            =              rc||_|j||rF|\}}} |j}n"#t$rdt |z}YnwxYw| |d|}n#YnxYwd}n d}d}|j}|j|||j} | r9|j |j|\} } | | | | d|j r||jD]} | d |j|xjdz c_|jjd d |xjdzc_|jD]} | d |jd|jd|jd|_dS) Nr^z%sr,yellow)r^rsrInormalrevwait::idledebugwaitrd)rrrr6AttributeErrorstrrrrRr? get_stack load_stackshow_variablesrrsync_source_linerrPwakeuprBrKtkcall) rrrrtypevaluetbm1bgsvstackirs rrzDebugger.interactions8  7+++  "OD% &]! & & &CII% & ))%))BBDBBBBB "444    $x))$*b99HE1 MM% # # # A <     $  ! ! # # # ( (A KKhK ' ' ' '  a '#4555 a * *A KKjK ) ) ) ) 2&&& ">>> s4AAA!!A%c|j}|sdS||\}}|dd|ddzdkr)r_Debugger__frame2fileliner.r/existsrx gotofileline)rrr3r4s rrzDebugger.sync_source_lines   F0077& BQB<(233- '4 / /BGNN84L4L / J # #Hf 5 5 5 5 5 0 / / /rc4|j}|j}|j}||fSr )r#r$r-)rrr2r3r4s r__frame2filelinezDebugger.__frame2filelines#|#rc`|j|dSr )r? set_continuerJrs rrz Debugger.cont s,  rc`|j|dSr )r?rrJrs rrz Debugger.step,  rcl|j|j|dSr )r?set_nextrrJrs rrz Debugger.nexts0 $*%%% rcl|j|j|dSr )r? set_returnrrJrs rrz Debugger.rets0 DJ''' rc`|j|dSr )r?set_quitrJrs rrNz Debugger.quitrrcH|jjddddS)Nrr1)rKrrrs rrJzDebugger.abort_loop s% %!2C88888rc|js|jrft|j|j|x|_}|jr;|j|jd\}}| ||dSdS|j}|r4|jsd|_| d|jd<dS)NrIrt) rRrr StackViewerrrxrr?rrrS)rrrrs rrzDebugger.show_stack%s &DKOO$5$5 &$/ TZ$N$N ND rz (8--dj$??q eQ''''' ( (!B $+//++ #'  $%DK ! ! !rcd|jr|dSdSr )rrrrs rrzDebugger.show_source2s: <     $  ! ! # # # # # $ $rcH|d|_|dSr=)rr)r stackitems r show_framezDebugger.show_frame6s%q\  rc|j}|jr|st|jd|_n'|r%d|_|d|jd<|dS)NrorIrt) localsviewerrrNamespaceViewerrrSr)rlvs rrzDebugger.show_locals=s   <     + L$3DL($K$K! +$(! )* X& rc|j}|jr|st|jd|_n'|r%d|_|d|jd<|dS)NrprIrt) globalsviewerrrrrrSr)rgvs rrzDebugger.show_globalsIs   =     , O%4T]I%N%N" ,%)" *+ h' rrc|j}|j}|j}|sdx}}n|j}|j}|r|r||urd}|r&||||jjj|r(||||jjjdSdSr ) rrrf_locals f_globals load_dictr>interprpcclt)rforcerrrldictgdicts rrzDebugger.show_variablesUs       EEENEOE b Ue^^  C LLt|':'A B B B  C LLt|':'A B B B B B C Crc<|j||dSr )r? set_breakrr3r4s rset_breakpoint_herezDebugger.set_breakpoint_herees  8V,,,,,rc<|j||dSr )r? clear_breakrs rclear_breakpoint_herezDebugger.clear_breakpoint_herehs  Xv.....rc:|j|dSr )r?clear_all_file_breaks)rr3s rclear_file_breakszDebugger.clear_file_breaksks &&x00000rc|jjjD]?}|jj} |jD]}|||0#t$rYrx inversedictior3 breakpointsrr)reditwinr3r4s rload_breakpointszDebugger.load_breakpointsns|)5  Gz*H %1??F,,Xv>>>>?!       s A AAr )r)!r6r7r8rrrrrrFrSr@rrrrrrrrNrJrRrrrrrrrrrrrrr9rrr;r;:s,00F0W0w&!&!&!P"I I I V0000d666   999K & & &$$$LM      CCCC ---///111rr;cFeZdZdZd dZdZdZdZdZdZ d Z d Z dS) rctjrtj||ntj||d||_||_g|_dS)NP)width)risAquaTkrrrxr r)rmasterrxr s rrzStackViewer.__init__zs[ ?   :  !$ / / / /  !$b 9 9 9 9  rNc||_|tt|D]}||\}} |jd}n #d}YnxYw|j}|j}|j} ddl} | ||} | } | dvr d||| fz} n d|| || fz} ||krd| z} | | || |dSdS)Nr6r+r)r+rNz%s, line %d: %sz%s.%s(), line %d: %sz> ) rclearrangelenrr#r$r1 linecachegetlinestriprselect) rrindexrrr4modnamer2r3funcnamer sourcelineitems rrzStackViewer.load_stacks2  s5zz""  A!!HME6 /*5 |jrtj||SdSoverride base methodN)rr popup_eventrVs rrzStackViewer.popup_events) : 9+D%88 8 9 9rc|j}|d|j|d|jdS)rzGo to source line)labelr_zShow stack frameN)menu add_commandgoto_source_lineshow_stack_frame)rrs r fill_menuzStackViewer.fill_menus_y 2!%!6  8 8 8 1!%!6  8 8 8 8 8rcd|cxkrt|jkr+ndS|j|j|dSdS)rrN)rrr rrrs r on_selectzStackViewer.on_selectsZ  ' ' ' 'DJ ' ' ' ' ' ' H   5 1 2 2 2 2 2 ( 'rc0||dSr)rrs r on_doublezStackViewer.on_doubles rcd|jd}||dS)Nactive)listboxrrrs rrzStackViewer.goto_source_lines1 ""8,, rc|jd}d|cxkrt|jkr+ndS|j|j|dSdS)Nrr)rrrrr rrs rrzStackViewer.show_stack_frameso ""8,,  ' ' ' 'DJ ' ' ' ' ' ' H   5 1 2 2 2 2 2 ( 'rc0d|cxkrt|jksndS|j|\}}|j}|j}tj|r3|j|}|r| |dSdSdSr=) rrr#r$r.r/isfilerxopengotoline)rrrr4r2r3edits rrzStackViewer.show_sourcesU,,,,S__,,,, F 5) v|# 7>>( # # &:??8,,D & f%%%%% & & & &rr ) r6r7r8rrrrrrrrrr9rrrrxs   4999 888333       333 & & & & &rrc(eZdZddZdZddZdZdS) rNc @d}d}|rdt|z}||_||_ddl}||_d|j_d|j_t|x|_ }|j ddt||dd |_ |j d t|d x|_}| ddt|t!dt#d|dd||fx|_} | ddd| j|d<|j| d<t| x|_} | dd| d|_||dS)Nr(<rIrurvgroove)r^ borderwidthreliefrq)rrvbar)namerighty)rhrr,)rt scrollregionrg)rhrrrwr_yscrollcommandnw)windowr\)rrtitlereprlibReprrepr maxstringmaxotherrrr~rrrr/Canvasminmaxcanvasyviewrsubframe create_windowsfidr) rrr8dictrrtr9rr/rArCs rrzNamespaceViewer.__init__s  "D \F  LLNN    "6]]* U qv...5u!HMMM  S!!!$U8888 D wS )))%e-0c"foo-F-F45q%3H J J J J f  fQ 777 ,Y#'8 #(==0 ((Aht(LL  trrrc||jur|sdS|j}|j}t|jD]}|d|_|s)t|d}|ddn| }t|} d} | D]} || } |j | } |r | dd} t|| }|| ddt|dd }| d| || dd| dz} ||_||}|}|j}dd||f|jd <|d krd |d <|d dS||d <|d dS)NNonerrrkrIrr6)rlrmsticky)rr-r4r3rt)rw)rFrCrlistchildrenvaluesrUrrkeyssortedr;Entryinsertupdate_idletaskswinfo_reqwidthwinfo_reqheightrAr~)rrFr rpc_clientrCrcl keys_listnamesrlr0rsvaluerrtrAs rrzNamespaceViewer.load_dicts 49  U  F= h'..0011  A IIKKKK  hV,,,A FFqF # # # # I9%%EC  T ..*#AbD\F(...3q666(!;;;F###3q666!e !!###''))))++'(!UF&; N# C<<"F8  JJaJ %F8  JJaJ rc8|jdSr )rrUrs rrSzNamespaceViewer.close s rr )rN)r6r7r8rrFrrSr9rrrrsS6 D4!4!4!4!lrr__main__)mainzidlelib.idle_test.test_debuggerr+F) verbosityexit)rr.tkinter tkinter.ttkrrr!ridlelib.scrolledlistridlelib.windowrrr r;rrr6unittestr\r9rrrdsx ((((((((------))))))+++++#'+++\||||||||| P&P&P&P&P&,P&P&P&fVVVVVVVVp zD *aeDDDDDDr