Your IP : 3.148.145.219


Current Path : /opt/alt/python34/lib64/python3.4/idlelib/__pycache__/
Upload File :
Current File : //opt/alt/python34/lib64/python3.4/idlelib/__pycache__/AutoCompleteWindow.cpython-34.pyo

�
e fKE�
@s�dZddlTddlmZddlmZmZdZdZdZ	dZ
dZdZdZ
dZdZGdd�d�ZdS)zH
An auto-completion window for IDLE, used by the AutoComplete extension
�)�*)�MC_SHIFT)�COMPLETE_FILES�COMPLETE_ATTRIBUTESz<<autocompletewindow-hide>>�
<FocusOut>�
<ButtonPress>z<<autocompletewindow-keypress>>�<Key>�<Key-BackSpace>�<Key-Return>�	<Key-Tab>�<Key-Up>�
<Key-Down>�
<Key-Home>�	<Key-End>�<Key-Prior>�
<Key-Next>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�ZdS) �AutoCompleteWindowcCs�||_d|_|_|_d|_|_d|_d|_d|_d|_	d|_
d|_d|_d|_
|_|_|_|_|_d|_dS)NF)�widget�autocompletewindow�listbox�	scrollbar�origselforeground�origselbackground�completions�morecompletions�mode�start�
startindex�lasttypedstart�userwantswindow�hideid�
keypressid�listupdateid�winconfigid�keyreleaseid�
doubleclickid�lastkey_was_tab)�selfr�r(�?/opt/alt/python34/lib64/python3.4/idlelib/AutoCompleteWindow.py�__init__s								,zAutoCompleteWindow.__init__cCs�tt|j�t|��}d}x1||krW|j|||krW|d7}q'W|t|j�kr�|jjd|j|fd|jt|j�f�n|t|�kr�|jjd|j|f||d��n||_dS)Nr�z%s+%dc)�min�lenrr�deleter�insert)r'�newstart�min_len�ir(r(r)�
_change_start8s& z AutoCompleteWindow._change_startcCsvd}t|j�}xD||kr[||d}|j||krN|}q|d}qWt|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
        one.r�r+)r-rr,)r'�sr2�j�mr(r(r)�_binary_searchEs	z!AutoCompleteWindow._binary_searchc
CsG|j|�}|j|dt|��|kr6|S|d}t|j�}xT||kr�||d}|j|dt|��|kr�|}qR|d}qRW|d}||kr�|j|S|j|}|j|}tt|�t|��}	t|�}x.||	kr8||||kr8|d7}qW|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+r4)r8rr-r,)
r'r5�firstr2r6r7�lastZ
first_compZ	last_compr1r(r(r)�_complete_stringRs(#
#	


#z#AutoCompleteWindow._complete_stringcCs�t|jj�d�}|jj|�|j}|j|}|j|�|kr]|}nbtt|�t|��}d}x.||kr�||||kr�|d7}q�W|d|�}|j	|�|j|dt|j
��|j
kr|jjd|jd|j
�n�|jjd|jjd�d|jjd��|jr�|j|_d|_|jjdt�x$|jD]}|jjt|�q�W|jj|j|j
��|j�ndS)z|Should be called when the selection of the Listbox has changed.
        Updates the Listbox display and calls _change_start.rr+N�selectbackground�selectforeground�bgZfg)�intr�curselection�seerrr8r,r-r3rZ	configurerr�cgetrr.�ENDr/�
select_set�_selection_changed)r'�curselZltsZselstartr0r1r2�itemr(r(r)rEqs2	
	#
)
		z%AutoCompleteWindow._selection_changedcCs[|\|_|_||_|jj|�|_|jj|jd�|_|r�|j|j�}|j}|j	|�|j
|�}|j||kr�|t|j�dks�|j|ddt|��|kr�||kSn||_|j|_
t|j�|_}	|	jd�|	jd�y#|	jjdd|	jdd�Wntk
rdYnXt|	d	t�|_}
t|	d
|
jddd
d�|_}x!|jD]}|jt|�q�W|jd�|_|jd�|_ |
j!d|j"�|
j#dt$dt%�|j#dt&dt'dd�|	j(�|jj)|j
|j��|j*�|jj+t,|j-�|_.x!t/D]}
|jj0t,|
�q�W|jj+t1|j2�|_3x!t4D]}
|jj0t1|
�q�W|jj+t5|j6�|_7|jj0t5t8�|j+t9|j:�|_;|	j+t<|j=�|_>|j+t?|j@�|_AdS)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::MacWindowStyleZstyle�helpZnoActivatesZorientZyscrollcommandZexportselectionFr>Zwhiter=r<ZcommandZsideZfill�expandT)Brrrr�indexr�getrr;r3r8r-rrZToplevelr�wm_geometryZwm_overrideredirectZtk�callZ_wZTclErrorZ	ScrollbarZVERTICALrZListbox�setrr/rCrBrr�configZyviewZpackZRIGHT�YZLEFTZBOTHZliftrDrEZbind�HIDE_VIRTUAL_EVENT_NAME�
hide_eventr �HIDE_SEQUENCESZ	event_add�KEYPRESS_VIRTUAL_EVENT_NAME�keypress_eventr!�KEYPRESS_SEQUENCES�KEYRELEASE_VIRTUAL_EVENT_NAME�keyrelease_eventr$�KEYRELEASE_SEQUENCE�LISTUPDATE_SEQUENCE�listselect_eventr"�WINCONFIG_SEQUENCE�winconfig_eventr#�DOUBLECLICK_SEQUENCE�doubleclick_eventr%)r'Z
comp_listsrJ�completerZuserWantsWinZ	completedrr2�acwrrrG�seqr(r(r)�show_window�sh		
'
	






		zAutoCompleteWindow.show_windowcCs
|j�sdS|j}|j|j�|j|j�\}}}}|j}|j�|j�}}	|j�|j�}
}|j�t	|t
d|
|��}|j�|}
||||	ks�||	kr�|
|7}
n
|
|	8}
|jd||
f�dS)Nrz+%d+%d)
�	is_activerrArZbboxrZwinfo_width�winfo_heightZwinfo_rootxr,�maxZwinfo_rootyrL)r'�event�text�x�yZcxZcyraZ	acw_widthZ
acw_heightZ
text_widthZtext_heightZnew_xZnew_yr(r(r)r]�s		&

z"AutoCompleteWindow.winconfig_eventcCs|j�sdS|j�dS)N)rd�hide_window)r'rgr(r(r)rR�szAutoCompleteWindow.hide_eventcCsJ|j�sdSd|_t|jj�d�}|j|j|�dS)NTr)rdrr?rr@r3r)r'rgrFr(r(r)r[�s
	z#AutoCompleteWindow.listselect_eventcCs;t|jj�d�}|j|j|�|j�dS)Nr)r?rr@r3rrk)r'rgrFr(r(r)r_�sz$AutoCompleteWindow.doubleclick_eventcs9|j�sdS|j�t|d�r4|j}nd}�dkrRd|_nt��dks��d(ks�|jtkr��d)kr�|t@r�t��dkr�|j	|j
��n��dkr�|j	|j
d
�n��dkr|j	|j
d�n`�d	kr)|j	|j
d�n=t|j
�dkrL|j�dS|j	|j
dd*��|j
|_|j
jdt|j
j�d��|j
j|j|j
��|j�d
S�dkr�|j�dS|jtkr��d+ks|jtkr��d,kr�|t@r�t|j
j�d�}|j|dt|j
��|j
kr�|jtksx|j
r�|j	|j|�n|j�dS�d-kr	|r	d|_t|j
j�d�}�dkr�d}n��dkr	t|j�d}n��d.kr�|j
j|j
j��|j
jd�}�dkrbtd||�}q�tt|j�d||�}nB�dkr�td|d�}n tt|j�d|d�}|j
j|�|j
j|�|j�|j	|j|�d
S�dkry|ry|jr`t|j
j�d�}|j	|j|�|j�d
Sd|_d|_dSn�t�fdd �d/D��r�dS|jr'|jd'kr'|j	|j
|j�|j
|_|j
jdt|j
j�d��|j
j|j|j
��|j�d
S|j�dSdS)0N�mc_staterZTabFr+�
underscore�	BackSpace�period�minus�_�.�-�breakZReturn�space�	parenleft�
parenright�bracketleft�bracketright�slash�	backslash�quotedbl�
apostrophe�Home�End�Prior�Next�Up�DownTc3s|]}|�kVqdS)Nr()�.0r5)�keysymr(r)�	<genexpr>bsz4AutoCompleteWindow.keypress_event.<locals>.<genexpr>�Shift�Control�Alt�Meta�Command�Option� )rmrn)rorp���)rorurvrwrxry)rzr{r|r})r~rr�r�r�r�)r�r�)r�r�r�r�r�r�)rdr��hasattrrlr&r-rrrr3rrkrrZselect_clearr?r@rDr8rErrrZnearestrerfr,�any�char)r'rg�staterFZnewsel�jumpr()r�r)rUs�		
&

		)
		# 
	
		
&

z!AutoCompleteWindow.keypress_eventcCs[|j�sdS|jjd�|jjd|jt|j�f�krW|j�ndS)Nr/z%s+%dc)rdrrJrr-rrk)r'rgr(r(r)rXus
+z#AutoCompleteWindow.keyrelease_eventcCs
|jdk	S)N)r)r'r(r(r)rd}szAutoCompleteWindow.is_activecCs|j|j|j��dS)N)r3r;r)r'r(r(r)r`�szAutoCompleteWindow.completecCsL|j�sdSx!tD]}|jjt|�qW|jjt|j�d|_x!tD]}|jjt|�qZW|jjt|j	�d|_	|jjt
t�|jjt
|j�d|_|j
jt|j�d|_|jjt|j�d|_|jj�d|_|j
j�d|_
|jj�d|_dS)N)rdrSrZevent_deleterQZunbindr rVrTr!rWrYr$rrZr"rr\r#rZdestroy)r'rbr(r(r)rk�s0
	
				
	
	
zAutoCompleteWindow.hide_windowN)�__name__�
__module__�__qualname__r*r3r8r;rErcr]rRr[r_rUrXrdr`rkr(r(r(r)rs 

$FsrN)rr)
rr	r
rrr
rrrr)�__doc__ZtkinterZidlelib.MultiCallrZidlelib.AutoCompleterrrQrSrTrVrWrYrZr\r^rr(r(r(r)�<module>s


?>