B � f�J�@s�ddlZddlZddlTddlmZmZddlmZddlm Z ddl m Z Gdd�dej �Z Gd d �d �ZGd d �d e �ZGd d�d�Zedkr�ddlmZedddd�dS)�N)�*)�Frame� Scrollbar)�macosx)� ScrolledList)�ListedToplevelc@s4eZdZdd�Zdd�Zdd�Zdd�Zd d �Zd S) �IdbcCs||_tj�|�dS)N)�gui�bdb�Bdb�__init__)�selfr �r�5/opt/alt/python37/lib64/python3.7/idlelib/debugger.pyr sz Idb.__init__cCsL|�|�r|��dS|�|�}y|j�||�Wntk rFYnXdS)N)� in_rpc_code�set_step�_Idb__frame2messager � interactionZTclError)r �frame�messagerrr� user_lines  z Idb.user_linecCs4|�|�r|��dS|�|�}|j�|||�dS)N)rrrr r)r r�inforrrr�user_exceptions   zIdb.user_exceptioncCsB|jj�d�rdS|j}|jj}d|kr4d|kr4dS|�|�SdS)Nzrpc.pyT�idlelibZdebuggerF)�f_code� co_filename�count�f_backr)r rZ prev_frameZ prev_namerrrr#szIdb.in_rpc_codecCsF|j}|j}|j}tj�|�}d||f}|jdkrBd||jf}|S)Nz%s:%s�?z%s: %s())rr�f_lineno�os�path�basename�co_name)r r�code�filename�linenor"rrrrZ__frame2message/s   zIdb.__frame2messageN)�__name__� __module__� __qualname__r rrrrrrrrr s   rc@s�eZdZdZZZZd1dd�Zdd�Zd2dd�Z dd �Z d3d d �Z d d �Z dd�Z dd�Zdd�Zdd�Zdd�Zdd�Zdd�ZdZdd�Zdd�Zd d!�ZdZdZd"d#�Zd$d%�Zd4d'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Z dS)5�DebuggerNcCs:|dkrt|�}||_||_d|_|��d|_d|_dS)Nr)r�pyshell�idbr�make_gui� interacting� nesting_level)r r+r,rrrr >szDebugger.__init__csN�jdkr.����j�d��fdd��dSzd�_�jj��Sd�_XdS)Nr�dcs �j��S)N)�runr)�argsr rr�h�zDebugger.run..�)r/� abort_loop�rootZafterr.r,r1)r r2r)r2r rr1Hs  z Debugger.runcCsdy |��Wntk r YnX|jr6|j��dS|jrL|j��d|_|j��|j� �dS)N) �quit� Exceptionr.�topZbell� stackviewer�closer+Zclose_debugger�destroy)r �eventrrrr<ps    zDebugger.closecCsF|j}|j|_|j|_}t|�|_}|j�d�|j�d�|�d|j�|j� d|j�t |�|_ }|j j dd�g|_ }t|d|jd�|_}|�|�t|d |jd�|_}|�|�t|d |jd�|_}|�|�t|d |jd�|_}|�|�t|d |jd�|_}|�|�x&|D]}|jd d�|j dd��q*Wt |�|_}|jj dd�|j�s�t|�|j_|j�d�t|d|j |jd�|_!|j!j"ddd�|j#�s�t|�|j_#t|d|j$|j#d�|_%|j%j"ddd�|j&�st|�|j_&|j&�d�t|d|j'|j&d�|_(|j(j"ddd�|j)�sBt|�|j_)t|d|j*|j)d�|_+|j+j"ddd�t,|dd�|_-|j-j dd�t,|dd�|_.|j.j ddd�|j.�/d�|_0t |dd�|_1|j1j ddd�t |�|_2|j2j ddd�t |dd�|_3|j3j ddd�|j�4��r|� �|j&�4��r.|�'�|j)�4��rB|�*�dS)Nz Debug ControlZDebugZWM_DELETE_WINDOWz�w)�anchorZGo)�text�commandZStepZOverZOutZQuit�disabled)�state�left)�sider5ZStack)rArBZvariabler)�row�columnZSource�Locals�Globals�x)r@�fill� background)�height�both)�expandrL)5r+�flistr7rr:Zwm_titleZ wm_iconnameZ wm_protocolr<Zbindr�bframe�pack�buttonsZButton�contZbcont�append�stepZbstep�nextZbnext�retZbretr8� configure�cframe�vstackZ BooleanVar� __class__�setZ Checkbutton� show_stackZbstack�grid�vsource� show_sourceZbsource�vlocals� show_localsZblocals�vglobals� show_globalsZbglobals�Label�status�errorZcget�errorbg�fstack�flocals�fglobals�get)r r+r7r:rRZbl�br[rrrr-�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|�\} } | � | | �|� d�|j ��r�|��x|jD]} | jdd �q�W|j��|jd7_|jj�d d �|jd8_x|jD]} | jd d ��q)r�_Debugger__frame2fileliner r!�existsrQZ gotofileline)r rr%r&rrrrv�s (zDebugger.sync_source_linecCs|j}|j}|j}||fS)N)rrr)r rr$r%r&rrrZ__frame2filelineszDebugger.__frame2filelinecCs|j��|��dS)N)r,Z set_continuer6)r rrrrU s z Debugger.contcCs|j��|��dS)N)r,rr6)r rrrrWs z Debugger.stepcCs|j�|j�|��dS)N)r,Zset_nextrr6)r rrrrXsz Debugger.nextcCs|j�|j�|��dS)N)r,Z set_returnrr6)r rrrrYsz Debugger.retcCs|j��|��dS)N)r,Zset_quitr6)r rrrr8s z Debugger.quitcCs|jj�ddd�dS)Nr^z::idledebugwait�1)r7rxry)r rrrr6szDebugger.abort_loopcCs~|jsN|j��rNt|j|j|�|_}|jrz|j�|jd�\}}|� ||�n,|j}|rp|j��spd|_|� �d|jd<dS)Nr5rN) r;r\rn� StackViewerrkrQrr,rsrtr<)r r}r~rrrrr_$szDebugger.show_stackcCs|j��r|��dS)N)rarnrv)r rrrrb1s zDebugger.show_sourcecCs|d|_|��dS)Nr)rru)r Z stackitemrrr� show_frame5s zDebugger.show_framecCsL|j}|j��r$|s@t|jd�|_n|r@d|_|��d|jd<|��dS)NrIr5rN)� localsviewerrcrn�NamespaceViewerrlr<ru)r �lvrrrrd<s  zDebugger.show_localscCsL|j}|j��r$|s@t|jd�|_n|r@d|_|��d|jd<|��dS)NrJr5rN)� globalsviewerrernr�rmr<ru)r �gvrrrrfHs  zDebugger.show_globalsrcCst|j}|j}|j}|s d}}n |j}|j}|r@|r@||kr@d}|rX|�|||jjj�|rp|�|||jjj�dS)N) r�r�r�f_locals� f_globals� load_dictr+ZinterpZrpcclt)r �forcer�r�rZldictZgdictrrrruTs zDebugger.show_variablescCs|j�||�dS)N)r,Z set_break)r r%r&rrr�set_breakpoint_heredszDebugger.set_breakpoint_herecCs|j�||�dS)N)r,Z clear_break)r r%r&rrr�clear_breakpoint_heregszDebugger.clear_breakpoint_herecCs|j�|�dS)N)r,Zclear_all_file_breaks)r r%rrr�clear_file_breaksjszDebugger.clear_file_breaksc CsXxR|jjjD]D}|jj}y x|jD]}|�||�q"WWq tk rNw Yq Xq WdS)z=Load PyShellEditorWindow breakpoints into subprocess debuggerN)r+rQZ inversedict�ior%Z breakpointsr�rq)r Zeditwinr%r&rrr�load_breakpointsms zDebugger.load_breakpoints)N)N)N)r)!r'r(r)r\rarcrer r1r<r-rrvr�rUrWrXrYr8r6r;r_rbr�r�r�rdrfrur�r�r�r�rrrrr*:s6 ( K 1   r*c@sVeZdZdd�Zddd�Zdd�Zdd �Zd d �Zd d �Zdd�Z dd�Z dd�Z dS)r�cCs<t��rt�||�ntj||dd�||_||_g|_dS)N�P)�width)rZisAquaTkrr rQr r~)r �masterrQr rrrr ys zStackViewer.__init__Nc Cs�||_|��x�tt|��D]�}||\}}y|jd}Wnd}YnX|j}|j}|j} ddl} | � ||�} | � �} | dkr�d||| f} nd|| || f} ||kr�d| } |� | �qW|dk r�|� |�dS)Nr'rr)rrpNz%s, line %d: %sz%s.%s(), line %d: %sz> ) r~�clear�range�lenr�rrr#� linecache�getline�striprVZselect) r r~�indexrrr&�modnamer$r%�funcnamer�Z sourceline�itemrrrrt�s.    zStackViewer.load_stackcCs|jrt�||�SdS)zoverride base methodN)r~r� popup_event)r r>rrrr��szStackViewer.popup_eventcCs*|j}|jd|jd�|jd|jd�dS)zoverride base methodzGo to source line)�labelrBzShow stack frameN)�menuZ add_command�goto_source_line�show_stack_frame)r r�rrr� fill_menu�s  zStackViewer.fill_menucCs4d|krt|j�kr0nn|j�|j|�dS)zoverride base methodrN)r�r~r r�)r r�rrr� on_select�szStackViewer.on_selectcCs|�|�dS)zoverride base methodN)rb)r r�rrr� on_double�szStackViewer.on_doublecCs|j�d�}|�|�dS)N�active)�listboxr�rb)r r�rrrr��s zStackViewer.goto_source_linecCs@|j�d�}d|kr&t|j�krs   .?SX