Ë
    #´˜j+  ã                   óÔ   — d dl Z d dlmZ  G d„ de«      Z G d„ d«      Z G d„ de«      Z G d	„ d
e«      Z G d„ de«      Zd„ Ze	dk(  r d dl
mZ  eddd¬«       d dlmZ  ee«       yy)é    N)Ú	Delegatorc                   óx   — 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„ Zdd„Zdd„Zd„ Zd„ Zdd„Zd„ Zd„ Zy)ÚUndoDelegatoriè  c                 óN   — t        j                  | «       | j                  «        y ©N)r   Ú__init__Ú
reset_undo©Úselfs    úlib/python3.12/idlelib/undo.pyr   zUndoDelegator.__init__   s   € Ü×Ñ˜4Ô Ø�‰Õó    c                 ó\  — | j                   �3| j                  d«       | j                  d«       | j                  d«       t        j                  | |«       |�U| j	                  d| j
                  «       | j	                  d| j                  «       | j	                  d| j                  «       y y )Nz<<undo>>z<<redo>>z<<dump-undo-state>>)ÚdelegateÚunbindr   ÚsetdelegateÚbindÚ
undo_eventÚ
redo_eventÚ
dump_event)r   r   s     r   r   zUndoDelegator.setdelegate   sƒ   € Ø�=‰=Ð$Ø�K‰K˜
Ô#Ø�K‰K˜
Ô#Ø�K‰KÐ-Ô.Ü×Ñ˜d HÔ-ØÐØ�I‰I�j $§/¡/Ô2Ø�I‰I�j $§/¡/Ô2Ø�I‰IÐ+¨T¯_©_Õ=ð  r   c                 óP  — ddl m }  || j                  d | j                   «       t        d| j                  d¬«       t        d| j                  d¬«       t        d| j
                  d¬«       t        d| j                  «       «        || j                  | j                  d  «       y	)
Nr   )Úpprintzpointer:Ú )Úendzsaved:z
can_merge:zget_saved():Úbreak)r   ÚundolistÚpointerÚprintÚsavedÚ	can_mergeÚ	get_saved)r   Úeventr   s      r   r   zUndoDelegator.dump_event(   sw   € Ý!Ùˆt�}‰}˜]˜dŸl™lÐ+Ô,Üˆj˜$Ÿ,™,¨CÕ0Üˆh˜Ÿ
™
¨Õ,Üˆl˜DŸN™N°Õ4Üˆn˜dŸn™nÓ.Ô/Ùˆt�}‰}˜TŸ\™\˜]Ð+Ô,Ør   c                 ó^   — d| _         d| _        g | _        d| _        | j	                  d«       y ©Néÿÿÿÿr   é   )Ú	was_savedr   r   Ú	undoblockÚ	set_savedr
   s    r   r	   zUndoDelegator.reset_undo2   s*   € ØˆŒØˆŒØˆŒØˆŒØ�‰�qÕr   c                 óh   — |r| j                   | _        nd| _        d| _        | j                  «        y )Nr$   F)r   r   r   Úcheck_saved)r   Úflags     r   r(   zUndoDelegator.set_saved9   s*   € ÙØŸ™ˆD�JàˆDŒJØˆŒØ×ÑÕr   c                 ó4   — | j                   | j                  k(  S r   )r   r   r
   s    r   r    zUndoDelegator.get_savedA   s   € Ø�z‰z˜TŸ\™\Ñ)Ð)r   Nc                 ó   — || _         y r   )Úsaved_change_hook)r   Úhooks     r   Úset_saved_change_hookz#UndoDelegator.set_saved_change_hookF   s
   € Ø!%ˆÕr   r$   c                 óŒ   — | j                  «       }|| j                  k7  r%|| _        | j                  r| j                  «        y y y r   )r    r&   r.   )r   Úis_saveds     r   r*   zUndoDelegator.check_savedK   s@   € Ø—>‘>Ó#ˆØ�t—~‘~Ò%Ø%ˆDŒNØ×%Ò%Ø×&Ñ&Õ(ð &ð &r   c                 ó<   — | j                  t        |||«      «       y r   )ÚaddcmdÚInsertCommand)r   ÚindexÚcharsÚtagss       r   ÚinsertzUndoDelegator.insertR   s   € Ø�‰”M %¨°Ó5Õ6r   c                 ó:   — | j                  t        ||«      «       y r   )r4   ÚDeleteCommand©r   Úindex1Úindex2s      r   ÚdeletezUndoDelegator.deleteU   s   € Ø�‰”M &¨&Ó1Õ2r   c                 ót   — | j                   dk(  rt        «       | _         | j                   j                  «        y ©Nr   )r'   ÚCommandSequenceÚ
bump_depthr
   s    r   Úundo_block_startzUndoDelegator.undo_block_startc   s(   € Ø�>‰>˜QÒÜ,Ó.ˆDŒNØ�‰×!Ñ!Õ#r   c                 óè   — | j                   j                  d«      dk(  rT| j                   }d| _         t        |«      dkD  r2t        |«      dk(  r|j                  d«      }| j	                  |d«       y y y r#   )r'   rC   ÚlenÚgetcmdr4   ©r   Úcmds     r   Úundo_block_stopzUndoDelegator.undo_block_stoph   sf   € Ø�>‰>×$Ñ$ RÓ(¨AÒ-Ø—.‘.ˆCØˆDŒNÜ�3‹x˜!Š|Ü�s“8˜q’=àŸ*™* Q›-�Cð —‘˜C Õ#ð ð .r   c                 ó¼  — |r|j                  | j                  «       | j                  dk7  r| j                  j                  |«       y | j                  r=| j
                  dkD  r.| j                  | j
                  dz
     }|j                  |«      ry |g| j                  | j
                  d  | j                  | j
                  kD  rd| _        | j
                  dz   | _        t        | j                  «      | j                  kD  rD| j                  d= | j
                  dz
  | _        | j                  dk\  r| j                  dz
  | _        d| _        | j                  «        y )Nr   r%   r$   T)Údor   r'   Úappendr   r   r   Úmerger   rF   Úmax_undor*   )r   rI   ÚexecuteÚlastcmds       r   r4   zUndoDelegator.addcmdt   s  € ÙØ�F‰F�4—=‘=Ô!Ø�>‰>˜QÒØ�N‰N×!Ñ! #Ô&ØØ�>Š>˜dŸl™l¨QÒ.Ø—m‘m D§L¡L°¡NÑ3ˆGØ�}‰}˜SÔ!ØØ(+ uˆ�‰�d—l‘l�mÐ$Ø�:‰:˜Ÿ™Ò$ØˆDŒJØ—|‘| aÑ'ˆŒÜˆt�}‰}Ó §¡Ò-à—‘˜aÐ ØŸ<™<¨!Ñ+ˆDŒLØ�z‰z˜QŠØ!ŸZ™Z¨!™^�”
ØˆŒØ×ÑÕr   c                 ó  — | j                   dk(  r| j                  «        y| j                  | j                   dz
     }|j                  | j                  «       | j                   dz
  | _         d| _        | j                  «        y)Nr   r   r%   F)r   Úbellr   Úundor   r   r*   ©r   r!   rI   s      r   r   zUndoDelegator.undo_event‹   sg   € Ø�<‰<˜1ÒØ�I‰IŒKØØ�m‰m˜DŸL™L¨1Ñ,Ñ-ˆØ�‰�—‘ÔØ—|‘| aÑ'ˆŒØˆŒØ×ÑÔØr   c                 ó(  — | j                   t        | j                  «      k\  r| j                  «        y| j                  | j                      }|j	                  | j
                  «       | j                   dz   | _         d| _        | j                  «        y)Nr   r%   F)r   rF   r   rS   Úredor   r   r*   rU   s      r   r   zUndoDelegator.redo_event–   sk   € Ø�<‰<œ3˜tŸ}™}Ó-Ò-Ø�I‰IŒKØØ�m‰m˜DŸL™LÑ)ˆØ�‰�—‘ÔØ—|‘| aÑ'ˆŒØˆŒØ×ÑÔØr   r   )T)Ú__name__Ú
__module__Ú__qualname__rO   r   r   r   r	   r(   r    r.   r0   r&   r*   r9   r?   rD   rJ   r4   r   r   © r   r   r   r      sa   „ à€Hòò	>òòòò*ð Ðò&ð €Iò)ó7ó3ò$ò

$óò.	ó	r   r   c                   óB   — e Zd ZdZd
d„Zd„ Zd„ Zd„ Zd„ Zd„ Z	d„ Z
d	„ Zy)ÚCommandNc                 ó^   — i | _         i | _        || _        || _        || _        |r|| _        y y r   )Úmarks_beforeÚmarks_afterr=   r>   r7   r8   )r   r=   r>   r7   r8   s        r   r   zCommand.__init__§   s6   € ØˆÔØˆÔØˆŒØˆŒØˆŒ
ÙØˆD�Ið r   c                 óÈ   — | j                   j                  }| j                  | j                  | j                  | j
                  f}| j
                  €|d d }|t        |«      z   S )Nr$   )Ú	__class__rX   r=   r>   r7   r8   Úrepr)r   ÚsÚts      r   Ú__repr__zCommand.__repr__°   sR   € Ø�N‰N×#Ñ#ˆØ�[‰[˜$Ÿ+™+ t§z¡z°4·9±9Ð=ˆØ�9‰9ÐØ�#�2�ˆAØ”4˜“7‰{Ðr   c                  ó   — y r   r[   ©r   Útexts     r   rL   z
Command.do·   ó   € Ør   c                  ó   — y r   r[   rh   s     r   rW   zCommand.redoº   rj   r   c                  ó   — y r   r[   rh   s     r   rT   zCommand.undo½   rj   r   c                  ó   — yrA   r[   rH   s     r   rN   zCommand.mergeÀ   s   € Ør   c                 ót   — i }|j                  «       D ]"  }|dk7  sŒ	|dk7  sŒ|j                  |«      ||<   Œ$ |S )Nr9   Úcurrent)Ú
mark_namesr6   )r   ri   ÚmarksÚnames       r   Ú
save_markszCommand.save_marksÃ   s@   € ØˆØ—O‘OÖ%ˆDØ�xÓ D¨IÓ$5Ø"Ÿj™j¨Ó.��d’ð &ð ˆr   c                 óX   — |j                  «       D ]  \  }}|j                  ||«       Œ y r   )ÚitemsÚmark_set)r   ri   rq   rr   r6   s        r   Ú	set_markszCommand.set_marksÊ   s$   € Ø Ÿ;™;ž=‰KˆD�%Ø�M‰M˜$ Õ&ñ )r   r   )rX   rY   rZ   r8   r   rf   rL   rW   rT   rN   rs   rw   r[   r   r   r]   r]   ¢   s1   „ ð €Dóòòòòòòó'r   r]   c                   ój   — e Zd Zd	d„Zd„ Zd„ Zd„ Zd„ Zej                  ej                  z   dz   Zd„ Zy)
r5   Nc                 ó6   — t         j                  | |d ||«       y r   ©r]   r   )r   r=   r7   r8   s       r   r   zInsertCommand.__init__Ò   s   € Ü×Ñ˜˜v t¨U°DÕ9r   c                 óÔ  — | j                  |«      | _        |j                  | j                  «      | _        |j	                  | j                  dd«      r|j                  d«      | _        |j                  | j                  | j                  | j                  «       |j                  d| j                  t        | j                  «      fz  «      | _	        | j                  |«      | _
        y )NÚ>úend-1cz%s+%dc)rs   r_   r6   r=   Úcomparer9   r7   r8   rF   r>   r`   rh   s     r   rL   zInsertCommand.doÕ   sž   € Ø ŸO™O¨DÓ1ˆÔØ—j‘j §¡Ó-ˆŒØ�<‰<˜Ÿ™ S¨(Ô3àŸ*™* XÓ.ˆDŒKØ�‰�D—K‘K §¡¨T¯Y©YÔ7Ø—j‘j ¨T¯[©[¼#¸d¿j¹j»/Ð,JÑ!JÓKˆŒØŸ?™?¨4Ó0ˆÕr   c                 óø   — |j                  d| j                  «       |j                  | j                  | j                  | j                  «       | j                  || j                  «       |j                  d«       y ©Nr9   )rv   r=   r9   r7   r8   rw   r`   Úseerh   s     r   rW   zInsertCommand.redoà   sP   € Ø�‰�h §¡Ô,Ø�‰�D—K‘K §¡¨T¯Y©YÔ7Ø�‰�t˜T×-Ñ-Ô.Ø�‰�Õr   c                 óâ   — |j                  d| j                  «       |j                  | j                  | j                  «       | j	                  || j
                  «       |j                  d«       y r€   )rv   r=   r?   r>   rw   r_   r�   rh   s     r   rT   zInsertCommand.undoç   sJ   € Ø�‰�h §¡Ô,Ø�‰�D—K‘K §¡Ô-Ø�‰�t˜T×.Ñ.Ô/Ø�‰�Õr   c                 ó¼  — | j                   |j                   ury| j                  |j                  k7  ry| j                  |j                  k7  ryt	        |j
                  «      dk7  ry| j
                  r;| j                  | j
                  d   «      | j                  |j
                  «      k7  ry|j                  | _        | j
                  |j
                  z   | _        y)NFr%   r$   T)rb   r>   r=   r8   rF   r7   ÚclassifyrH   s     r   rN   zInsertCommand.mergeî   s    € Ø�>‰> §¡Ñ.ØØ�;‰;˜#Ÿ*™*Ò$ØØ�9‰9˜Ÿ™Ò ØÜˆs�y‰y‹>˜QÒØØ�:Š:Ø�=‰=˜Ÿ™ B™Ó(¨D¯M©M¸#¿)¹)Ó,DÒDØØ—j‘jˆŒØ—Z‘Z #§)¡)Ñ+ˆŒ
Ør   Ú_c                 ó.   — || j                   v ry|dk(  ryy)NÚalphanumericÚ
ÚnewlineÚpunctuation)r‡   )r   Úcs     r   r„   zInsertCommand.classify   s    € Ø�×!Ñ!Ñ!Ø!Ø�Š9ØØr   r   )rX   rY   rZ   r   rL   rW   rT   rN   ÚstringÚascii_lettersÚdigitsr‡   r„   r[   r   r   r5   r5   Ï   s;   „ ó:ò1òòòð  ×'Ñ'¨&¯-©-Ñ7¸#Ñ=€Lór   r5   c                   ó&   — e Zd Zdd„Zd„ Zd„ Zd„ Zy)r;   Nc                 ó6   — t         j                  | ||d d «       y r   rz   r<   s      r   r   zDeleteCommand.__init__  s   € Ü×Ñ˜˜v v¨t°TÕ:r   c                 óD  — | j                  |«      | _        |j                  | j                  «      | _        | j                  r!|j                  | j                  «      | _        n#|j                  | j                  dz   «      | _        |j                  | j                  dd«      r|j                  d«      | _        |j                  | j                  | j                  «      | _        |j                  | j                  | j                  «       | j                  |«      | _	        y )Nz +1cr|   r}   )
rs   r_   r6   r=   r>   r~   Úgetr7   r?   r`   rh   s     r   rL   zDeleteCommand.do  sÀ   € Ø ŸO™O¨DÓ1ˆÔØ—j‘j §¡Ó-ˆŒØ�;Š;ØŸ*™* T§[¡[Ó1ˆD�KàŸ*™* T§[¡[°6Ñ%9Ó:ˆDŒKØ�<‰<˜Ÿ™ S¨(Ô3àŸ*™* XÓ.ˆDŒKØ—X‘X˜dŸk™k¨4¯;©;Ó7ˆŒ
Ø�‰�D—K‘K §¡Ô-ØŸ?™?¨4Ó0ˆÕr   c                 óâ   — |j                  d| j                  «       |j                  | j                  | j                  «       | j	                  || j
                  «       |j                  d«       y r€   )rv   r=   r?   r>   rw   r`   r�   rh   s     r   rW   zDeleteCommand.redo  sJ   € Ø�‰�h §¡Ô,Ø�‰�D—K‘K §¡Ô-Ø�‰�t˜T×-Ñ-Ô.Ø�‰�Õr   c                 óâ   — |j                  d| j                  «       |j                  | j                  | j                  «       | j	                  || j
                  «       |j                  d«       y r€   )rv   r=   r9   r7   rw   r_   r�   rh   s     r   rT   zDeleteCommand.undo$  sJ   € Ø�‰�h §¡Ô,Ø�‰�D—K‘K §¡Ô,Ø�‰�t˜T×.Ñ.Ô/Ø�‰�Õr   r   )rX   rY   rZ   r   rL   rW   rT   r[   r   r   r;   r;     s   „ ó;ò1òór   r;   c                   ó>   — e Zd Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z	d
d„Z
y	)rB   c                 ó    — g | _         d| _        y rA   )ÚcmdsÚdepthr
   s    r   r   zCommandSequence.__init__0  s   € ØˆŒ	Øˆ�
r   c                 ó°   — | j                   j                  }g }| j                  D ]  }|j                  d|›�«       Œ |dz   dj	                  |«      z   dz   S )Nz    z(
z,
z
))rb   rX   r—   rM   Újoin)r   rd   ÚstrsrI   s       r   rf   zCommandSequence.__repr__4  sS   € Ø�N‰N×#Ñ#ˆØˆØ—9”9ˆCØ�K‰K˜$˜s˜g˜Õ'ð à�5‰y˜5Ÿ:™: dÓ+Ñ+¨eÑ3Ð3r   c                 ó,   — t        | j                  «      S r   )rF   r—   r
   s    r   Ú__len__zCommandSequence.__len__;  s   € Ü�4—9‘9‹~Ðr   c                 ó:   — | j                   j                  |«       y r   )r—   rM   rH   s     r   rM   zCommandSequence.append>  s   € Ø�	‰	×Ñ˜Õr   c                 ó    — | j                   |   S r   )r—   )r   Úis     r   rG   zCommandSequence.getcmdA  s   € Ø�y‰y˜‰|Ðr   c                 óH   — | j                   D ]  }|j                  |«       Œ y r   )r—   rW   )r   ri   rI   s      r   rW   zCommandSequence.redoD  s   € Ø—9”9ˆCØ�H‰H�T�Nñ r   c                 ór   — | j                   d d  }|j                  «        |D ]  }|j                  |«       Œ y r   )r—   ÚreverserT   )r   ri   r—   rI   s       r   rT   zCommandSequence.undoH  s-   € Ø�y‰y™ˆ|ˆØ�‰ŒÛˆCØ�H‰H�T�Nñ r   c                 óB   — | j                   |z   | _         | j                   S r   )r˜   )r   Úincrs     r   rC   zCommandSequence.bump_depthN  s   € Ø—Z‘Z $Ñ&ˆŒ
Ø�z‰zÐr   N)r%   )rX   rY   rZ   r   rf   r�   rM   rG   rW   rT   rC   r[   r   r   rB   rB   ,  s*   „ òò4òòòòòôr   rB   c                 óJ  ‡— ddl m}m}m} ddlm}  || «      }|j                  d«       t        t        | j                  «       j                  d«      dd  «      \  }}|j                  d||dz   fz  «        ||d	¬
«      }|j                  «        |j                  «         ||«      }	t        «       Š|	j                  ‰«        ||dˆfd„¬«      }
|
j                  d¬«        ||dˆfd„¬«      }|j                  d¬«        ||dˆfd„¬«      }|j                  d¬«       y )Nr   )ÚToplevelÚTextÚButton)Ú
PercolatorzTest UndoDelegatorÚ+r%   z+%d+%dé¯   é
   )ÚheightÚUndoc                  ó&   •— ‰ j                  d «      S r   )r   ©Úds   €r   Ú<lambda>z!_undo_delegator.<locals>.<lambda>b  ó   ø€ °1·<±<ÀÔ3Er   )ri   ÚcommandÚleft)ÚsideÚRedoc                  ó&   •— ‰ j                  d «      S r   )r   r±   s   €r   r³   z!_undo_delegator.<locals>.<lambda>d  r´   r   ÚDumpc                  ó&   •— ‰ j                  d «      S r   )r   r±   s   €r   r³   z!_undo_delegator.<locals>.<lambda>f  r´   r   )Útkinterr§   r¨   r©   Úidlelib.percolatorrª   ÚtitleÚmapÚintÚgeometryÚsplitÚpackÚ	focus_setr   Úinsertfilter)Úparentr§   r¨   r©   rª   ÚtopÚxÚyri   ÚprT   rW   Údumpr²   s                @r   Ú_undo_delegatorrÌ   S  sø   ø€ ß.Ñ.Ý-Ù
�6Ó
€CØ‡I�IÐ"Ô#ÜŒs�F—O‘OÓ%×+Ñ+¨CÓ0°°Ð4Ó5�D€A€qØ‡L�L�˜Q  C¡˜LÑ(Ô)á�˜BÔ€DØ‡I�I„KØ‡N�NÔÙ�4Ó€AÜ‹€AØ‡N�N�1Ôá�#˜FÓ,EÔF€DØ‡I�I�6€IÔÙ�#˜FÓ,EÔF€DØ‡I�I�6€IÔÙ�#˜FÓ,EÔF€DØ‡I�I�6€IÕr   Ú__main__)Úmainzidlelib.idle_test.test_undoé   F)Ú	verbosityÚexit)Úrun)rŒ   Úidlelib.delegatorr   r   r]   r5   r;   rB   rÌ   rX   ÚunittestrÎ   Úidlelib.idle_test.htestrÒ   r[   r   r   Ú<module>rÖ      s{   ðÛ å 'ô$J�Iô J÷Z*'ñ *'ôZ6�Gô 6ôr �Gô  ôH$�gô $òNð. ˆzÒÝÙÐ	&°!¸%Õ@å+ÙˆÕð r   