๎
\แ[\ฌ  ใ               @   sl   d  d l  m Z d  d l m Z Gd d   d  Z d d   Z e d k rh d  d l m Z e e  n  d	 S)
้    )ฺWidgetRedirector)ฺ	Delegatorc               @   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   sw   | |  _  t |  |  _ t |  |  _ |  _ |  j j d |  j  |  j _ |  j j d |  j  |  j _ g  |  _	 d  S)Nฺinsertฺdelete)
ฺtextr   ฺredirr   ฺtopฺbottomฺregisterr   r   ฺfilters)ฺselfr   ฉ r   ๚(/usr/lib/python3.4/idlelib/Percolator.pyฺ__init__   s    	zPercolator.__init__c             C   sn   x& |  j  |  j k	 r( |  j |  j   q Wd  |  _  |  j j d   d  |  _ |  j j   d  |  _ d  |  _ d  S)N)r	   r
   ฺremovefilterฺsetdelegater   ฺcloser   )r   r   r   r   r      s    	 	 	zPercolator.closeNc             C   s   |  j  j | | |  d  S)N)r	   r   )r   ฺindexฺcharsZtagsr   r   r   r      s    zPercolator.insertc             C   s   |  j  j | |  d  S)N)r	   r   )r   Zindex1Zindex2r   r   r   r      s    zPercolator.deletec             C   sG   t  | t  s t  | j d  k s* t  | j |  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 |  _ | j d   n[ x; | j | k	 r | |  j k	 s t  | j   | j } q^ W| j | j  | j d   d  S)N)r   r   r   r   r	   r   r
   Z
resetcache)r   r   ฺfr   r   r   r   &   s    	
zPercolator.removefilter)	ฺ__name__ฺ
__module__ฺ__qualname__r   r   r   r   r   r   r   r   r   r   r      s   	r   c                s~  d d  l  } d d  l } Gd d   d t  } | j   } | j d  t t t | j d |  j	      \ } } } } | j	 d | | d f  | j
 |  }	 t |	    | d   | d	       f d
 d   }
     f d d   } |	 j   | j    | j | d d d |
 d  } | j   | j    | j | d d d | d  } | j   | j   d  S)Nr   c               @   s4   e  Z d  Z d d   Z d d   Z d d   Z d S)z_percolator.<locals>.Tracerc             S   s   | |  _  t j |  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   =   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   @   s    z"_percolator.<locals>.Tracer.deleteN)r   r   r   r   r   r   r   r   r   r   ฺTracer9   s   r"   zTest Percolatorz[x+]z+%d+%d้   ฺt1ฺt2c                  sb    j    d k r/  j d    j   n/  j    d k r^  j d    j   n  d  S)Nr   ้   )ฺgetฺsetr   r   r   )ฺpr$   ฺvar1r   r   ฺtoggle1L   s    z_percolator.<locals>.toggle1c                  sb    j    d k r/  j d    j   n/  j    d k r^  j d    j   n  d  S)Nr   r&   )r'   r(   r   r   r   )r)   r%   ฺvar2r   r   ฺtoggle2T   s    z_percolator.<locals>.toggle2r   ZTracer1ZcommandZvariableZTracer2)Ztkinterฺrer   ZTkฺtitleฺlistฺmapฺintฺsplitZgeometryZTextr   ZpackZIntVarZCheckbuttonZmainloop)ฺparentZtkr.   r"   ฺrootฺwidthZheightฺxฺyr   r+   r-   Zcb1Zcb2r   )r)   r$   r%   r*   r,   r   ฺ_percolator6   s*    
3
!
!
r9   ฺ__main__)ฺrunN)	Zidlelib.WidgetRedirectorr   Zidlelib.Delegatorr   r   r9   r   Zidlelib.idle_test.htestr;   r   r   r   r   ฺ<module>   s   20