FaFI@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 &/usr/lib/python3.5/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_codecCsc|j}|j}|j}tjj|}d||f}|jdkr_d||jf}|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)1DebuggerNcCsS|dkrt|}||_||_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_looprootZafterr+r)r.)r r/r )r/r r r.Cs " z Debugger.runc Cszy|jWntk r"YnX|jr=|jjdS|jr\|jjd|_|jj|jj dS)N) quit Exceptionr+topZbell stackviewercloser(Zclose_debuggerdestroy)r eventr r r r8ks      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_|jjdt|ddd |j d|j|_!|j!j"dddd|j#s|t||j_#t|ddd |j$d|j#|_%|j%j"dddd|j&st||j_&|j&jdt|ddd |j'd|j&|_(|j(j"dddd|j)sBt||j_)t|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 |j&j4r|j'|j)j4r|j*dS)!Nz Debug ControlZDebugZWM_DELETE_WINDOWzanchorwtextZGocommandZStepZOverZOutZQuitstatedisabledsideleftr1ZStackZvariablerowrcolumnZSourceLocalsGlobalsfillx backgroundheightexpandboth)5r(flistr3rr6Zwm_titleZ wm_iconnameZ wm_protocolr8ZbindFramebframepackbuttonsZButtoncontZbcontappendstepZbstepnextZbnextretZbretr4 configurecframevstackZ BooleanVar __class__setZ Checkbutton show_stackZbstackgridvsource show_sourceZbsourcevlocals show_localsZblocalsvglobals show_globalsZbglobalsLabelstatuserrorZcgeterrorbgfstackflocalsfglobalsget)r r(r3r6rOZblbrXr r r r*|s   " " " " "            zDebugger.make_guic Cs||_|jjd||r|\}}}y |j}Wn"tk rbdt|}YnX|dk ryd|t|f}WnYnXd}nd}d}|j}|jjd|d||j} | r|j j |j|\} } | j | | |j d|j jr.|jx!|jD]} | jdd q8W|jj|jd7_|jjjd d |jd8_x!|jD]} | jdd qW|jjdd|jjddd|jd|_dS) Nr=z%sz%s: %sZyellowrIr1r?ZnormalZvwaitz::idledebugwaitr@)rrerWr$AttributeErrorstrrgrfr7r) get_stack load_stackshow_variablesr^rksync_source_linerQr6wakeupr,r3tkcall) r rrrtypevaluetbZm1Zbgsvstackirlr r r rsH          zDebugger.interactioncCsu|j}|sdS|j|\}}|dd|dddkrqtjj|rq|jj||dS)Nr1z<>)r_Debugger__frame2filelinerrexistsrMZ gotofileline)r rr"r#r r r rss  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 rRs z Debugger.contcCs|jj|jdS)N)r)rr2)r r r r rT s z Debugger.stepcCs!|jj|j|jdS)N)r)Zset_nextrr2)r r r r rUsz Debugger.nextcCs!|jj|j|jdS)N)r)Z set_returnrr2)r r r r rVsz Debugger.retcCs|jj|jdS)N)r)Zset_quitr2)r r r r r4s z Debugger.quitcCs|jjjddddS)Nr[z::idledebugwait1)r3rurv)r r r r r2szDebugger.abort_loopcCs|j rr|jjrrt|j|j||_}|jr|jj|jd\}}|j ||n?|j}|r|jj rd|_|j d|jd )rrmN) r{clearrangelenrrrr linecachegetlinestriprSZselect) r r{indexr|rr#modnamer!r"funcnamerZ sourcelineitemr r r rqs.              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_menucCs@d|ko t|jknr<|jj|j|dS)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_linecCsR|jjd}d|ko2t|jknrN|jj|j|dS)Nrr)rrrr{rr)r rr r r rs%zStackViewer.show_stack_framecCsd|ko t|jkns)dS|j|\}}|j}|j}tjj|r|jj|}|r|j |dS)Nr) rr{rrrrisfilerMopenZgotoline)r rrr#r!r"Zeditr r r r_s%  zStackViewer.show_source) r$r%r&r rqrrrrrrr_r r r r rrs        rc@sCeZdZdddZd ZddddZdd ZdS) rNc Csd}d}|r"dt|}||_||_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| dZyscrollcommandZwindowr;nw)rrtitlereprlibReprrepr maxstringmaxotherrNrrPrdrZ ScrollbarrZCanvasminmaxcanvasZyviewr[subframeZ create_windowZsfidr) r rrdictrrJrrrrrr 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} t|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=NonerCrrDr1Zstickyrrrri,rJrKr})rrrlistZchildrenvaluesr9rdr]keyssortedrZEntryinsertZupdate_idletasksZwinfo_reqwidthZwinfo_reqheightrrP)r rrZ rpc_clientrrclZ keys_listnamesrCrrxZsvaluerrJrr r r rsF               zNamespaceViewer.load_dictcCs|jjdS)N)rr9)r r r r r8szNamespaceViewer.closer})r$r%r&r rrr8r r r r rs 6r)rrZtkinterZidlelib.WindowListrZidlelib.ScrolledListrZidlelibrr rr'rrr r r r s   ,>S