3 § f'+ã@s¤ddlZddlmZGdd„deƒZGdd„dƒZGdd„deƒZGd d „d eƒZGd d „d eƒZd d„Ze dkr ddl m Z e dddd�ddl m Z e eƒdS)éN)Ú Delegatorc@s–eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dZ dd„Z d#Z dd„Z d$dd„Zd%dd„Zdd„Zdd„Zd&dd„Zdd „Zd!d"„ZdS)'Ú UndoDelegatoriècCstj|ƒ|jƒdS)N)rÚ__init__Ú reset_undo)Úself©rú1/opt/alt/python36/lib64/python3.6/idlelib/undo.pyrs zUndoDelegator.__init__cCsj|jdk r(|jdƒ|jdƒ|jdƒtj||ƒ|dk rf|jd|jƒ|jd|jƒ|jd|jƒdS)Nz<>z<>z<>)ÚdelegateZunbindrÚ setdelegateZbindÚ undo_eventÚ redo_eventÚ dump_event)rr rrrr s     zUndoDelegator.setdelegatecCsvddlm}||jd|j…ƒtd|jdd�td|jdd�td|jdd�td|jƒƒ||j|jd…ƒd S) Nr)Úpprintzpointer:ú )Úendzsaved:z can_merge:z get_saved():Úbreak)rÚundolistÚpointerÚprintÚsavedÚ can_mergeÚ get_saved)rÚeventrrrrr (s zUndoDelegator.dump_eventcCs&d|_d|_g|_d|_|jdƒdS)Néréÿÿÿÿ)Ú was_savedrrÚ undoblockÚ set_saved)rrrrr2s zUndoDelegator.reset_undocCs&|r|j|_nd|_d|_|jƒdS)NrFr)rrrÚ check_saved)rÚflagrrrr9s  zUndoDelegator.set_savedcCs |j|jkS)N)rr)rrrrrAszUndoDelegator.get_savedNcCs ||_dS)N)Úsaved_change_hook)rÚhookrrrÚset_saved_change_hookFsz#UndoDelegator.set_saved_change_hookrcCs*|jƒ}||jkr&||_|jr&|jƒdS)N)rrr )rZis_savedrrrrKs  zUndoDelegator.check_savedcCs|jt|||ƒƒdS)N)ÚaddcmdÚ InsertCommand)rÚindexÚcharsÚtagsrrrÚinsertRszUndoDelegator.insertcCs|jt||ƒƒdS)N)r#Ú DeleteCommand)rÚindex1Úindex2rrrÚdeleteUszUndoDelegator.deletecCs |jdkrtƒ|_|jjƒdS)Nr)rÚCommandSequenceÚ bump_depth)rrrrÚundo_block_startcs zUndoDelegator.undo_block_startcCsN|jjdƒdkrJ|j}d|_t|ƒdkrJt|ƒdkr>|jdƒ}|j|dƒdS)Nrrr)rr.ÚlenÚgetcmdr#)rÚcmdrrrÚundo_block_stophs   zUndoDelegator.undo_block_stopTcCsÔ|r|j|jƒ|jdkr*|jj|ƒdS|jrX|jdkrX|j|jd}|j|ƒrXdS|g|j|jd…<|j|jkr|d|_|jd|_t |jƒ|j krÂ|jd=|jd|_|jdkrÂ|jd|_d|_|j ƒdS)NrrTr) Údor rÚappendrrrÚmergerr0Úmax_undor)rr2ZexecuteZlastcmdrrrr#ts(         zUndoDelegator.addcmdcCsP|jdkr|jƒdS|j|jd}|j|jƒ|jd|_d|_|jƒdS)NrrrF)rÚbellrÚundor rr)rrr2rrrr ‹s   zUndoDelegator.undo_eventcCsR|jt|jƒkr|jƒdS|j|j}|j|jƒ|jd|_d|_|jƒdS)NrrF)rr0rr8Úredor rr)rrr2rrrr –s   zUndoDelegator.redo_eventr)N)N)T)Ú__name__Ú __module__Ú __qualname__r7rr r rrrr r"rrr(r,r/r3r#r r rrrrrs$      rc@sReZdZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dS)ÚCommandNcCs,i|_i|_||_||_||_|r(||_dS)N)Ú marks_beforeÚ marks_afterr*r+r&r')rr*r+r&r'rrrr§szCommand.__init__cCs>|jj}|j|j|j|jf}|jdkr2|dd…}|t|ƒS)Nrr)Ú __class__r;r*r+r&r'Úrepr)rÚsÚtrrrÚ__repr__°s   zCommand.__repr__cCsdS)Nr)rÚtextrrrr4·sz Command.docCsdS)Nr)rrFrrrr:ºsz Command.redocCsdS)Nr)rrFrrrr9½sz Command.undocCsdS)Nrr)rr2rrrr6Àsz Command.mergecCs8i}x.|jƒD]"}|dkr|dkr|j|ƒ||<qW|S)Nr(Zcurrent)Z mark_namesr%)rrFÚmarksÚnamerrrÚ save_marksÃs zCommand.save_markscCs&x |jƒD]\}}|j||ƒq WdS)N)ÚitemsÚmark_set)rrFrGrHr%rrrÚ set_marksÊszCommand.set_marks)N) r;r<r=r'rrEr4r:r9r6rIrLrrrrr>¢s r>c@sNeZdZddd„Zdd„Zdd„Zdd „Zd d „Zej ej d Z d d„Z dS)r$NcCstj||d||ƒdS)N)r>r)rr*r&r'rrrrÒszInsertCommand.__init__cCsv|j|ƒ|_|j|jƒ|_|j|jddƒr6|jdƒ|_|j|j|j|jƒ|jd|jt|jƒfƒ|_ |j|ƒ|_ dS)Nú>zend-1cz%s+%dc) rIr?r%r*Úcomparer(r&r'r0r+r@)rrFrrrr4Õs  zInsertCommand.docCs>|jd|jƒ|j|j|j|jƒ|j||jƒ|jdƒdS)Nr()rKr*r(r&r'rLr@Úsee)rrFrrrr:àszInsertCommand.redocCs:|jd|jƒ|j|j|jƒ|j||jƒ|jdƒdS)Nr()rKr*r,r+rLr?rO)rrFrrrr9çszInsertCommand.undocCs‚|j|jk rdS|j|jkr dS|j|jkr0dSt|jƒdkrBdS|jrh|j|jdƒ|j|jƒkrhdS|j|_|j|j|_dS)NFrTr)rAr+r*r'r0r&Úclassify)rr2rrrr6îs   zInsertCommand.mergeÚ_cCs||jkrdS|dkrdSdS)NÚ alphanumericÚ ÚnewlineZ punctuation)rR)rÚcrrrrPs  zInsertCommand.classify)N) r;r<r=rr4r:r9r6ÚstringZ ascii_lettersZdigitsrRrPrrrrr$Ïs  r$c@s.eZdZd dd„Zdd„Zdd„Zdd „ZdS) r)NcCstj|||ddƒdS)N)r>r)rr*r+rrrr szDeleteCommand.__init__cCs�|j|ƒ|_|j|jƒ|_|jr0|j|jƒ|_n|j|jdƒ|_|j|jddƒr^|jdƒ|_|j|j|jƒ|_|j|j|jƒ|j|ƒ|_ dS)Nz +1crMzend-1c) rIr?r%r*r+rNÚgetr&r,r@)rrFrrrr4s  zDeleteCommand.docCs:|jd|jƒ|j|j|jƒ|j||jƒ|jdƒdS)Nr()rKr*r,r+rLr@rO)rrFrrrr:szDeleteCommand.redocCs:|jd|jƒ|j|j|jƒ|j||jƒ|jdƒdS)Nr()rKr*r(r&rLr?rO)rrFrrrr9$szDeleteCommand.undo)N)r;r<r=rr4r:r9rrrrr)s r)c@sNeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z ddd„Z dS)r-cCsg|_d|_dS)Nr)ÚcmdsÚdepth)rrrrr0szCommandSequence.__init__cCsB|jj}g}x|jD]}|jd|fƒqW|ddj|ƒdS)Nz %rz( z, z ))rAr;rXr5Újoin)rrCZstrsr2rrrrE4s  zCommandSequence.__repr__cCs t|jƒS)N)r0rX)rrrrÚ__len__;szCommandSequence.__len__cCs|jj|ƒdS)N)rXr5)rr2rrrr5>szCommandSequence.appendcCs |j|S)N)rX)rÚirrrr1AszCommandSequence.getcmdcCsx|jD]}|j|ƒqWdS)N)rXr:)rrFr2rrrr:Ds zCommandSequence.redocCs2|jdd…}|jƒx|D]}|j|ƒqWdS)N)rXÚreverser9)rrFrXr2rrrr9Hs zCommandSequence.undorcCs|j||_|jS)N)rY)rZincrrrrr.Ns zCommandSequence.bump_depthN)r) r;r<r=rrEr[r5r1r:r9r.rrrrr-,sr-c sddlm}m}m}ddlm}||ƒ}|jdƒtt|j ƒj dƒdd…ƒ\}}|j d||dfƒ||d d �}|j ƒ|j ƒ||ƒ} t ƒ‰| jˆƒ||d ‡fd d „d�} | j dd�||d‡fdd „d�} | j dd�||d‡fdd „d�} | j dd�dS)Nr)ÚToplevelÚTextÚButton)Ú PercolatorzTest UndoDelegatorú+rz+%d+%dé¯é )ZheightZUndocs ˆjdƒS)N)r r)ÚdrrÚbsz!_undo_delegator..)rFZcommandÚleft)ZsideZRedocs ˆjdƒS)N)r r)rerrrfdsZDumpcs ˆjdƒS)N)r r)rerrrffs)Ztkinterr^r_r`Zidlelib.percolatorraÚtitleÚmapÚintZgeometryÚsplitZpackZ focus_setrZ insertfilter) Úparentr^r_r`raZundowinÚxÚyrFÚpr9r:Údumpr)rerÚ_undo_delegatorSs$       rqÚ__main__)Úmainzidlelib.idle_test.test_undoéF)Ú verbosityÚexit)Úrun)rVZidlelib.delegatorrrr>r$r)r-rqr;ZunittestrsZidlelib.idle_test.htestrwrrrrÚs -9$'