B YI~d�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)rArB�variabler)�row�columnZSource�Locals�Globals�x)r@�fill� background)�height�both)�expandrM)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:rSZbl�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!�existsrRZ gotofileline)r rr%r&rrrrw�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 rrrrV s z Debugger.contcCs|j��|��dS)N)r,rr6)r rrrrXs z Debugger.stepcCs|j�|j�|��dS)N)r,Zset_nextrr6)r rrrrYsz Debugger.nextcCs|j�|j�|��dS)N)r,Z set_returnrr6)r rrrrZsz Debugger.retcCs|j��|��dS)N)r,Zset_quitr6)r rrrr8s z Debugger.quitcCs|jj�ddd�dS)Nr_z::idledebugwait�1)r7ryrz)r rrrr6szDebugger.abort_loopcCs~|jsN|j��rNt|j|j|�|_}|jrz|j�|jd�\}}|� ||�n,|j}|rp|j��spd|_|� �d|jd<dS)Nr5rO) r;r]ro� StackViewerrlrRrr,rtrur<)r rr�r�rrrr`$szDebugger.show_stackcCs|j��r|��dS)N)rbrorw)r rrrrc1s zDebugger.show_sourcecCs|d|_|��dS)Nr)rrv)r Z stackitemrrr� show_frame5s zDebugger.show_framecCsL|j}|j��r$|s@t|jd�|_n|r@d|_|��d|jd<|��dS)NrJr5rO)� localsviewerrdro�NamespaceViewerrmr<rv)r �lvrrrre<s  zDebugger.show_localscCsL|j}|j��r$|s@t|jd�|_n|r@d|_|��d|jd<|��dS)NrKr5rO)� globalsviewerrfror�rnr<rv)r �gvrrrrgHs  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�rZldictZgdictrrrrvTs 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)N)r+rRZ inversedict�ior%Z breakpointsr�rr)r Zeditwinr%r&rrr�load_breakpointsms zDebugger.load_breakpoints)N)N)N)r)!r'r(r)r]rbrdrfr r1r<r-rrwr�rVrXrYrZr8r6r;r`rcr�r�r�rergrvr�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 rRr r�)r �masterrRr 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)rrqNz%s, line %d: %sz%s.%s(), line %d: %sz> ) r��clear�range�lenr�rrr#� linecache�getline�striprWZselect) r r��indexr�rr&�modnamer$r%�funcnamer�Z sourceline�itemrrrru�s.    zStackViewer.load_stackcCs|jrt�||�SdS)N)r�r� popup_event)r r>rrrr��szStackViewer.popup_eventcCs*|j}|jd|jd�|jd|jd�dS)NzGo to source line)�labelrBzShow stack frame)�menuZ add_command�goto_source_line�show_stack_frame)r r�rrr� fill_menu�s  zStackViewer.fill_menucCs4d|krt|j�kr0nn|j�|j|�dS)Nr)r�r�r r�)r r�rrr� on_select�szStackViewer.on_selectcCs|�|�dS)N)rc)r r�rrr� on_double�szStackViewer.on_doublecCs|j�d�}|�|�dS)N�active)�listboxr�rc)r r�rrrr��s zStackViewer.goto_source_linecCs@|j�d�}d|kr&t|j�krs   .?SX