<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
B
    YI~dN  ã               @   s˜   d dl Z d dlT d dlmZ d dlmZmZ d dlmZ dZ	dZ
e
dfZd	Zd
ZdZdZdZdZdZG dd„ dƒZedkr”d dlmZ edddd dS )é    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Œ   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!S )"ÚAutoCompleteWindowc             C   s‚   || _ d  | _ | _| _d  | _| _d | _d | _d | _d | _	d | _
d | _d | _d  | _ | _ | _ | _ | _| _d| _d| _d S )NF)ÚwidgetÚautocompletewindowÚlistboxÚ	scrollbarÚorigselforegroundÚorigselbackgroundÚcompletionsÚmorecompletionsÚmodeÚstartÚ
startindexÚlasttypedstartÚuserwantswindowZhideidÚ
keypressidÚlistupdateidÚwinconfigidÚkeyreleaseidÚdoubleclickidÚlastkey_was_tabÚis_configuring)Úselfr   © r   ú;/opt/alt/python37/lib64/python3.7/idlelib/autocomplete_w.pyÚ__init__   s    $zAutoCompleteWindow.__init__c             C   s¬   t t| jƒt|ƒƒ}d}x&||k r>| j| || kr>|d7 }qW |t| jƒk rv| j d| j|f d| jt| jƒf ¡ |t|ƒk r¢| j d| j|f ||d … ¡ || _d S )Nr   é   z%s+%dc)ÚminÚlenr   r   Údeleter   Úinsert)r   ÚnewstartÚmin_lenÚir   r   r   Ú_change_start>   s    z AutoCompleteWindow._change_startc             C   sX   d}t | jƒ}x4||krB|| d }| j| |kr8|}q|d }qW t|t | jƒd ƒS )Nr   é   r    )r"   r   r!   )r   Úsr'   ÚjÚmr   r   r   Ú_binary_searchK   s     

z!AutoCompleteWindow._binary_searchc       
      C   sö   |   |¡}| j| d t|ƒ… |kr(|S |d }t| jƒ}x@||krz|| d }| j| d t|ƒ… |krp|}q<|d }q<W |d }||kr–| j| S | j| }| j| }tt|ƒt|ƒƒ}	t|ƒ}x$||	k rè|| || krè|d7 }qÆW |d |… S )Nr    r)   )r-   r   r"   r!   )
r   r*   Úfirstr'   r+   r,   ZlastZ
first_compZ	last_compr&   r   r   r   Ú_complete_stringX   s(    





z#AutoCompleteWindow._complete_stringc             C   sL  t | j ¡ d ƒ}| j |¡ | j}| j| }|  |¡|krB|}nHtt|ƒt|ƒƒ}d}x$||k r||| || kr||d7 }qZW |d |… }|  	|¡ | j| d t| j
ƒ… | j
krÈ| jj| j| jd n€| jj| j d¡| j d¡d | jrH| j| _d | _| j dt¡ x| jD ]}| j t|¡ qW | j |  | j
¡¡ |  ¡  d S )Nr   r    )ÚselectbackgroundÚselectforegroundÚbgZfg)Úintr
   ÚcurselectionÚseer   r   r-   r!   r"   r(   r   Z	configurer   r   Úcgetr   r#   ÚENDr$   Ú
select_setÚ_selection_changed)r   ÚcurselZltsZselstartr%   r&   r'   Úitemr   r   r   r9   x   s2    


z%AutoCompleteWindow._selection_changedc             C   sŠ  |\| _ | _|| _| j |¡| _| j | jd¡| _|r¢|  | j¡}| j}|  	|¡ |  
|¡}| j | |kr¢|t| j ƒd ksš| j |d  d t|ƒ… |kr¢||kS || _| j| _t| jƒ | _}	|	 d¡ |	 d¡ y|	j dd|	jdd¡ W n tk
r   Y nX t|	td | _}
t|	|
jd	d
 | _}x| j D ]}| t|¡ q6W | d¡| _| d¡| _ |
j!|j"d |
j#t$t%d |j#t&t'dd |	 (¡  | j )|  
| j¡¡ |  *¡  |	 +t,| j-¡| _.| j +t,| j-¡| _/|	 0t,t1¡ xt2D ]}| j 0t,|¡ qèW | j +t3| j4¡| _5xt6D ]}| j 0t3|¡ qW | j +t7| j8¡| _9| j 0t7t:¡ | +t;| j<¡| _=d	| _>|	 +t?| j@¡| _A| +tB| jC¡| _Dd S )Nr$   r    z+10000+10000z!::tk::unsupported::MacWindowStyleZstyleÚhelpZnoActivates)ZorientF)ZyscrollcommandZexportselectionr1   r0   )Zcommand)ÚsideÚfillT)r=   r>   Úexpand)Er   r   r   r   Úindexr   Úgetr   r/   r(   r-   r"   r   r   ZToplevelr	   Úwm_geometryZwm_overrideredirectZtkZcallZ_wZTclErrorr   ZVERTICALr   ZListboxÚsetr
   r$   r7   r6   r   r   ZconfigZyviewÚpackZRIGHTÚYZLEFTZBOTHZliftr8   r9   Z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_eventr   r   ÚWINCONFIG_SEQUENCEÚwinconfig_eventr   ÚDOUBLECLICK_SEQUENCEÚdoubleclick_eventr   )r   Z
comp_listsr@   Úcompleter   ZuserWantsWinZ	completedr   r'   Úacwr   r
   r;   Úseqr   r   r   Úshow_windowž   sn    









zAutoCompleteWindow.show_windowc             C   s  | j r
d S d| _ |  ¡ sd S | j}| | j¡ | | j¡\}}}}| j}| ¡  | ¡ | 	¡  }}	| ¡ | 	¡  }
}| 
¡ t|td|
| ƒƒ }| ¡ | }|||  |	ks´||	k r¾||7 }n||	8 }| d||f ¡ | ¡  t ¡  d¡r| t| j¡ d | _d| _ d S )NTr   z+%d+%dZWindowsF)r   Ú	is_activer   r5   r   Zbboxr	   ÚupdateZwinfo_widthÚwinfo_heightZwinfo_rootxr!   ÚmaxZwinfo_rootyrB   Zupdate_idletasksÚplatformÚsystemÚ
startswithÚunbindrT   r   )r   ÚeventÚtextÚxÚyZcxÚcyrY   Z	acw_widthZ
acw_heightÚ
text_widthZtext_heightZnew_xZnew_yr   r   r   rU   ê   s0    
z"AutoCompleteWindow.winconfig_eventc             C   sB   | j s
d S y| j  ¡ s|  ¡  W n tk
r<   |  ¡  Y nX d S )N)r	   Z	focus_getÚhide_windowÚKeyError)r   r   r   r   Ú_hide_event_check  s    
z$AutoCompleteWindow._hide_event_checkc             C   s>   |   ¡ r:|jtjkr&| j d| j¡ n|jtjkr:|  ¡  d S )Nr    )	r\   ÚtypeZ	EventTypeZFocusOutr   Zafterrl   ZButtonPressrj   )r   rd   r   r   r   rG     s
    zAutoCompleteWindow.hide_eventc             C   s4   |   ¡ r0d| _t| j ¡ d ƒ}|  | j| ¡ d S )NTr   )r\   r   r3   r
   r4   r(   r   )r   rd   r:   r   r   r   rS   (  s    z#AutoCompleteWindow.listselect_eventc             C   s.   t | j ¡ d ƒ}|  | j| ¡ |  ¡  d S )Nr   )r3   r
   r4   r(   r   rj   )r   rd   r:   r   r   r   rW   .  s    z$AutoCompleteWindow.doubleclick_eventc                s  |   ¡ sd S |j‰ t|dƒr$|j}nd}ˆ dkr6d| _tˆ ƒdks`ˆ dks`| jtkrJˆ dkrJ|t @ sJtˆ ƒdkrŠ|  	| j
ˆ  ¡ n|ˆ dkr¤|  	| j
d	 ¡ nbˆ d
kr¾|  	| j
d ¡ nHˆ dkrØ|  	| j
d ¡ n.t| j
ƒdkrò|  ¡  d S |  	| j
d d… ¡ | j
| _| j dt| j ¡ d ƒ¡ | j |  | j
¡¡ |  ¡  dS ˆ dkrh|  ¡  |  ¡  dS | jtkr~ˆ dks | jtkrˆ dkr|t @ st| j ¡ d ƒ}| j| d t| j
ƒ… | j
krö| jtksæ| j
rö|  	| j| ¡ |  ¡  d S ˆ dkr|sd| _t| j ¡ d ƒ}ˆ dkr:d}n¨ˆ dkrTt| jƒd }nŽˆ dkr°| j | j ¡ ¡| j d¡ }ˆ dkr–td|| ƒ}ntt| jƒd || ƒ}n2ˆ dkrÊtd|d ƒ}ntt| jƒd |d ƒ}| j |¡ | j |¡ |  ¡  |  	| j| ¡ dS ˆ dkrn|sn| jr\t| j ¡ d ƒ}|  	| j| ¡ |  ¡  dS d| _d| _d S n’t‡ fdd„dD ƒƒrŠd S |jrô|jdkrô|  	| j
|j ¡ | j
| _| j dt| j ¡ d ƒ¡ | j |  | j
¡¡ |  ¡  dS |  ¡  d S d S )NÚmc_stater   ZTabFr    )Ú
underscoreZ	BackSpace)ÚperiodÚminusro   Ú_rp   Ú.rq   ú-éÿÿÿÿÚbreakZReturn)rp   ZspaceZ	parenleftZ
parenrightZbracketleftZbracketright)ZslashZ	backslashZquotedblZ
apostrophe)ÚHomeÚEndÚPriorÚNextÚUpZDownTrw   rx   )ry   rz   ry   r{   c             3   s   | ]}|ˆ kV  qd S )Nr   )Ú.0r*   )Úkeysymr   r   ú	<genexpr>•  s    z4AutoCompleteWindow.keypress_event.<locals>.<genexpr>)ZShiftZControlZAltZMetaZCommandZOptionú )r\   r}   Úhasattrrn   r   r"   r   r   r   r(   r   rj   r   r
   Zselect_clearr3   r4   r8   r-   r9   rX   r   r   r   Znearestr^   r_   r!   ÚanyÚchar)r   rd   Ústater:   ZnewselZjumpr   )r}   r   rM   4  s¬    

 





z!AutoCompleteWindow.keypress_eventc             C   s@   |   ¡ sd S | j d¡| j d| jt| jƒf ¡kr<|  ¡  d S )Nr$   z%s+%dc)r\   r   r@   r   r"   r   rj   )r   rd   r   r   r   rP   ¨  s
    
z#AutoCompleteWindow.keyrelease_eventc             C   s
   | j d k	S )N)r	   )r   r   r   r   r\   °  s    zAutoCompleteWindow.is_activec             C   s   |   |  | j¡¡ d S )N)r(   r/   r   )r   r   r   r   rX   ³  s    zAutoCompleteWindow.completec             C   s(  |   ¡ sd S | j tt¡ xtD ]}| j t|¡ q W | j t| j¡ | j t| j	¡ d | _d | _	xt
D ]}| j t|¡ qhW | j t| j¡ d | _| j tt¡ | j t| j¡ d | _| j t| j¡ d | _| jrê| j t| j¡ d | _| j ¡  | j ¡  d | _| j ¡  d | _| j ¡  d | _d S )N)r\   r	   Zevent_deleterF   rJ   rK   r   rc   rH   rI   rN   rL   r   rO   rQ   r   r
   rR   r   r   rT   Z	focus_setr   Zdestroy)r   rZ   r   r   r   rj   ·  s<    





zAutoCompleteWindow.hide_windowN)Ú__name__Ú
__module__Ú__qualname__r   r(   r-   r/   r9   r[   rU   rl   rG   rS   rW   rM   rP   r\   rX   rj   r   r   r   r   r      s    ! &L%tr   Ú__main__)Úmainz%idlelib.idle_test.test_autocomplete_wr)   F)Ú	verbosityÚexit)r`   ZtkinterZtkinter.ttkr   Zidlelib.autocompleter   r   Zidlelib.multicallr   rF   rJ   rK   rL   rN   rO   rQ   rR   rT   rV   r   r„   Zunittestrˆ   r   r   r   r   Ú<module>   s*      G