3  fJ@sddlZddlZddlTddlmZddlmZddlmZddl m Z Gdddej Z Gd d d Z Gd d d eZGd ddZedkrddlmZedddddS)N)*) Scrollbar)macosx) ScrolledList)ListedToplevelc@s4eZdZddZddZddZddZd d Zd S) IdbcCs||_tjj|dS)N)guibdbBdb__init__)selfrr 5/opt/alt/python36/lib64/python3.6/idlelib/debugger.pyr sz Idb.__init__c CsL|j|r|jdS|j|}y|jj||Wntk rFYnXdS)N) in_rpc_codeset_step_Idb__frame2messager interactionZTclError)r framemessager r r user_lines  z Idb.user_linecCs4|j|r|jdS|j|}|jj|||dS)N)rrrrr)r rinforr r ruser_exceptions   zIdb.user_exceptioncCsB|jjjdrdS|j}|jj}d|kr4d|kr4dS|j|SdS)Nzrpc.pyTidlelibZdebuggerF)f_code co_filenamecountf_backr)r rZ prev_frameZ prev_namer r rr#szIdb.in_rpc_codecCsF|j}|j}|j}tjj|}d||f}|jdkrBd||jf}|S)Nz%s:%s?z%s: %s())rrf_linenoospathbasenameco_name)r rcodefilenamelinenor!rr r rZ__frame2message/s   zIdb.__frame2messageN)__name__ __module__ __qualname__r rrrrr r r rr s   rc@seZdZdZZZZd1ddZddZd2ddZ dd Z d3d d Z d d Z ddZ ddZddZddZddZddZddZdZddZddZd d!ZdZdZd"d#Zd$d%Zd4d'd(Zd)d*Zd+d,Zd-d.Zd/d0Z dS)5DebuggerNcCs:|dkrt|}||_||_d|_|jd|_d|_dS)Nr)rpyshellidbrmake_gui interacting nesting_level)r r*r+r r rr >szDebugger.__init__c sNjdkr.jjjdfdddSzd_jjSd_XdS)Nrdcs jS)N)runr )argsr r rhszDebugger.run..)r. abort_looprootafterr-r+r0)r r1r )r1r rr0Hs  z Debugger.runc Csdy |jWntk r YnX|jr6|jjdS|jrL|jjd|_|jj|jj dS)N) quit Exceptionr-topZbell stackviewercloser*Zclose_debuggerdestroy)r eventr r rr;ps    zDebugger.closecCsF|j}|j|_|j|_}t||_}|jjd|jjd|jd|j|jj d|jt ||_ }|j j ddg|_ }t|d|jd|_}|j|t|d |jd|_}|j|t|d |jd|_}|j|t|d |jd|_}|j|t|d |jd|_}|j|x&|D]}|jd d|j ddq*Wt ||_}|jj dd|jst||j_|jjdt|d|j |jd|_!|j!j"ddd|j#st||j_#t|d|j$|j#d|_%|j%j"ddd|j&st||j_&|j&jdt|d|j'|j&d|_(|j(j"ddd|j)sBt||j_)t|d|j*|j)d|_+|j+j"dddt,|dd|_-|j-j ddt,|dd|_.|j.j ddd|j.j/d|_0t |dd|_1|j1j dddt ||_2|j2j dddt |dd|_3|j3j ddd|jj4r|j |j&j4r.|j'|j)j4rB|j*dS)Nz Debug ControlZDebugZWM_DELETE_WINDOWzw)anchorZGo)textcommandZStepZOverZOutZQuitdisabled)stateleft)sider3ZStack)r@rAZvariabler)rowcolumnZSourceLocalsGlobalsx)r?fill background)heightboth)expandrK)5r*flistr5rr9Zwm_titleZ wm_iconnameZ wm_protocolr;ZbindFramebframepackbuttonsZButtoncontZbcontappendstepZbstepnextZbnextretZbretr7 configurecframevstackZ BooleanVar __class__setZ Checkbutton show_stackZbstackgridvsource show_sourceZbsourcevlocals show_localsZblocalsvglobals show_globalsZbglobalsLabelstatuserrorZcgeterrorbgfstackflocalsfglobalsget)r r*r5r9rRZblbr[r r rr,s                     zDebugger.make_guic Cs|||_|jj|d|r~|\}}}y |j}Wn tk rLdt|}YnX|dk rxyd|t|f}Wn YnXd}nd}d}|j}|jj||d|j} | r|j j |j|\} } | j | | |j d|j jr|jx|jD]} | jdd qW|jj|jd7_|jjjd d |jd8_x|jD]} | jd d q)r_Debugger__frame2filelinerr existsrPZ gotofileline)r rr$r%r r rrvs (zDebugger.sync_source_linecCs|j}|j}|j}||fS)N)rrr)r rr#r$r%r r rZ__frame2filelineszDebugger.__frame2filelinecCs|jj|jdS)N)r+Z set_continuer4)r r r rrU s z Debugger.contcCs|jj|jdS)N)r+rr4)r r r rrWs z Debugger.stepcCs|jj|j|jdS)N)r+Zset_nextrr4)r r r rrXsz Debugger.nextcCs|jj|j|jdS)N)r+Z set_returnrr4)r r r rrYsz Debugger.retcCs|jj|jdS)N)r+Zset_quitr4)r r r rr7s z Debugger.quitcCs|jjjddddS)Nr^z::idledebugwait1)r5rxry)r r r rr4szDebugger.abort_loopcCs|j rP|jjrPt|j|j||_}|jr~|jj|jd\}}|j ||n.|j}|rt|jj rtd|_|j d|jd<dS)Nr3rM) r:r\rn StackViewerrkrPrr+rsrtr;)r r~rrr r rr_$szDebugger.show_stackcCs|jjr|jdS)N)rarnrv)r r r rrb1s zDebugger.show_sourcecCs|d|_|jdS)Nr)rru)r Z stackitemr r r show_frame5s zDebugger.show_framecCsL|j}|jjr$|s@t|jd|_n|r@d|_|jd|jd<|jdS)NrHr3rM) localsviewerrcrnNamespaceViewerrlr;ru)r lvr r rrd<s  zDebugger.show_localscCsL|j}|jjr$|s@t|jd|_n|r@d|_|jd|jd<|jdS)NrIr3rM) globalsviewerrernrrmr;ru)r gvr r rrfHs  zDebugger.show_globalsrcCst|j}|j}|j}|s d}}n |j}|j}|r@|r@||kr@d}|rX|j|||jjj|rp|j|||jjjdS)N) rrrf_locals f_globals load_dictr*ZinterpZrpcclt)r forcerrrZldictZgdictr r rruTs zDebugger.show_variablescCs|jj||dS)N)r+Z set_break)r r$r%r r rset_breakpoint_heredszDebugger.set_breakpoint_herecCs|jj||dS)N)r+Z clear_break)r r$r%r r rclear_breakpoint_heregszDebugger.clear_breakpoint_herecCs|jj|dS)N)r+Zclear_all_file_breaks)r r$r r rclear_file_breaksjszDebugger.clear_file_breaksc CsXxR|jjjD]D}|jj}y x|jD]}|j||q"WWq tk rNw Yq Xq WdS)z=Load PyShellEditorWindow breakpoints into subprocess debuggerN)r*rPZ inversedictior$Z breakpointsrrq)r Zeditwinr$r%r r rload_breakpointsms zDebugger.load_breakpoints)N)N)N)r)!r&r'r(r\rarcrer r0r;r,rrvrrUrWrXrYr7r4r:r_rbrrrrdrfrurrrrr r r rr):s6 ( K 1   r)c@sVeZdZddZdddZddZdd Zd d Zd d ZddZ ddZ ddZ dS)rcCs<tjrtj||ntj||dd||_||_g|_dS)NP)width)rZisAquaTkrr rPrr)r masterrPrr r rr ys zStackViewer.__init__Nc Cs||_|jxtt|D]}||\}}y|jd}Wnd}YnX|j}|j}|j} ddl} | j ||} | j } | dkrd||| f} nd|| || f} ||krd| } |j | qW|dk r|j |dS) Nr&rrrpz%s, line %d: %sz%s.%s(), line %d: %sz> )rrpN) rclearrangelenrrrr" linecachegetlinestriprVZselect) r rindexrrr%modnamer#r$funcnamerZ sourcelineitemr r rrts.    zStackViewer.load_stackcCs|jrtj||SdS)zoverride base methodN)rr popup_event)r r=r r rrszStackViewer.popup_eventcCs*|j}|jd|jd|jd|jddS)zoverride base methodzGo to source line)labelrAzShow stack frameN)menuZ add_commandgoto_source_lineshow_stack_frame)r rr r r fill_menus  zStackViewer.fill_menucCs4d|kot|jknr0|jj|j|dS)zoverride base methodrN)rrrr)r rr r r on_selectszStackViewer.on_selectcCs|j|dS)zoverride base methodN)rb)r rr r r on_doubleszStackViewer.on_doublecCs|jjd}|j|dS)Nactive)listboxrrb)r rr r rrs zStackViewer.goto_source_linecCs@|jjd}d|ko$t|jknr<|jj|j|dS)Nrr)rrrrrr)r rr r rrs zStackViewer.show_stack_framecCsfd|kot|jkns"dS|j|\}}|j}|j}tjj|rb|jj|}|rb|j |dS)Nr) rrrrrr isfilerPopenZgotoline)r rrr%r#r$Zeditr r rrbs  zStackViewer.show_source)N) r&r'r(r rtrrrrrrrbr r r rrws rc@s,eZdZd ddZd Zd ddZdd ZdS) rNc Cs d}d}|rdt|}||_||_ddl}|j|_d|j_d|j_t||_ }|j j dddt ||dd d |_ |j j d d t |d d|_}|j dddt|tdtd|dd||fd|_} | j dddd| j|d<|j| d<t| |_} | jdd| dd|_|j|dS)Nr(<r3rN)rOrKZgroove)r@ borderwidthZreliefrJ)rKvbar)namerighty)rErKi,)rM scrollregionrD)rErKrOrAZyscrollcommandnw)Zwindowr?)rrtitlereprlibReprrepr maxstringmaxotherrQrrSrgrrrZCanvasminmaxcanvasZyviewr^subframeZ create_windowZsfidr) r rrdictrrMrrrrrr r rr s2    zNamespaceViewer.__init__r3rcCsh||jkr| rdS|j}|j}xt|jjD] }|jq0Wd|_|sft|dd}|jdddn|j }t |} d} x~| D]v} || } |j j | } |r| dd } t|| d}|j| dddt |ddd}|j d| |j| ddd| d} qW||_|j|j}|j}|j}dd||f|jd <|d krPd |d <|jdd n||d <|jdd dS)NNone)r@r)rFrGr3r)rFrGZsticky)rrri,rM)rOr)rrrlistZchildrenvaluesr<rgr`keyssortedrZEntryinsertZupdate_idletasksZwinfo_reqwidthZwinfo_reqheightrrS)r rrZ rpc_clientrrclZ keys_listnamesrFrr{ZsvaluerrMrr r rrsF          zNamespaceViewer.load_dictcCs|jjdS)N)rr<)r r r rr;szNamespaceViewer.close)Nr)rN)r&r'r(r rrr;r r r rrs  6r__main__)mainzidlelib.idle_test.test_debuggerrF) verbosityexit)r rZtkinterZ tkinter.ttkrrrZidlelib.scrolledlistrZidlelib.windowrr rr)rrr&Zunittestrr r r rs    .?SX