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

�KeiR���dZddlZddlTddlmZddlmZmZddlm	Z	dZ
dZed	fZd
Z
dZdZd
ZdZdZdZGd�d��ZedkrddlmZeddd���dSdS)zH
An auto-completion window for IDLE, used by the autocomplete extension
�N)�*)�	Scrollbar)�FILES�ATTRS)�MC_SHIFTz<<autocompletewindow-hide>>z
<FocusOut>z
<ButtonPress>z<<autocompletewindow-keypress>>)z<Key>z<Key-BackSpace>z<Key-Return>z	<Key-Tab>z<Key-Up>z
<Key-Down>z
<Key-Home>z	<Key-End>z<Key-Prior>z
<Key-Next>z<Key-Escape>z!<<autocompletewindow-keyrelease>>z<KeyRelease>z<B1-ButtonRelease>z<Configure>z<B1-Double-ButtonRelease>c�n�eZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d	�Zd
�Zd�Z
d�Zd
�Zd�Zd�Zd�ZdS)�AutoCompleteWindowc�:�||_||_dx|_x|_|_dx|_|_d|_d|_d|_	d|_
d|_d|_d|_
dx|_x|_x|_x|_x|_|_d|_d|_dS)NF)�widget�tags�autocompletewindow�listbox�	scrollbar�origselforeground�origselbackground�completions�morecompletions�mode�start�
startindex�lasttypedstart�userwantswindow�hideid�
keypressid�listupdateid�winconfigid�keyreleaseid�
doubleclickid�lastkey_was_tab�is_configuring)�selfrrs   �@/usr/local/apps/python3/lib/python3.11/idlelib/autocomplete_w.py�__init__zAutoCompleteWindow.__init__s��������	�BF�F���F�$�,���;?�>����!7����#�����	���
����#��� $���IM�	M���	M�d�o�	M��(9�	M���	M�#�0�4�3E�$���#�����c�2�tt|j��t|����}d}||kr9|j|||kr"|dz
}||kr|j|||k�"|t|j��krA|j�d|j|fzd|jt|j��fz��|t|��kr3|j�d|j|fz||d�|j��||_dS)Nr��%s+%dc)�min�lenrr�deleter�insertr)r!�newstart�min_len�is    r"�
_change_startz AutoCompleteWindow._change_start@s���c�$�*�o�o�s�8�}�}�5�5��
���'�k�k�d�j��m�x��{�:�:�
��F�A��'�k�k�d�j��m�x��{�:�:��s�4�:������K���x�4�?�A�*>�>�'�4�?�C��
�O�O�*L�L�
N�
N�
N��s�8�}�}����K���x�4�?�A�*>�>�'����|�#�y�
*�
*�
*���
�
�
r$c���d}t|j��}||kr'||zdz}|j||kr|}n|dz}||k�'t|t|j��dz
��S)z�Find the first index in self.completions where completions[i] is
        greater or equal to s, or the last index if there is no such.
        r�r&)r)rr()r!�sr.�j�ms     r"�_binary_searchz!AutoCompleteWindow._binary_searchNs~��
��3�t�'�(�(�q��!�e�e��Q��1��A����"�a�'�'������E���!�e�e��1�c�$�*�+�+�A�-�.�.�.r$c��|�|��}|j|dt|���|kr|S|dz}t|j��}||kr<||zdz}|j|dt|���|kr|}n|dz}||k�<|dz
}||kr
|j|S|j|}|j|}tt|��t|����}	t|��}||	kr/||||kr|dz
}||	kr||||k�|d|�S)z�Assuming that s is the prefix of a string in self.completions,
        return the longest string which is a prefix of all the strings which
        s is a prefix of them. If s is not a prefix of a string, return s.
        Nr&r1)r5rr)r()
r!r2�firstr.r3r4�last�
first_comp�	last_compr-s
          r"�_complete_stringz#AutoCompleteWindow._complete_string[s]��
�#�#�A�&�&����E�"�7�C��F�F�7�+�q�0�0��H��A�I���� �!�!���!�e�e��Q��1��A����"�7�C��F�F�7�+�q�0�0������E���!�e�e���s���D�=�=��#�E�*�*��%�e�,�
��$�T�*�	��c�*�o�o�s�9�~�~�6�6����F�F���'�k�k�j��m�y��|�;�;�
��F�A��'�k�k�j��m�y��|�;�;��"�1�"�~�r$c��t|j���d��}|j�|��|j}|j|}|�|��|kr|}nktt|��t|����}d}||kr/||||kr|dz
}||kr||||k�|d|�}|�	|��|j|dt|j
���|j
kr(|j�|j|j
���dS|j�|j�d��|j�d�����|jr�|j|_d|_|j�dt"��|jD]"}|j�t"|���#|j�|�|j
����|���dSdS)zzCall when the selection of the Listbox has changed.

        Updates the Listbox display and calls _change_start.
        rr&N)�selectbackground�selectforeground�bg�fg)�intr�curselection�seerrr5r(r)r/r�	configurerr�cgetrr*�ENDr+�
select_set�_selection_changed)r!�cursel�lts�selstartr,r-r.�items        r"rHz%AutoCompleteWindow._selection_changed{sH��
�T�\�.�.�0�0��3�4�4������� � � ��!���#�F�+�����s�#�#�v�-�-��H�H��#�c�(�(�C��M�M�2�2�G��A��g�+�+�#�a�&�H�Q�K�"7�"7��Q����g�+�+�#�a�&�H�Q�K�"7�"7�����|�H����8�$�$�$���F�#�$4�S���_�_�$4�5���C�C��L�"�"�D�4J�48�4J�
#�
L�
L�
L�
L�
L�
�L�"�"�D�L�4E�4E�d�4K�4K�48�L�4E�4E�d�4K�4K�
#�
M�
M�
M��#�
*�#'�#7�� �'+��$���#�#�A�s�+�+�+� �,�3�3�D��L�'�'��T�2�2�2�2���'�'��(;�(;�D�J�(G�(G�H�H�H��'�'�)�)�)�)�)�
*�
*r$c� 	�|\|_|_||_|j�|��|_|j�|jd��|_|r�|�|j��}|j}|�	|��|�
|��}|j||krJ|t|j��dz
ks)|j|dzdt|���|kr||kS||_|j|_
t|j��x|_}	|	�d��|	�d��	|	j�dd|	jdd��n#t*$rYnwxYwt-|	t.�	��x|_}
t3|	|
jd
���x|_}|jD]}|�t:|���|�d��|_|�d
��|_ |
�!|j"���|
�#tHtJ���|�#tLtNd���|	�(��|j�)|�
|j����|�*��|	�+tX|j-��|_.|j�+tX|j-��|_/|	�0tXtb��tdD]"}
|j�0tX|
���#|j�+tf|j4��|_5tlD]"}
|j�0tf|
���#|j�+tn|j8��|_9|j�0tntt��|�+tv|j<��|_=d
|_>|	�+t~|j@��|_A|�+t�|jC��|_DdS)z�Show the autocomplete list, bind events.

        If complete is True, complete the text, and if there is exactly
        one matching completion, don't open a list.
        r+r&Nz+10000+10000z!::tk::unsupported::MacWindowStyle�style�help�noActivates)�orientF)�yscrollcommand�exportselectionr>r=)�command)�side�fillT)rUrV�expand)Errrr�indexr�getrr;r/r5r)rr�Toplevelr
�wm_geometry�wm_overrideredirect�tk�call�_w�TclErrorr�VERTICALr�Listbox�setrr+rFrErr�config�yview�pack�RIGHT�Y�LEFT�BOTH�liftrGrH�bind�HIDE_VIRTUAL_EVENT_NAME�
hide_event�hideaid�hidewid�	event_add�HIDE_FOCUS_OUT_SEQUENCE�HIDE_SEQUENCES�KEYPRESS_VIRTUAL_EVENT_NAME�keypress_eventr�KEYPRESS_SEQUENCES�KEYRELEASE_VIRTUAL_EVENT_NAME�keyrelease_eventr�KEYRELEASE_SEQUENCE�LISTUPDATE_SEQUENCE�listselect_eventrr �WINCONFIG_SEQUENCE�winconfig_eventr�DOUBLECLICK_SEQUENCE�doubleclick_eventr)r!�
comp_listsrX�completer�userWantsWin�	completedrr.�acwrrrL�seqs              r"�show_windowzAutoCompleteWindow.show_window�s.��2<�.���$�.���	��+�+�+�E�2�2����[�_�_�T�_�h�?�?��
��		*��-�-�d�j�9�9�I��J�E����y�)�)�)��#�#�I�.�.�A����"�i�/�/��S��)�*�*�1�,�,�,�� ��1��%�o�s�9�~�~�o�6�)�C�C� �E�)�)�+���"�j���)1���(=�(=�=���#�����'�'�'�����"�"�"�	�
�F�K�K�;�W�c�f��
�
/�
/�
/�
/���	�	�	��D�	����%.�s�8�%D�%D�%D�D����!(��Y�]�9>�"@�"@�"@�	@���w��$�	&�	&�D��N�N�3��%�%�%�%�!(���.@�!A�!A���!(���.@�!A�!A���������/�/�/����E���*�*�*����$�T�$��7�7�7����
�
�
�	
����� 3� 3�D�J� ?� ?�@�@�@����!�!�!��x�x� 7���I�I����{�'�'�(?���Q�Q����
�
�-�/F�G�G�G�!�	@�	@�C��K�!�!�"9�3�?�?�?�?��+�*�*�+F�+/�+>�@�@���%�	D�	D�C��K�!�!�"=�s�C�C�C�C� �K�,�,�-J�-1�-B�D�D�������;�<O�P�P�P�#�L�L�)<�)-�)>�@�@���#����8�8�$6��8L�M�M���$�\�\�*>�*.�*@�B�B����ts�#F�
F
�F
c	��|jrdSd|_|���sdS	|j}|�|j��|�|j��\}}}}|j}tj���	d��r|�
��|���|���}	}|���|���}}
|�
��t|td|
|z
����z}|���|z}
|||zz
|	ks||	kr|
|z
}
n|
|	z}
|�d||
fz��|���n#t&$rYnwxYwtj���	d��r9	|�t*|j��n#t&$rYnwxYwd|_d|_dS)NT�Windowsrz+%d+%dF)r �	is_activerrCr�bboxr
�platform�system�
startswith�update�winfo_width�winfo_height�winfo_rootxr(�max�winfo_rootyr[�update_idletasksr`�unbindr|r)r!�event�text�x�y�cx�cyr��	acw_width�
acw_height�
text_width�text_height�new_x�new_ys              r"r}z"AutoCompleteWindow.winconfig_event�s ����	��F�"����~�~���	��F�	��;�D��H�H�T�_�%�%�%��9�9�T�_�5�5�L�A�q�"�b��)�C��� � �+�+�I�6�6�
��
�
����$'�O�O�$5�$5�s�7G�7G�7I�7I�z�I�&*�&6�&6�&8�&8�$�:K�:K�:M�:M��J��$�$�&�&��Q��A�z�I�7M�0N�0N�)O�)O�O�E��$�$�&�&��*�E��q�2�v�&�*�4�4��z�>�>��������#���O�O�H��u�~�5�6�6�6�� � �"�"�"�"���	�	�	��D�	�����?���'�'�	�2�2�	$�
��
�
�-�t�/?�@�@�@�@���
�
�
���
����#�D��#����s$�E)F�
F�F�	 G*�*
G7�6G7c���|jsdS	|j���s|���dSdS#t$r|���YdSwxYw�N)r
�	focus_get�hide_window�KeyError�r!s r"�_hide_event_checkz$AutoCompleteWindow._hide_event_check"s����&�	��F�	��*�4�4�6�6�
#�� � �"�"�"�"�"�
#�
#���	�	�	�
���������	���s�-<�A�Ac��|���rb|jtjkr"|j�d|j��dS|jtjkr|���dSdSdS)Nr&)	r��type�	EventType�FocusOutr�afterr��ButtonPressr��r!r�s  r"rnzAutoCompleteWindow.hide_event.s����>�>���	#��z�Y�/�/�/���!�!�!�T�%;�<�<�<�<�<���y�4�4�4�� � �"�"�"�"�"�	#�	#�5�4r$c���|���rUd|_t|j���d��}|�|j|��dSdS)NTr)r�rrArrBr/r�r!r�rIs   r"r{z#AutoCompleteWindow.listselect_event;sh���>�>���	9�#'�D� ����2�2�4�4�Q�7�8�8�F����t�/��7�8�8�8�8�8�	9�	9r$c���t|j���d��}|�|j|��|���dS)Nr)rArrBr/rr�r�s   r"rz$AutoCompleteWindow.doubleclick_eventAsV���T�\�.�.�0�0��3�4�4�����4�+�F�3�4�4�4��������r$c�f��|���sdS|j�t|d��r|j}nd}�dkrd|_t���dks�dvs|jtk�r��dv�r�|tz�s�t���dkr|�	|j
�z��n��dkr|�	|j
d	z��n��d
kr|�	|j
dz��nt�dkr|�	|j
d
z��nPt|j
��dkr|���dS|�	|j
dd���|j
|_|j
�dt|j
���d����|j
�|�|j
����|���dS�dkr*|���|���dS|jt*kr�dvs|jtkr��dvr�|tzs�t|j
���d��}|j|dt|j
���|j
kr7|jt*ks|j
r |�	|j|��|���dS�dv�r�|�s�d|_t|j
���d��}�dkrd}n�dkrt|j��dz
}nՉdvr�|j
�|j
�����|j
�d��z
}�dkrt5d||z
��}nkt7t|j��dz
||z��}nB�dkrt5d|dz
��}n(t7t|j��dz
|dz��}|j
�|��|j
�|��|���|�	|j|��dS�dkr{|sy|jrbt|j
���d��}|�	|j|��|���dSd|_d|_dSt9�fd�dD����rdS|jr�|jdkr�|�	|j
|jz��|j
|_|j
�dt|j
���d����|j
�|�|j
����|���dS|���dS)N�mc_stater�TabFr&)�
underscore�	BackSpace)�period�minusr��_r��.r��-����break�Return)r��space�	parenleft�
parenright�bracketleft�bracketright)�slash�	backslash�quotedbl�
apostrophe)�Home�End�Prior�Next�Up�DownTr�r�)r�r�r�r�c3� �K�|]}|�vV��	dSr��)�.0r2�keysyms  �r"�	<genexpr>z4AutoCompleteWindow.keypress_event.<locals>.<genexpr>�s?�����E�E���f��E�E�E�E�E�Er$)�Shift�Control�Alt�Meta�Command�Option� )r�r��hasattrr�rr)rrrr/rr�rr�select_clearrArBrGr5rHr�rrr�nearestr�r�r(�any�char)r!r��staterI�newsel�jumpr�s      @r"ruz!AutoCompleteWindow.keypress_eventGsH����~�~���	��4�����5�*�%�%�	��N�E�E��E��U�?�?�#(�D� ���K�K�1����*E� E� E��	�U�"�"�v�#�($�($��X�I�%�($��6�{�{�a����"�"�4�:��#6�7�7�7�7��<�'�'��"�"�4�:��#3�4�4�4�4��8�#�#��"�"�4�:��#3�4�4�4�4��7�"�"��"�"�4�:��#3�4�4�4�4��t�z�?�?�a�'�'��$�$�&�&�&��4��"�"�4�:�c�r�c�?�3�3�3�"&�*�D���L�%�%�a��T�\�-F�-F�-H�-H��-K�)L�)L�M�M�M��L�#�#�D�$7�$7��
�$C�$C�D�D�D��#�#�%�%�%��7�
�x�
�
��M�M�O�O�O��������7��i�5� � �V��&�&��i�5� � �V�>�&?�&?��x�i�'�&?����2�2�4�4�Q�7�8�8�F����'�(8��T�Z���(8�9�T�Z�G�G��I��&�&�$�*�&��"�"�4�#3�F�#;�<�<�<��������4�
�E�
E�
E��F�$(�D� ����2�2�4�4�Q�7�8�8�F���������5����T�-�.�.�q�0����,�,�,��|�+�+�D�L�,E�,E�,G�,G�H�H��|�+�+�A�.�.�/���W�$�$� ��F�4�K�0�0�F�F�!��T�%5�!6�!6�q�!8�&��+�F�F�F�F��4����Q��q��)�)����S��!1�2�2�1�4�f�Q�h�?�?���L�%�%�f�-�-�-��L�#�#�F�+�+�+��#�#�%�%�%����t�/��7�8�8�8��7���o�o�e�o��#�

��T�\�6�6�8�8��;�<�<���"�"�4�#3�F�#;�<�<�<�� � �"�"�"��w�(,��$�'+��$��t�
�E�E�E�E�'D�E�E�E�E�E�	��4�
�Z�	�E�J�#�-�-����t�z�E�J�6�7�7�7�"&�*�D���L�%�%�a��T�\�-F�-F�-H�-H��-K�)L�)L�M�M�M��L�#�#�D�$7�$7��
�$C�$C�D�D�D��#�#�%�%�%��7�
�������4r$c��|���sdS|j�d��|j�d|jt	|j��fz��kr|���dSdS)Nr+r')r�rrXrr)rr�r�s  r"rxz#AutoCompleteWindow.keyrelease_event�s����~�~���	��F��;���X�&�&��;���X���#�d�j�/�/�(J�J�K�K�L�L�
��������L�Lr$c��|jduSr�)r
r�s r"r�zAutoCompleteWindow.is_active�s���&�d�2�2r$c�`�|�|�|j����dSr�)r/r;rr�s r"r�zAutoCompleteWindow.complete�s,�����4�0�0���<�<�=�=�=�=�=r$c�~�|���sdS|j�tt��t
D]"}|j�t|���#|j�t|j��|j�t|j	��d|_d|_	tD]"}|j�t|���#|j�t|j��d|_|j�tt��|j�t|j��d|_|j�t"|j��d|_|jr,|j�t(|j��d|_|j���|j���d|_|j���d|_|j���d|_dSr�)r�r
�event_deletermrrrsrr�rorprvrtrrwryrrrzrrr|�	focus_setr�destroy)r!r�s  r"r�zAutoCompleteWindow.hide_window�s	���~�~���	��F�	
��,�,�-D�-D�	F�	F�	F�!�	C�	C�C��K�$�$�%<�c�B�B�B�B���&�&�'>���M�M�M�����2�D�L�A�A�A�������%�	G�	G�C��K�$�$�%@�#�F�F�F�F�����6���H�H�H������ � �!>�!4�	6�	6�	6�����8�$�:K�L�L�L� �������/��1B�C�C�C� �����	$��#�*�*�+=�t�?O�P�P�P�#�D��	
�������	
���� � � ����������������'�'�)�)�)�"&����r$N)�__name__�
__module__�__qualname__r#r/r5r;rHr�r}r�rnr{rrurxr�r�r�r�r$r"r	r	s������!$�!$�!$�F���/�/�/����@$*�$*�$*�LK�K�K�Z2$�2$�2$�h
�
�
�#�#�#�9�9�9����r�r�r�h���3�3�3�>�>�>�%'�%'�%'�%'�%'r$r	�__main__)�mainz%idlelib.idle_test.test_autocomplete_wr1F)�	verbosity�exit)�__doc__r��tkinter�tkinter.ttkr�idlelib.autocompleterr�idlelib.multicallrrmrrrsrtrvrwryrzr|r~r	r��unittestr�r�r$r"�<module>r�s������������!�!�!�!�!�!�-�-�-�-�-�-�-�-�&�&�&�&�&�&�7��&��)�?�;��?��C��!D��$��*��"��2��T'�T'�T'�T'�T'�T'�T'�T'�n�z����������D�	0�A�E�J�J�J�J�J�J��r$