<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

]*                 @   s   d  d l  Z  d  d l Td  d l m Z Gd d   d e  Z Gd d   d  Z Gd d	   d	 e  Z Gd
 d   d e  Z Gd d   d e  Z d d   Z	 e
 d k r d  d l Z e j d d d d d d  d l m Z e e	  d S)    N)*)	Delegatorc               @   s   e  Z d  Z d Z d d   Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z	 d Z
 d d   Z d# Z d d   Z d d d  Z d d d  Z d d   Z d d   Z d d d  Z d d    Z d! d"   Z d S)$UndoDelegatori  c             C   s   t  j |   |  j   d  S)N)r   __init__
reset_undo)self r   2/opt/alt/python35/lib64/python3.5/UndoDelegator.pyr      s    zUndoDelegator.__init__c             C   s   |  j  d  k	 r6 |  j d  |  j d  |  j d  t j |  |  | d  k	 r |  j d |  j  |  j d |  j  |  j d |  j  d  S)Nz<<undo>>z<<redo>>z<<dump-undo-state>>)delegateZunbindr   setdelegatebind
undo_event
redo_event
dump_event)r   r
   r   r   r	   r      s    zUndoDelegator.setdelegatec             C   s   d d l  m  } | |  j d  |  j   t d |  j d d t d |  j d d t d |  j d d t d |  j    | |  j |  j d    d	 S)
Nr   )pprintzpointer:end zsaved:z
can_merge:zget_saved():break)r   undolistpointerprintsaved	can_merge	get_saved)r   eventr   r   r   r	   r   &   s    zUndoDelegator.dump_eventc             C   s5   d |  _  d |  _ g  |  _ d |  _ |  j d  d  S)N   r   )	was_savedr   r   	undoblock	set_saved)r   r   r   r	   r   0   s
    				zUndoDelegator.reset_undoc             C   s5   | r |  j  |  _ n	 d |  _ d |  _ |  j   d  S)Nr   Fr   )r   r   r   check_saved)r   flagr   r   r	   r   7   s
    		zUndoDelegator.set_savedc             C   s   |  j  |  j k S)N)r   r   )r   r   r   r	   r   ?   s    zUndoDelegator.get_savedNc             C   s   | |  _  d  S)N)saved_change_hook)r   hookr   r   r	   set_saved_change_hookD   s    z#UndoDelegator.set_saved_change_hookr   c             C   s;   |  j    } | |  j k r7 | |  _ |  j r7 |  j   d  S)N)r   r   r"   )r   Zis_savedr   r   r	   r    I   s
    		zUndoDelegator.check_savedc             C   s   |  j  t | | |   d  S)N)addcmdInsertCommand)r   indexcharstagsr   r   r	   insertP   s    zUndoDelegator.insertc             C   s   |  j  t | |   d  S)N)r%   DeleteCommand)r   index1index2r   r   r	   deleteS   s    zUndoDelegator.deletec             C   s,   |  j  d k r t   |  _  |  j  j   d  S)Nr   )r   CommandSequence
bump_depth)r   r   r   r	   undo_block_starta   s    zUndoDelegator.undo_block_startc             C   sq   |  j  j d  d k rm |  j  } d |  _  t |  d k rm t |  d k r] | j d  } |  j | d  d  S)Nr   r   r   )r   r0   lengetcmdr%   )r   cmdr   r   r	   undo_block_stopf   s    		zUndoDelegator.undo_block_stopTc             C   s$  | r | j  |  j  |  j d k r9 |  j j |  d  S|  j rx |  j d k rx |  j |  j d } | j |  rx d  S| g |  j |  j d   <|  j |  j k r d |  _ |  j d |  _ t	 |  j  |  j
 k r|  j d =|  j d |  _ |  j d k r|  j d |  _ d |  _ |  j   d  S)Nr   r   Tr   )dor
   r   appendr   r   r   merger   r2   max_undor    )r   r4   ZexecuteZlastcmdr   r   r	   r%   r   s(    	
	zUndoDelegator.addcmdc             C   sh   |  j  d k r |  j   d S|  j |  j  d } | j |  j  |  j  d |  _  d |  _ |  j   d S)Nr   r   r   F)r   bellr   undor
   r   r    )r   r   r4   r   r   r	   r      s    
	
zUndoDelegator.undo_eventc             C   sm   |  j  t |  j  k r& |  j   d S|  j |  j  } | j |  j  |  j  d |  _  d |  _ |  j   d S)Nr   r   F)r   r2   r   r:   redor
   r   r    )r   r   r4   r   r   r	   r      s    
	
zUndoDelegator.redo_eventr   )__name__
__module____qualname__r9   r   r   r   r   r   r   r"   r$   r   r    r*   r.   r1   r5   r%   r   r   r   r   r   r	   r      s$   
r   c               @   sy   e  Z d  Z d Z d d d  Z d d   Z d d   Z d d	   Z d
 d   Z d d   Z	 d d   Z
 d d   Z d S)CommandNc             C   s@   i  |  _  i  |  _ | |  _ | |  _ | |  _ | r< | |  _ d  S)N)marks_beforemarks_afterr,   r-   r(   r)   )r   r,   r-   r(   r)   r   r   r	   r      s    					zCommand.__init__c             C   sW   |  j  j } |  j |  j |  j |  j f } |  j d  k rI | d  d  } | t |  S)Nr   r   )	__class__r=   r,   r-   r(   r)   repr)r   str   r   r	   __repr__   s
    zCommand.__repr__c             C   s   d  S)Nr   )r   textr   r   r	   r6      s    z
Command.doc             C   s   d  S)Nr   )r   rH   r   r   r	   r<      s    zCommand.redoc             C   s   d  S)Nr   )r   rH   r   r   r	   r;      s    zCommand.undoc             C   s   d S)Nr   r   )r   r4   r   r   r	   r8      s    zCommand.mergec             C   sL   i  } x? | j    D]1 } | d k r | d k r | j |  | | <q W| S)Nr*   current)Z
mark_namesr'   )r   rH   marksnamer   r   r	   
save_marks   s
    zCommand.save_marksc             C   s1   x* | j    D] \ } } | j | |  q Wd  S)N)itemsmark_set)r   rH   rJ   rK   r'   r   r   r	   	set_marks   s    zCommand.set_marks)r=   r>   r?   r)   r   rG   r6   r<   r;   r8   rL   rO   r   r   r   r	   r@      s   	r@   c               @   so   e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z d
 d   Z e j	 e j
 d Z d d   Z d S)r&   Nc             C   s   t  j |  | d  | |  d  S)N)r@   r   )r   r,   r(   r)   r   r   r	   r      s    zInsertCommand.__init__c             C   s   |  j  |  |  _ | j |  j  |  _ | j |  j d d  rQ | j d  |  _ | j |  j |  j |  j  | j d |  j t |  j  f  |  _	 |  j  |  |  _
 d  S)N>zend-1cz%s+%dc)rL   rA   r'   r,   comparer*   r(   r)   r2   r-   rB   )r   rH   r   r   r	   r6      s    (zInsertCommand.doc             C   sS   | j  d |  j  | j |  j |  j |  j  |  j | |  j  | j d  d  S)Nr*   )rN   r,   r*   r(   r)   rO   rB   see)r   rH   r   r   r	   r<      s    zInsertCommand.redoc             C   sM   | j  d |  j  | j |  j |  j  |  j | |  j  | j d  d  S)Nr*   )rN   r,   r.   r-   rO   rA   rR   )r   rH   r   r   r	   r;      s    zInsertCommand.undoc             C   s   |  j  | j  k	 r d S|  j | j k r, d S|  j | j k rB d St | j  d k r[ d S|  j r |  j |  j d  |  j | j  k r d S| j |  _ |  j | j |  _ d S)NFr   Tr   )rC   r-   r,   r)   r2   r(   classify)r   r4   r   r   r	   r8      s    	(zInsertCommand.merge_c             C   s'   | |  j  k r d S| d k r# d Sd S)Nalphanumeric
newlinepunctuation)rU   )r   cr   r   r	   rS      s
    zInsertCommand.classify)r=   r>   r?   r   r6   r<   r;   r8   stringascii_lettersdigitsrU   rS   r   r   r   r	   r&      s   r&   c               @   sC   e  Z d  Z d d d  Z d d   Z d d   Z d d	   Z d S)
r+   Nc             C   s   t  j |  | | d  d   d  S)N)r@   r   )r   r,   r-   r   r   r	   r     s    zDeleteCommand.__init__c             C   s   |  j  |  |  _ | j |  j  |  _ |  j rH | j |  j  |  _ n | j |  j d  |  _ | j |  j d d  r | j d  |  _ | j |  j |  j  |  _ | j |  j |  j  |  j  |  |  _	 d  S)Nz +1crP   zend-1c)
rL   rA   r'   r,   r-   rQ   getr(   r.   rB   )r   rH   r   r   r	   r6     s    	zDeleteCommand.doc             C   sM   | j  d |  j  | j |  j |  j  |  j | |  j  | j d  d  S)Nr*   )rN   r,   r.   r-   rO   rB   rR   )r   rH   r   r   r	   r<     s    zDeleteCommand.redoc             C   sM   | j  d |  j  | j |  j |  j  |  j | |  j  | j d  d  S)Nr*   )rN   r,   r*   r(   rO   rA   rR   )r   rH   r   r   r	   r;   %  s    zDeleteCommand.undo)r=   r>   r?   r   r6   r<   r;   r   r   r   r	   r+     s   r+   c               @   ss   e  Z d  Z d d   Z d d   Z d d   Z d d   Z d	 d
   Z d d   Z d d   Z	 d d d  Z
 d S)r/   c             C   s   g  |  _  d |  _ d  S)Nr   )cmdsdepth)r   r   r   r	   r   1  s    	zCommandSequence.__init__c             C   sS   |  j  j } g  } x% |  j D] } | j d | f  q W| d d j |  d S)Nz    %rz(
z,
z
))rC   r=   r^   r7   join)r   rE   Zstrsr4   r   r   r	   rG   5  s
    zCommandSequence.__repr__c             C   s   t  |  j  S)N)r2   r^   )r   r   r   r	   __len__<  s    zCommandSequence.__len__c             C   s   |  j  j |  d  S)N)r^   r7   )r   r4   r   r   r	   r7   ?  s    zCommandSequence.appendc             C   s   |  j  | S)N)r^   )r   ir   r   r	   r3   B  s    zCommandSequence.getcmdc             C   s%   x |  j  D] } | j |  q
 Wd  S)N)r^   r<   )r   rH   r4   r   r   r	   r<   E  s    zCommandSequence.redoc             C   s?   |  j  d  d   } | j   x | D] } | j |  q$ Wd  S)N)r^   reverser;   )r   rH   r^   r4   r   r   r	   r;   I  s    
zCommandSequence.undor   c             C   s   |  j  | |  _  |  j  S)N)r_   )r   Zincrr   r   r	   r0   O  s    zCommandSequence.bump_depthN)r=   r>   r?   r   rG   ra   r7   r3   r<   r;   r0   r   r   r   r	   r/   ,  s   r/   c                sw  d d  l  } d d  l } d d l m } | j   } | j d  t t t | j	 d |  j
      \ } } } } | j
 d | | d f  t | d d }	 |	 j   |	 j   | |	  }
 t     |
 j    t | d	 d
 d   f d d   } | j d d  t | d	 d d   f d d   } | j d d  t | d	 d d   f d d   } | j d d  d  S)Nr   )
PercolatorzTest UndoDelegatorz[x+]z+%d+%d   height
   rH   ZUndoZcommandc                  s     j  d   S)N)r   r   )dr   r	   <lambda>d  s    z!_undo_delegator.<locals>.<lambda>ZsideleftZRedoc                  s     j  d   S)N)r   r   )rh   r   r	   ri   f  s    ZDumpc                  s     j  d   S)N)r   r   )rh   r   r	   ri   h  s    )retkinterZidlelib.Percolatorrd   ZTopleveltitlelistmapintsplitZgeometryZTextpackZ	focus_setr   ZinsertfilterZButton)parentrk   Ztkrd   Zundowinwidthrf   xyrH   pr;   r<   dumpr   )rh   r	   _undo_delegatorT  s&    3

	$$$ry   __main__z$idlelib.idle_test.test_undodelegator	verbosity   exitF)run)rZ   rl   Zidlelib.Delegatorr   r   r@   r&   r+   r/   ry   r=   ZunittestmainZidlelib.idle_test.htestr~   r   r   r   r	   <module>   s   
.:$(