HEX
Server: Apache
System: Linux zacp120.webway.host 4.18.0-553.50.1.lve.el8.x86_64 #1 SMP Thu Apr 17 19:10:24 UTC 2025 x86_64
User: govancoz (1003)
PHP: 8.3.26
Disabled: exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname
Upload Files
File: //usr/local/lib/python3.10/idlelib/__pycache__/autocomplete_w.cpython-310.pyc
o

�iiR�@s�dZddlZddlTddlmZddlmZmZddlm	Z	dZ
dZed	fZd
Z
dZdZd
ZdZdZdZGdd�d�ZedkrNddlmZedddd�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@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!S)"�AutoCompleteWindowcCs�||_||_d|_|_|_d|_|_d|_d|_d|_	d|_
d|_d|_d|_
d|_|_|_|_|_|_d|_d|_dS)NF)�widget�tags�autocompletewindow�listbox�	scrollbar�origselforeground�origselbackground�completions�morecompletions�mode�start�
startindex�lasttypedstart�userwantswindowZhideid�
keypressid�listupdateid�winconfigid�keyreleaseid�
doubleclickid�lastkey_was_tab�is_configuring)�selfrr	�r�3/usr/local/lib/python3.10/idlelib/autocomplete_w.py�__init__s$��
zAutoCompleteWindow.__init__cCs�tt|j�t|��}d}||kr*|j|||kr*|d7}||kr*|j|||ks|t|j�krE|j�d|j|fd|jt|j�f�|t|�kr]|j�d|j|f||d�|j�||_dS)Nr��%s+%dc)�min�lenrr�deleter�insertr	)r�newstart�min_len�irrr�
_change_start@s��
�
z AutoCompleteWindow._change_startcCsZd}t|j�}||kr#||d}|j||kr|}n|d}||kst|t|j�d�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�mrrr�_binary_searchNs�z!AutoCompleteWindow._binary_searchc
Cs
|�|�}|j|dt|��|kr|S|d}t|j�}||kr?||d}|j|dt|��|kr7|}n|d}||ks!|d}||krL|j|S|j|}|j|}tt|�t|��}	t|�}||	kr||||kr|d7}||	kr||||kso|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!r+)r/rr$r#)
rr,�firstr)r-r.ZlastZ
first_compZ	last_compr(rrr�_complete_string[s,

�


�z#AutoCompleteWindow._complete_stringcCs\t|j��d�}|j�|�|j}|j|}|�|�|kr!|}n-tt|�t|��}d}||krH||||krH|d7}||krH||||ks8|d|�}|�	|�|j|dt|j
��|j
krn|jj|j|j
d�dS|jj|j�d�|j�d�d�|jr�|j|_d|_|j�dt�|jD]	}|j�t|�q�|j�|�|j
��|��dSdS)zzCall when the selection of the Listbox has changed.

        Updates the Listbox display and calls _change_start.
        rr!N)�selectbackground�selectforeground�bgZfg)�intr�curselection�seerrr/r#r$r*rZ	configurerr
�cgetrr%�ENDr&�
select_set�_selection_changed)r�curselZltsZselstartr'r(r)�itemrrrr;{s:
�


�
�
�z%AutoCompleteWindow._selection_changedcCsv|\|_|_||_|j�|�|_|j�|jd�|_|rQ|�|j�}|j}|�	|�|�
|�}|j||krQ|t|j�dksM|j|ddt|��|krQ||kS||_|j|_
t|j�|_}	|	�d�|	�d�z
|	j�dd|	jdd�Wn	ty�Ynwt|	td	�|_}
t|	|
jd
d�|_}|jD]}|�t|�q�|�d�|_|�d
�|_ |
j!|j"d�|
j#t$t%d�|j#t&t'dd�|	�(�|j�)|�
|j��|�*�|	�+t,|j-�|_.|j�+t,|j-�|_/|	�0t,t1�t2D]	}
|j�0t,|
�q�|j�+t3|j4�|_5t6D]
}
|j�0t3|
��q|j�+t7|j8�|_9|j�0t7t:�|�+t;|j<�|_=d
|_>|	�+t?|j@�|_A|�+tB|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�helpZnoActivates)ZorientF)ZyscrollcommandZexportselectionr3r2)Zcommand)�side�fillT)r@rA�expand)Errrr�indexr�getrr1r*r/r$rrZToplevelr
�wm_geometryZwm_overrideredirectZtk�callZ_w�TclErrorrZVERTICALrZListbox�setrr&r9r8r
rZconfigZyview�packZRIGHT�YZLEFTZBOTHZliftr:r;�bind�HIDE_VIRTUAL_EVENT_NAME�
hide_event�hideaid�hidewidZ	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)rZ
comp_listsrC�completerZuserWantsWinZ	completedrr)�acwrrr=�seqrrr�show_window�s|



���
����zAutoCompleteWindow.show_windowcCsJ|jrdSd|_|��sdSzk|j}|�|j�|�|j�\}}}}|j}t���	d�r0|�
�|��|��}}	|��|��}
}|�
�t|td|
|��}|��|}
||||	ksb||	krg|
|7}
n|
|	8}
|�d||
f�|��Wn	ty�Ynwt���	d�r�z	|�t|j�Wn	ty�Ynwd|_d|_dS)NTZWindowsrz+%d+%dF)r�	is_activerr7rZbboxr
�platform�system�
startswith�updateZwinfo_width�winfo_heightZwinfo_rootxr#�maxZwinfo_rootyrEZupdate_idletasksrG�unbindrZr)r�event�text�x�yZcx�cyr_Z	acw_widthZ
acw_height�
text_widthZtext_heightZnew_xZnew_yrrrr[�sB
��
z"AutoCompleteWindow.winconfig_eventcCsF|jsdSz|j��s|��WdSWdSty"|��YdSw�N)r
Z	focus_get�hide_window�KeyError�rrrr�_hide_event_check"s
��z$AutoCompleteWindow._hide_event_checkcCsH|��r |jtjkr|j�d|j�dS|jtjkr"|��dSdSdS)Nr!)	rb�typeZ	EventTypeZFocusOutrZafterrtZButtonPressrq�rrjrrrrM.s�zAutoCompleteWindow.hide_eventcCs8|��rd|_t|j��d�}|�|j|�dSdS)NTr)rbrr5rr6r*r�rrjr<rrrrY;s
�z#AutoCompleteWindow.listselect_eventcCs.t|j��d�}|�|j|�|��dS)Nr)r5rr6r*rrqrwrrrr]Asz$AutoCompleteWindow.doubleclick_eventcs|��sdS|j�t|d�r|j}nd}�dkrd|_t��dks.�dvs.|jtkr��dvr�|t@s�t��dkrB|�	|j
��n>�dkrO|�	|j
d	�n1�d
kr\|�	|j
d�n$�dkri|�	|j
d
�nt|j
�dkrv|��dS|�	|j
dd��|j
|_|j
�dt|j
��d��|j
�|�|j
��|��dS�dkr�|��|��dS|jtkr��dvs�|jtkr��dvr�|t@s�t|j
��d�}|j|dt|j
��|j
kr�|jtks�|j
r�|�	|j|�|��dS�dv�r�|�s�d|_t|j
��d�}�dk�rd}nb�dk�rt|j�d}nU�dv�rS|j
�|j
���|j
�d�}�dk�r?td||�}n4�dk�sFJ�tt|j�d||�}n �dk�r`td|d�}n�dk�sgJ�tt|j�d|d�}|j
�|�|j
�|�|��|�	|j|�dS�dk�r�|�s�|j�r�t|j
��d�}|�	|j|�|��dSd|_d|_dSt�fdd�dD���r�dS|j�r�|jdk�r�|�	|j
|j�|j
|_|j
�dt|j
��d��|j
�|�|j
��|��dS|��dS) N�mc_staterZTabFr!)�
underscoreZ	BackSpace)�period�minusry�_rz�.r{�-����breakZReturn)rz�spaceZ	parenleftZ
parenrightZbracketleftZbracketright)ZslashZ	backslashZquotedblZ
apostrophe)�Home�End�Prior�Next�Up�DownTr�r�)r�r�r�r�r�r�c3s�|]}|�vVqdSrpr)�.0r,��keysymrr�	<genexpr>�s�z4AutoCompleteWindow.keypress_event.<locals>.<genexpr>)ZShiftZControlZAltZMetaZCommandZOption� )rbr��hasattrrxrr$rrrr*rrqrrZselect_clearr5r6r:r/r;r^rrrZnearestrgrhr#�any�char)rrj�stater<ZnewselZjumprr�rrSGs�
�����
�



�

z!AutoCompleteWindow.keypress_eventcCsD|��sdS|j�d�|j�d|jt|j�f�kr |��dSdS)Nr&r")rbrrCrr$rrqrvrrrrV�s
��z#AutoCompleteWindow.keyrelease_eventcCs
|jduSrp)r
rsrrrrb�s
zAutoCompleteWindow.is_activecCs|�|�|j��dSrp)r*r1rrsrrrr^�szAutoCompleteWindow.completecCs |��sdS|j�tt�tD]	}|j�t|�q|j�t|j�|j�t|j	�d|_d|_	t
D]	}|j�t|�q1|j�t|j�d|_|j�t
t�|j�t
|j�d|_|j�t|j�d|_|jrq|j�t|j�d|_|j��|j��d|_|j��d|_|j��d|_dSrp)rbr
Zevent_deleterLrPrQrrirNrOrTrRrrUrWrrrXrrrZZ	focus_setrZdestroy)rr`rrrrq�s@��




zAutoCompleteWindow.hide_windowN)�__name__�
__module__�__qualname__r r*r/r1r;rar[rtrMrYr]rSrVrbr^rqrrrrrs"#
 &M4
tr�__main__)�mainz%idlelib.idle_test.test_autocomplete_wr+F)�	verbosity�exit)�__doc__rc�tkinterZtkinter.ttkrZidlelib.autocompleterrZidlelib.multicallrrLrPrQrRrTrUrWrXrZr\rr�Zunittestr�rrrr�<module>s0Z�