B
     S]:                 @   sh   d dl mZ d dlmZ G dd dZdd Zedkrdd dlmZ ed	d
dd d dl	m
Z
 e
e dS )    )	Delegator)WidgetRedirectorc               @   s@   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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   #lib/python3.7/idlelib/percolator.py__init__   s    
zPercolator.__init__c             C   sP   x| j | jk	r| | j  qW 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 )N)r	   r   )r   indexcharsZtagsr   r   r   r      s    zPercolator.insertc             C   s   | j || d S )N)r	   r   )r   Zindex1Zindex2r   r   r   r      s    zPercolator.deletec             C   s2   t |tst|jd kst|| j || _d S )N)
isinstancer   AssertionErrordelegater   r	   )r   filterr   r   r   insertfilter"   s    zPercolator.insertfilterc             C   s   t |tst|jd k	st| j}||kr>|j| _|d  nBx*|j|k	rh|| jk	sXt|  |j}q@W ||j |d  d S )N)r   r   r   r   r	   r   r
   Z
resetcache)r   r   fr   r   r   r   )   s    
zPercolator.removefilter)N)N)	__name__
__module____qualname__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 )N)namer   r   )r   r   r   r   r   r   >   s    z$_percolator.<locals>.Tracer.__init__c             W   s   t | jd| | jj|  d S )Nz: insert)printr   r   r   )r   argsr   r   r   r   B   s    z"_percolator.<locals>.Tracer.insertc             W   s   t | jd| | jj|  d S )Nz: delete)r    r   r   r   )r   r!   r   r   r   r   F   s    z"_percolator.<locals>.Tracer.deleteN)r   r   r   r   r   r   r   r   r   r   Tracer=   s   r"   zTest Percolator+   z+%d+%d   t1t2c                  s     r n d S )N)getr   )pinpoutr&   var1r   r   toggle1U   s    z_percolator.<locals>.toggle1c                  s     r n d S )N)r(   r   )r)   r*   r'   var2r   r   toggle2W   s    z_percolator.<locals>.toggle2ZTracer1)r   ZcommandZvariableZTracer2)Ztkinterr   ZTopleveltitlemapintZgeometrysplitZTextr   r   r   ZpackZIntVarZCheckbutton)parentZtkr"   Zboxxyr   pr,   r.   Zcb1Zcb2r   )r)   r*   r&   r'   r+   r-   r   _percolator:   s*    

 


r7   __main__)mainz!idlelib.idle_test.test_percolator   F)	verbosityexit)runN)Zidlelib.delegatorr   Zidlelib.redirectorr   r   r7   r   Zunittestr9   Zidlelib.idle_test.htestr=   r   r   r   r   <module>   s   5(