File: //usr/local/lib/python3.10/idlelib/__pycache__/autocomplete_w.cpython-310.pyc
o
�iiR � @ s� d Z ddlZddlT ddlmZ ddlmZmZ ddlm Z dZ
dZed fZd
Z
dZdZd
ZdZdZdZG dd� d�ZedkrNddlmZ edddd� dS dS )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� e Zd Zdd� Zdd� Zdd� Zdd� Zd d
� Zdd� Zd
d� Z dd� Z
dd� Zdd� Zdd� Z
dd� Zdd� Zdd� Zdd� Zdd � Zd!S )"�AutoCompleteWindowc C s� || _ || _d | _ | _| _d | _| _d | _d | _d | _ d | _
d | _d | _d | _
d | _ | _ | _ | _ | _| _d| _d| _d S )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)�selfr r � r �3/usr/local/lib/python3.10/idlelib/autocomplete_w.py�__init__ s$ ��
zAutoCompleteWindow.__init__c C s� t t| j�t|��}d}||k r*| j| || kr*|d7 }||k r*| j| || ks|t| j�k rE| j�d| j|f d| jt| j�f � |t|�k r]| j�d| j|f ||d � | j� || _d S )Nr � �%s+%dc)�min�lenr r �deleter �insertr )r �newstart�min_len�ir r r �
_change_start@ s ��
�
z AutoCompleteWindow._change_startc C sZ d}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$ r r# )r �sr) �j�mr r r �_binary_searchN s �z!AutoCompleteWindow._binary_searchc
C s
| � |�}| j| dt|�� |kr|S |d }t| j�}||kr?|| d }| j| dt|�� |kr7|}n|d }||ks!|d }||krL| j| S | j| }| j| }tt|�t|��} t|�}|| k r|| || kr|d7 }|| k r|| || 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/ r r$ r# )
r r, �firstr) r- r. ZlastZ
first_compZ last_compr( r r r �_complete_string[ s,
�
�z#AutoCompleteWindow._complete_stringc C s\ t | j�� d �}| j�|� | j}| j| }| �|�|kr!|}n-tt|�t|��}d}||k rH|| || krH|d7 }||k rH|| || 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
�� | �� dS dS )zzCall when the selection of the Listbox has changed.
Updates the Listbox display and calls _change_start.
r r! N)�selectbackground�selectforeground�bgZfg)�intr �curselection�seer r r/ r# r$ r* r Z configurer r
�cgetr r% �ENDr&