Current File : //usr/local/apps/python3/lib/python3.11/idlelib/__pycache__/codecontext.cpython-311.opt-2.pyc
�

�Ke�,���	ddlZddlmZddlmZmZmZddlm	Z	m
Z
ddlmZhd�Z
ejd��fd�Zd	�ZGd
�d��Ze���edkrdd
lmZeddd���dSdS)�N)�maxsize)�Frame�Text�TclError)�NSEW�SUNKEN)�idleConf>�if�def�for�try�elif�else�with�async�class�while�except�finallyz^(\s*)(\w*)c�R�	|�|�����S�N)�match�groups)�codeline�cs  �=/usr/local/apps/python3/lib/python3.11/idlelib/codecontext.py�get_spaces_firstwordrs#��D��7�7�8���#�#�%�%�%�c��	t|��\}}t|��}t|��|ks||dkrt}|tvo|}|||fS)N�#)r�len�INFINITY�BLOCKOPENERS)r�spaces�	firstword�indent�openers     r�
get_line_infor(sg���
-�X�6�6��F�I�
��[�[�F�
�8�}�}����(�6�"2�c�"9�"9���
�,�
&�
4�9�F��8�V�#�#rc�l�eZdZ	dZd�Zd�Zed���Zd�Zdd�Z	dd
�Z
d�Zdd�Zd
�Z
d�Zd�ZdS)�CodeContext�dc�V�	||_|j|_|���dSr)�editwin�text�_reset)�selfr-s  r�__init__zCodeContext.__init__1s*��	� ����L��	����
�
�
�
�
rc�N�d|_d|_d|_d|_dg|_dS)N�)r����F)�context�cell00�t1�
topvisible�info�r0s rr/zCodeContext._resetFs,��������������'�(��	�	�	rc�D�	tjddddd���|_dS)N�
extensionsr*�maxlines�int�)�type�default)r	�	GetOption�
context_depth)�clss r�reloadzCodeContext.reloadMs1��+�$�.�|�]�/9��79�;�;�;����rc��	|j�:	|j�|j��n#t$rYnwxYwd|_dSdSr)r8r.�after_cancelrr;s r�__del__zCodeContext.__del__Ts`��"��7��
��	�&�&�t�w�/�/�/�/���
�
�
���
�����D�G�G�G��s�*�
7�7Nc
��	|j���|jj|jjf}d}d}|D]�}||jjur|���n|���}||j�|d��z
}||j�|�d����z
}||j�|�d����z
}��t|jjddd||td���x}|_|���|���|�
d|j��|���|�ddt"���t%jt%j��d	��}t+|jj|d
���|_|j�ddt"���d}	nu|j���d|_|j���d|_|j�|j��|���d
}	|j�dd|	�d����dS)Nr�padx�borderr3�disabled)�height�width�highlightthicknessrKrL�relief�statez<ButtonRelease-1>)�row�column�sticky�
linenumber�
background��bg�Hide�Show�optionsz*ode*ontextz
 Code Context)�menu�index�label�break)r6r-r.�
text_frame�	grid_info�	pack_info�tk�getint�cgetrr�update_font�update_highlight_colors�bind�
jumptoline�timer_event�gridrr	�GetHighlight�CurrentThemerr7�destroyrHr8r/�update_menu_label)
r0�event�widgetsrKrL�widgetr:r6�line_number_colors�menu_statuss
          r�toggle_code_context_eventz%CodeContext.toggle_code_context_event]s���	��<���l�'���)@�@�G��D��F�!�
B�
B��!�T�\�%6�6�6��(�(�*�*�*�#�-�-�/�/����	�(�(��f��6�6�6����	�(�(����V�)<�)<�=�=�=���&�)�*�*�6�;�;�x�+@�+@�A�A�A���%)���'���#$��&��z�&K�&K�&K�
K�G�d�l�
�������(�(�*�*�*��L�L�,�d�o�>�>�>��������L�L�Q�q��L�6�6�6�!)�!6�x�7L�7N�7N�7C�"E�"E����� 7�+=�l�+K�M�M�M�D�K��K����1�T��:�:�:� �K�K��L� � �"�"�"��D�L��K���!�!�!��D�K��I�"�"�4�7�+�+�+��K�K�M�M�M� �K���&�&�I�]�0;�-J�-J�-J�	'�	L�	L�	L��wrr3rc�\�	g}t}t||dz
d��D]v}|j�|�d�|�d���}t	|��\}}	}
||kr:|}|
dvr|dz
}|
r%||kr||kr|�|||	|
f��||krn�w|���||fS)Nr3r4�.0z.end)rr)r"�ranger.�getr(�append�reverse)r0�new_topvisible�stopline�
stopindent�lines�
lastindent�linenumrr&r.r's           r�get_contextzCodeContext.get_context�s���	����
��^�X�a�Z��<�<�	�	�G��y�}�}��^�^�^��5E�5E�5E�F�F�H�#0��#:�#:� �F�D�&��
�"�"�#�
��-�-�-��!�O�J��B�g��6�6�6�Z�;O�;O��L�L�'�6�4��!@�A�A�A���+�+��E��
�
�
�����j� � rc���	|j�d��}|j|krdS|j|krU|�||j��\}}|jdd|kr|jd=|jdd|k�n�|jdddz}|jdd|kr2|jdd}|jd=|jdd|k�2|�||jdddz|��\}}|j�|��||_d�|j|jd�D��}|drdnd}t|��|z
|jd<d|jd<|j�	d	d
��|j�
d
d�||d�����d|jd<dS)
Nz@0,0r4r3rc��g|]
}|d��S)��)�.0�xs  r�
<listcomp>z3CodeContext.update_code_context.<locals>.<listcomp>�s��I�I�I�A�1�Q�4�I�I�IrrN�normalrRz1.0�end�
rM)r-�	getlinenor9r�r:�extendrDr!r6�delete�insert�join)r0r}r�r�r�context_strings�	showfirsts       r�update_code_contextzCodeContext.update_code_context�s��	���/�/��7�7���?�n�,�,��F��?�^�+�+� $� 0� 0��15��!B�!B��E�:��)�B�-��"�j�0�0��I�b�M��)�B�-��"�j�0�0����2��q�)�A�-�J��)�B�-��"�n�4�4�!�Y�r�]�1�-�
��I�b�M��)�B�-��"�n�4�4�!%� 0� 0��15��2��q�1A�!�1C�1;�!=�!=��E�:�	
�	�������(���I�I���D�4F�3F�3G�3G�)H�I�I�I��(��+�2�A�A��	�!$�_�!5�!5�	�!A���X�� (���W������E�5�)�)�)�����E�4�9�9�_�Y�Z�Z�-H�#I�#I�J�J�J� *���W���rc���		|j�d��dS#t$r�t|j��}|dkrd}nett
|j�d������}td||jz
��dz
}|j||zd}|j	�
|�d���|���YdSwxYw)Nz	sel.firstr3r�rrx)r6r^rr!r:r?�float�maxrDr.�yviewr�)r0rqr��newtop�contextline�offsets      rrjzCodeContext.jumptoline�s���	�

	'��L���{�+�+�+�+�+���	'�	'�	'���	�N�N�E���z�z����"�%���(:�(:�8�(D�(D�"E�"E�F�F���Q���(:� :�;�;�a�?����6�K�#7�8��;���I�O�O�v�M�M�M�*�*�*��$�$�&�&�&�&�&�&�	'���s��B=C �C c��	|j�@|���|j�|j|j��|_dSdSr)r6r�r.�after�UPDATEINTERVALrkr8r;s rrkzCodeContext.timer_event�sH��H��<�#��$�$�&�&�&��i�o�o�d�&9�4�;K�L�L�D�G�G�G�$�#rc�b�|j�'tj|jdd��}||jd<dSdS)N�main�EditorWindow�font)r6r	�GetFontr.)r0r�s  rrgzCodeContext.update_font�s:���<�#��#�D�I�v�~�F�F�D�#'�D�L�� � � �$�#rc�@�|j�Ftjtj��d��}|d|jd<|d|jd<|j�Itjtj��d��}|j�|d���dSdS)Nr6rW�
foregroundrVrX)r6r	rmrnr7�config)r0�colorsrts   rrhz#CodeContext.update_highlight_colors�s����<�#��*�8�+@�+B�+B�I�N�N�F�)/��)=�D�L��&�)/��)=�D�L��&��;�"�!)�!6�x�7L�7N�7N�7C�"E�"E���K���"4�\�"B��C�C�C�C�C�#�"rr)r3r)�__name__�
__module__�__qualname__r�r1r/�classmethodrFrIrvr�r�rjrkrgrhr�rrr*r*-s�������2��N����*)�)�)��;�;��[�;����6�6�6�6�p!�!�!�!�<&+�&+�&+�P'�'�'�'�*M�M�M�(�(�(�
	D�	D�	D�	D�	Drr*�__main__)r�z"idlelib.idle_test.test_codecontextr�F)�	verbosity�exit)�re�sysrr"�tkinterrrr�tkinter.constantsrr�idlelib.configr	r#�compilerr(r*rFr��unittestr�r�rr�<module>r�sF���
�	�	�	�#�#�#�#�#�#�)�)�)�)�)�)�)�)�)�)�*�*�*�*�*�*�*�*�#�#�#�#�#�#�>�>�>��&0�R�Z��%?�%?�&�&�&�&�
$�$�$�WD�WD�WD�WD�WD�WD�WD�WD�t�������z����������D�	-���G�G�G�G�G�G��r