o
     JAf                     @   sl   d dl mZ d dlmZ G dd dZdd Zedkr4d dlmZ ed	d
dd d dl	m
Z
 e
e dS dS )    )	Delegator)WidgetRedirectorc                   @   sH   e Zd Zdd Zdd ZdddZddd	Zd
d Zdd Zdd Z	dS )
Percolatorc                 C   sR   || _ t|| _t| | _| _| jd| j| j_| jd| j| j_g | _	d S )Ninsertdelete)
textr   redirr   topbottomregisterr   r   filters)selfr    r   )/usr/lib/python3.10/idlelib/percolator.py__init__   s   

zPercolator.__init__c                 C   sV   | j | jur| | j  | j | jusd | _ | jd  d | _| j  d | _d | _d S N)r	   r
   removefiltersetdelegater   closer   )r   r   r   r   r      s   

zPercolator.closeNc                 C   s   | j ||| d S r   )r	   r   )r   indexcharstagsr   r   r   r      s   zPercolator.insertc                 C   s   | j || d S r   )r	   r   )r   Zindex1index2r   r   r   r      s   zPercolator.deletec                 C   s   | | j || _d S r   )r   r	   )r   filterr   r   r   insertfilter"   s   
zPercolator.insertfilterc                 C   sF   | j }|  ||ur|j}|  ||us||j || d S r   )r	   
resetcachedelegater   )r   r   Zafterfr   r   r   insertfilterafter)   s   zPercolator.insertfilterafterc                 C   s`   | j }||u r|j| _ |d  d S |j|ur#|  |j}|j|us||j |d  d S r   )r	   r   r   r   )r   r   r   r   r   r   r   8   s   

zPercolator.removefilterr   )
__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r      s    	


r   c                    s  dd l }G dd dt}|| }|d tt|  ddd  \}}|d||d f  ||}t	|}|j
 |j|d	|d
 fdd} fdd}	|  || |j|d|d}
|
  || |j|d|	d}|  d S )Nr   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )z_percolator.<locals>.Tracerc                 S   s   || _ t| d  d S r   )namer   r   )r   r"   r   r   r   r   M   s   z$_percolator.<locals>.Tracer.__init__c                 W      t | jd| | jj|  d S )Nz: insert)printr"   r   r   r   argsr   r   r   r   Q      z"_percolator.<locals>.Tracer.insertc                 W   r#   )Nz: delete)r$   r"   r   r   r%   r   r   r   r   U   r'   z"_percolator.<locals>.Tracer.deleteN)r   r    r!   r   r   r   r   r   r   r   TracerL   s    r(   zTest Percolator+   z+%d+%d   t1t2c                           r n d S r   getr   )pinpoutr,   var1r   r   toggle1d      z_percolator.<locals>.toggle1c                      r.   r   r/   r   )r1   r2   r-   var2r   r   toggle2f   r5   z_percolator.<locals>.toggle2ZTracer1)r   ZcommandvariableZTracer2)tkinterr   ZTopleveltitlemapintZgeometrysplitZTextr   r   r   packZIntVarZCheckbutton)parentZtkr(   Zboxxyr   pr4   r7   Zcb1Zcb2r   )r1   r2   r,   r-   r3   r6   r   _percolatorI   s*   

 


rC   __main__)mainz!idlelib.idle_test.test_percolator   F)	verbosityexit)runN)Zidlelib.delegatorr   Zidlelib.redirectorr   r   rC   r   ZunittestrE   Zidlelib.idle_test.htestrI   r   r   r   r   <module>   s    D(