ó
|Nc           @   s´   d  d l  Z  d  d l Td  d l m Z d e f d „  ƒ  YZ d d d „  ƒ  YZ d e f d	 „  ƒ  YZ d
 e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z	 e
 d k r° e	 ƒ  n  d S(   iÿÿÿÿN(   t   *(   t	   Delegatort   UndoDelegatorc           B   sª   e  Z d  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d Z
 d „  Z d Z d	 „  Z d d
 „ Z d d „ Z d „  Z d „  Z e d „ Z d „  Z d „  Z RS(   iè  c         C   s   t  j |  ƒ |  j ƒ  d  S(   N(   R   t   __init__t
   reset_undo(   t   self(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR      s    c         C   s•   |  j  d  k	 r9 |  j d ƒ |  j d ƒ |  j d ƒ n  t j |  | ƒ | d  k	 r‘ |  j d |  j ƒ |  j d |  j ƒ |  j d |  j ƒ n  d  S(   Ns   <<undo>>s   <<redo>>s   <<dump-undo-state>>(	   t   delegatet   Nonet   unbindR   t   setdelegatet   bindt
   undo_eventt
   redo_eventt
   dump_event(   R   R   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR	      s    c         C   sl   d d l  m  } | |  j |  j  ƒ d G|  j Gd G|  j Gd G|  j Gd G|  j ƒ  GH| |  j |  j ƒ d S(   Niÿÿÿÿ(   t   pprints   pointer:s   saved:s
   can_merge:s   get_saved():t   break(   R   t   undolistt   pointert   savedt	   can_merget	   get_saved(   R   t   eventR   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR   &   s    c         C   s5   d |  _  d |  _ g  |  _ d |  _ |  j d ƒ d  S(   Niÿÿÿÿi    i   (   t	   was_savedR   R   t	   undoblockt	   set_saved(   R   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR   0   s
    				c         C   s5   | r |  j  |  _ n	 d |  _ t |  _ |  j ƒ  d  S(   Niÿÿÿÿ(   R   R   t   FalseR   t   check_saved(   R   t   flag(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR   7   s
    		c         C   s   |  j  |  j k S(   N(   R   R   (   R   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR   ?   s    c         C   s   | |  _  d  S(   N(   t   saved_change_hook(   R   t   hook(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyt   set_saved_change_hookD   s    iÿÿÿÿc         C   sA   |  j  ƒ  } | |  j k r= | |  _ |  j r= |  j ƒ  q= n  d  S(   N(   R   R   R   (   R   t   is_saved(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR   I   s
    		c         C   s   |  j  t | | | ƒ ƒ d  S(   N(   t   addcmdt   InsertCommand(   R   t   indext   charst   tags(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyt   insertP   s    c         C   s   |  j  t | | ƒ ƒ d  S(   N(   R    t   DeleteCommand(   R   t   index1t   index2(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyt   deleteS   s    c         C   s/   |  j  d k r t ƒ  |  _  n  |  j  j ƒ  d  S(   Ni    (   R   t   CommandSequencet
   bump_depth(   R   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyt   undo_block_starta   s    c         C   sz   |  j  j d ƒ d k rv |  j  } d |  _  t | ƒ d k rv t | ƒ d k r` | j d ƒ } n  |  j | d ƒ qv n  d  S(   Niÿÿÿÿi    i   (   R   R+   t   lent   getcmdR    (   R   t   cmd(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyt   undo_block_stopf   s    		c         C   s-  | r | j  |  j ƒ n  |  j d k r< |  j j | ƒ d  S|  j r~ |  j d k r~ |  j |  j d } | j | ƒ r~ d  Sn  | g |  j |  j )|  j |  j k r¯ d |  _ n  |  j d |  _ t	 |  j ƒ |  j
 k r|  j d =|  j d |  _ |  j d k r|  j d |  _ qn  t |  _ |  j ƒ  d  S(   Ni    i   iÿÿÿÿ(   t   doR   R   t   appendR   R   R   t   mergeR   R-   t   max_undot   TrueR   (   R   R/   t   executet   lastcmd(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR    r   s(    
	c         C   sh   |  j  d k r |  j ƒ  d S|  j |  j  d } | j |  j ƒ |  j  d |  _  t |  _ |  j ƒ  d S(   Ni    R   i   (   R   t   bellR   t   undoR   R   R   R   (   R   R   R/   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR   ‰   s    
	
c         C   sm   |  j  t |  j ƒ k r& |  j ƒ  d S|  j |  j  } | j |  j ƒ |  j  d |  _  t |  _ |  j ƒ  d S(   NR   i   (	   R   R-   R   R8   t   redoR   R   R   R   (   R   R   R/   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR   ”   s    
	
N(   t   __name__t
   __module__R4   R   R	   R   R   R   R   R   R   R   R   R   R%   R)   R,   R0   R5   R    R   R   (    (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR      s$   			
								t   Commandc           B   sY   e  Z d Z d d  „ Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d „  Z RS(	   c         C   sC   i  |  _  i  |  _ | |  _ | |  _ | |  _ | r? | |  _ n  d  S(   N(   t   marks_beforet   marks_afterR'   R(   R#   R$   (   R   R'   R(   R#   R$   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR   ¦   s    					c         C   sT   |  j  j } |  j |  j |  j |  j f } |  j d  k rF | d  } n  | t | ƒ S(   Niÿÿÿÿ(   t	   __class__R;   R'   R(   R#   R$   R   t   repr(   R   t   st   t(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyt   __repr__¯   s
    c         C   s   d  S(   N(    (   R   t   text(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR1   ¶   s    c         C   s   d  S(   N(    (   R   RE   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR:   ¹   s    c         C   s   d  S(   N(    (   R   RE   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR9   ¼   s    c         C   s   d S(   Ni    (    (   R   R/   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR3   ¿   s    c         C   sO   i  } xB | j  ƒ  D]4 } | d k r | d k r | j | ƒ | | <q q W| S(   NR%   t   current(   t
   mark_namesR"   (   R   RE   t   markst   name(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyt
   save_marksÂ   s
    c         C   s1   x* | j  ƒ  D] \ } } | j | | ƒ q Wd  S(   N(   t   itemst   mark_set(   R   RE   RH   RI   R"   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyt	   set_marksÉ   s    N(   R;   R<   R   R$   R   RD   R1   R:   R9   R3   RJ   RM   (    (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR=       s   							R!   c           B   sU   e  Z d d  „ Z d „  Z d „  Z d „  Z d „  Z e j	 e j
 d Z d „  Z RS(   c         C   s   t  j |  | d  | | ƒ d  S(   N(   R=   R   R   (   R   R'   R#   R$   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR   Ò   s    c         C   s®   |  j  | ƒ |  _ | j |  j ƒ |  _ | j |  j d d ƒ rT | j d ƒ |  _ n  | j |  j |  j |  j ƒ | j d |  j t |  j ƒ f ƒ |  _	 |  j  | ƒ |  _
 d  S(   Nt   >s   end-1cs   %s+%dc(   RJ   R>   R"   R'   t   compareR%   R#   R$   R-   R(   R?   (   R   RE   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR1   Õ   s    (c         C   sS   | j  d |  j ƒ | j |  j |  j |  j ƒ |  j | |  j ƒ | j d ƒ d  S(   NR%   (   RL   R'   R%   R#   R$   RM   R?   t   see(   R   RE   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR:   à   s    c         C   sM   | j  d |  j ƒ | j |  j |  j ƒ |  j | |  j ƒ | j d ƒ d  S(   NR%   (   RL   R'   R)   R(   RM   R>   RP   (   R   RE   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR9   ç   s    c         C   s³   |  j  | j  k	 r t S|  j | j k r, t S|  j | j k rB t St | j ƒ d k r[ t S|  j r |  j |  j d ƒ |  j | j ƒ k r t S| j |  _ |  j | j |  _ t S(   Ni   iÿÿÿÿ(	   R@   R   R(   R'   R$   R-   R#   t   classifyR5   (   R   R/   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR3   î   s    	(t   _c         C   s'   | |  j  k r d S| d k r# d Sd S(   Nt   alphanumerics   
t   newlinet   punctuation(   RS   (   R   t   c(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyRQ      s
    N(   R;   R<   R   R   R1   R:   R9   R3   t   stringt   ascii_letterst   digitsRS   RQ   (    (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR!   Î   s   				R&   c           B   s/   e  Z d d  „ Z d „  Z d „  Z d „  Z RS(   c         C   s   t  j |  | | d  d  ƒ d  S(   N(   R=   R   R   (   R   R'   R(   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR     s    c         C   sÕ   |  j  | ƒ |  _ | j |  j ƒ |  _ |  j rH | j |  j ƒ |  _ n | j |  j d ƒ |  _ | j |  j d d ƒ rŽ | j d ƒ |  _ n  | j |  j |  j ƒ |  _ | j |  j |  j ƒ |  j  | ƒ |  _	 d  S(   Ns    +1cRN   s   end-1c(
   RJ   R>   R"   R'   R(   RO   t   getR#   R)   R?   (   R   RE   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR1     s    	c         C   sM   | j  d |  j ƒ | j |  j |  j ƒ |  j | |  j ƒ | j d ƒ d  S(   NR%   (   RL   R'   R)   R(   RM   R?   RP   (   R   RE   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR:     s    c         C   sM   | j  d |  j ƒ | j |  j |  j ƒ |  j | |  j ƒ | j d ƒ d  S(   NR%   (   RL   R'   R%   R#   RM   R>   RP   (   R   RE   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR9   %  s    N(   R;   R<   R   R   R1   R:   R9   (    (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR&     s   		R*   c           B   sS   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d d „ Z	 RS(	   c         C   s   g  |  _  d |  _ d  S(   Ni    (   t   cmdst   depth(   R   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR   1  s    	c         C   sS   |  j  j } g  } x% |  j D] } | j d | f ƒ q W| d d j | ƒ d S(   Ns       %rs   (
s   ,
s   
)(   R@   R;   R[   R2   t   join(   R   RB   t   strsR/   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyRD   5  s
    c         C   s   t  |  j ƒ S(   N(   R-   R[   (   R   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyt   __len__<  s    c         C   s   |  j  j | ƒ d  S(   N(   R[   R2   (   R   R/   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR2   ?  s    c         C   s   |  j  | S(   N(   R[   (   R   t   i(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR.   B  s    c         C   s%   x |  j  D] } | j | ƒ q
 Wd  S(   N(   R[   R:   (   R   RE   R/   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR:   E  s    c         C   s6   |  j  } | j ƒ  x | D] } | j | ƒ q Wd  S(   N(   R[   t   reverseR9   (   R   RE   R[   R/   (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR9   I  s    

i   c         C   s   |  j  | |  _  |  j  S(   N(   R\   (   R   t   incr(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR+   O  s    (
   R;   R<   R   RD   R_   R2   R.   R:   R9   R+   (    (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyR*   ,  s   							c          C   sy   d d l  m }  t ƒ  } | j d | j ƒ t ƒ  } | j ƒ  | j ƒ  |  | ƒ } t ƒ  } | j	 | ƒ | j
 ƒ  d  S(   Niÿÿÿÿ(   t
   Percolatort   WM_DELETE_WINDOW(   t   idlelib.PercolatorRc   t   Tkt   wm_protocolt   quitt   Textt   packt	   focus_setR   t   insertfiltert   mainloop(   Rc   t   rootRE   t   pt   d(    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyt   mainS  s    		

	t   __main__(    (   RW   t   Tkintert   idlelib.DelegatorR   R   R=   R!   R&   R*   Rq   R;   (    (    (    s*   C:\RCS\Python\lib\idlelib\UndoDelegator.pyt   <module>   s   
.:$'	