e fGI@sddlZddlZddlTddlmZddlmZddlmZGdddej Z Gdd d Z Gd d d eZ Gd d d Z dS)N)*)ListedToplevel) ScrolledList) macosxSupportc@sLeZdZddZddZddZddZd d Zd S) IdbcCs||_tjj|dS)N)guibdbBdb__init__)selfrr 5/opt/alt/python34/lib64/python3.4/idlelib/Debugger.pyr s z Idb.__init__c Cs\|j|r|jdS|j|}y|jj||Wntk rWYnXdS)N) in_rpc_codeset_step_Idb__frame2messager interactionZTclError)r framemessager r r user_lines  z Idb.user_linecCsF|j|r|jdS|j|}|jj|||dS)N)rrrrr)r rinforr r r user_exceptions  zIdb.user_exceptioncCsL|jjjdrdS|j}|jjjdr;dS|j|SdS)Nzrpc.pyTz Debugger.pyF)f_code co_filenamecountf_backr)r rZ prev_framer r r r s  zIdb.in_rpc_codecCsf|j}|j}|j}tjj|}d||f}|jdkrbd||jf}n|S)Nz%s:%s?z%s: %s())rrf_linenoospathbasenameco_name)r rcodefilenamelinenorrr r r Z__frame2message*s   zIdb.__frame2messageN)__name__ __module__ __qualname__r rrrrr r r r r s    rc@sTeZdZdZZZZdddZddZdddZ dd Z dd d Z d d Z ddZ ddZddZddZddZddZddZdZddZddZd d!ZdZdZd"d#Zd$d%Zd&d'd(Zd)d*Zd+d,Zd-d.Zd/d0Z dS)1DebuggerNcCsV|dkrt|}n||_||_d|_|jd|_d|_dS)Nr)rpyshellidbrmake_gui interacting nesting_level)r r(r)r r r r 9s      zDebugger.__init__c smjdkr?jjjdfdddSzd_jjSWdd_XdS)Nrdcs jS)N)runr )argsr r r cszDebugger.run..)r, abort_looprootafterr+r)r.)r r/r )r/r r r.Cs " z Debugger.runc Cs}y|jWntk r"YnX|jr=|jjdS|jr_|jjd|_n|jj|jj dS)N) quit Exceptionr+topZbell stackviewercloser(Zclose_debuggerdestroy)r eventr r r r9ks      zDebugger.closecCs|j}|j|_|j|_}t||_}|jjd|jjd|jd|j|jj d|jt ||_ }|j j ddg|_ }t|ddd |j|_}|j|t|dd d |j|_}|j|t|dd d |j|_}|j|t|dd d |j|_}|j|t|dd d |j|_}|j|x.|D]&}|jdd|j ddqWt ||_}|jj dd|js$t||j_|jjdnt|ddd |j d|j|_!|j!j"dddd|j#st||j_#nt|ddd |j$d|j#|_%|j%j"dddd|j&st||j_&|j&jdnt|ddd |j'd|j&|_(|j(j"dddd|j)sNt||j_)nt|ddd |j*d|j)|_+|j+j"ddddt,|dd|_-|j-j ddt,|dd|_.|j.j dddd|j.j/d|_0t |dd|_1|j1j dddd t ||_2|j2j dddd t |dd|_3|j3j dddd |jj4r|j n|j&j4r|j'n|j)j4r|j*ndS)!Nz Debug ControlZDebugZWM_DELETE_WINDOWzanchorwtextZGocommandZStepZOverZOutZQuitstatedisabledsideleftr1ZStackZvariablerowrcolumnZSourceLocalsGlobalsfillx backgroundheightexpandboth)5r(flistr3rr7Zwm_titleZ wm_iconnameZ wm_protocolr9ZbindFramebframepackbuttonsZButtoncontZbcontappendstepZbstepnextZbnextretZbretr5 configurecframevstackZ BooleanVar __class__setZ Checkbutton show_stackZbstackgridvsource show_sourceZbsourcevlocals show_localsZblocalsvglobals show_globalsZbglobalsLabelstatuserrorZcgeterrorbgfstackflocalsfglobalsget)r r(r3r7rPZblbrYr r r r*|s   " " " " "            zDebugger.make_guic Cs||_|jjd||r|\}}}y |j}Wn"tk rbdt|}YnX|dk ryd|t|f}WqYqXnd}nd}d}|j}|jjd|d||j} | r|j j |j|\} } | j | | n|j d|j jr7|jnx!|jD]} | jdd qAW|jj|jd7_|jjjd d |jd8_x!|jD]} | jdd qW|jjdd|jjddd|jd|_dS) Nr>z%sz%s: %sZyellowrJr1r@ZnormalZvwaitz::idledebugwaitrA)rrfrXr$AttributeErrorstrrhrgr8r) get_stack load_stackshow_variablesr_rlsync_source_linerRr7wakeupr,r3tkcall) r rrrtypevaluetbZm1Zbgsvstackirmr r r rsH          zDebugger.interactioncCsx|j}|sdS|j|\}}|dd|dddkrttjj|rt|jj||ndS)Nr1z<>)r_Debugger__frame2filelinerrexistsrNZ gotofileline)r rr"r#r r r rts  6zDebugger.sync_source_linecCs%|j}|j}|j}||fS)N)rrr)r rr!r"r#r r r Z__frame2filelines   zDebugger.__frame2filelinecCs|jj|jdS)N)r)Z set_continuer2)r r r r rSs z Debugger.contcCs|jj|jdS)N)r)rr2)r r r r rU s z Debugger.stepcCs!|jj|j|jdS)N)r)Zset_nextrr2)r r r r rVsz Debugger.nextcCs!|jj|j|jdS)N)r)Z set_returnrr2)r r r r rWsz Debugger.retcCs|jj|jdS)N)r)Zset_quitr2)r r r r r5s z Debugger.quitcCs|jjjddddS)Nr\z::idledebugwait1)r3rvrw)r r r r r2szDebugger.abort_loopcCs|j ru|jjrut|j|j||_}|jr|jj|jd\}}|j ||qnB|j}|r|jj rd|_|j nd|jd )rrnN) r|clearrangelenrrrr linecachegetlinestriprTZselect) r r|indexr}rr#modnamer!r"ZfuncnamerZ sourcelineitemr r r rrs.              zStackViewer.load_stackcCs|jrtj||SdS)zoverride base methodN)r|r popup_event)r r;r r r rs zStackViewer.popup_eventcCs?|j}|jddd|j|jddd|jdS)zoverride base methodlabelzGo to source liner?zShow stack frameN)menuZ add_commandgoto_source_lineshow_stack_frame)r rr r r fill_menus   zStackViewer.fill_menucCsCd|ko t|jknr?|jj|j|ndS)zoverride base methodrN)rr|rr)r rr r r on_selects%zStackViewer.on_selectcCs|j|dS)zoverride base methodN)r`)r rr r r on_doubleszStackViewer.on_doublecCs#|jjd}|j|dS)Nactive)listboxrr`)r rr r r rszStackViewer.goto_source_linecCsU|jjd}d|ko2t|jknrQ|jj|j|ndS)Nrr)rrrr|rr)r rr r r rs%zStackViewer.show_stack_framecCsd|ko t|jkns)dS|j|\}}|j}|j}tjj|r|jj|}|r|j |qndS)Nr) rr|rrrrisfilerNopenZgotoline)r rrr#r!r"Zeditr r r r`s%  zStackViewer.show_source) r$r%r&r rrrrrrrrr`r r r r rrs        rc@sCeZdZdddZd ZddddZdd ZdS) rNc Csd}d}|r%dt|}n||_||_ddl}|j|_d|j_d|j_t||_ }|j j ddddt |d |d d d d |_ |j j ddt |dd|_}|j ddddt|dtdtd|ddd||f|_} | j dddddd| j|d<|j| d borderwidthZreliefZgrooverInamevbarrBrightyrKi, scrollregionrCr?ZyscrollcommandZwindowr<nw)rrtitlereprlibReprrepr maxstringmaxotherrOrrQrerZ ScrollbarrZCanvasminmaxcanvasZyviewr\subframeZ create_windowZsfidr) r rrdictrrKrrrrrr r r r s2     !   !zNamespaceViewer.__init__r1rcCs||jkr| rdS|j}|j}x't|jjD]}|jqBWd|_|st|dd}|jddddn|j }t |} d} x| D]} || } |j j | } |r| dd} nt|d| }|jd| ddddt |d dd d}|j d| |jd| dddd| d} qW||_|j|j}|j}|j}dd||f|jd <|d krd |d <|jddn||d <|jdddS)Nr>NonerDrrEr1Zstickyrrrri,rKrLr~)rrrlistZchildrenvaluesr:rer^keyssortedrZEntryinsertZupdate_idletasksZwinfo_reqwidthZwinfo_reqheightrrQ)r rrZ rpc_clientrrclZ keys_listnamesrDrryZsvaluerrKrr r r rsF               zNamespaceViewer.load_dictcCs|jjdS)N)rr:)r r r r r9szNamespaceViewer.closer~)r$r%r&r rrr9r r r r rs 6r)rrZtkinterZidlelib.WindowListrZidlelib.ScrolledListrZidlelibrr rr'rrr r r r s   ,>S