B „ f&+ã@s¤ddlZddlmZGdd„deƒZGdd„dƒZGdd„deƒZGd d „d eƒZGd d „d eƒZd d„Ze dkr ddl m Z e ddddddl m Z e eƒdS)éN)Ú Delegatorc@s–eZdZdZdd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dZ dd„Z dZ dd„Z d#dd„Zd$dd„Zdd„Zdd„Zd%dd„Zdd „Zd!d"„ZdS)&Ú UndoDelegatoriècCst |¡| ¡dS)N)rÚ__init__Ú reset_undo)Úself©rú1/opt/alt/python37/lib64/python3.7/idlelib/undo.pyrs zUndoDelegator.__init__cCsj|jdk r(| d¡| d¡| d¡t ||¡|dk rf| d|j¡| d|j¡| d|j¡dS)Nz<>z<>z<>)ÚdelegateZunbindrÚ setdelegateZbindÚ undo_eventÚ redo_eventÚ dump_event)rr rrrr s     zUndoDelegator.setdelegatecCsvddlm}||jd|j…ƒtd|jddtd|jddtd|jddtd| ¡ƒ||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|_| d¡dS)Néÿÿÿÿré)Ú was_savedrrÚ undoblockÚ set_saved)rrrrr2s zUndoDelegator.reset_undocCs&|r|j|_nd|_d|_| ¡dS)NrF)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*| ¡}||jkr&||_|jr&| ¡dS)N)rrr )rZis_savedrrrrKs  zUndoDelegator.check_savedcCs| t|||ƒ¡dS)N)ÚaddcmdÚ InsertCommand)rÚindexÚcharsÚtagsrrrÚinsertRszUndoDelegator.insertcCs| t||ƒ¡dS)N)r#Ú DeleteCommand)rÚindex1Úindex2rrrÚdeleteUszUndoDelegator.deletecCs |jdkrtƒ|_|j ¡dS)Nr)rÚCommandSequenceÚ bump_depth)rrrrÚundo_block_startcs zUndoDelegator.undo_block_startcCsN|j d¡dkrJ|j}d|_t|ƒdkrJt|ƒdkr>| d¡}| |d¡dS)Nrrr)rr.ÚlenÚgetcmdr#)rÚcmdrrrÚundo_block_stophs   zUndoDelegator.undo_block_stopTcCsÔ|r| |j¡|jdkr*|j |¡dS|jrX|jdkrX|j|jd}| |¡rXdS|g|j|jd…<|j|jkr|d|_|jd|_t |jƒ|j krÂ|jd=|jd|_|jdkrÂ|jd|_d|_|  ¡dS)NrrrT) Údor rÚappendrrrÚmergerr0Úmax_undor)rr2ZexecuteZlastcmdrrrr#ts(         zUndoDelegator.addcmdcCsP|jdkr| ¡dS|j|jd}| |j¡|jd|_d|_| ¡dS)NrrrF)rÚbellrÚundor rr)rrr2rrrr ‹s   zUndoDelegator.undo_eventcCsR|jt|jƒkr| ¡dS|j|j}| |j¡|jd|_d|_| ¡dS)NrrF)rr0rr8Úredor rr)rrr2rrrr –s   zUndoDelegator.redo_event)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)Nr)Ú __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.| ¡D]"}|dkr|dkr| |¡||<qW|S)Nr(Zcurrent)Z mark_namesr%)rrFÚmarksÚnamerrrÚ save_marksÃs zCommand.save_markscCs&x | ¡D]\}}| ||¡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$NcCst ||d||¡dS)N)r>r)rr*r&r'rrrrÒszInsertCommand.__init__cCsv| |¡|_| |j¡|_| |jdd¡r6| d¡|_| |j|j|j¡| d|jt|jƒf¡|_ | |¡|_ dS)Nú>zend-1cz%s+%dc) rIr?r%r*Úcomparer(r&r'r0r+r@)rrFrrrr4Õs  zInsertCommand.docCs>| d|j¡| |j|j|j¡| ||j¡| d¡dS)Nr()rKr*r(r&r'rLr@Úsee)rrFrrrr:àszInsertCommand.redocCs:| d|j¡| |j|j¡| ||j¡| d¡dS)Nr()rKr*r,r+rLr?rO)rrFrrrr9çszInsertCommand.undocCs‚|j|jk rdS|j|jkr dS|j|jkr0dSt|jƒdkrBdS|jrh| |jd¡| |j¡krhdS|j|_|j|j|_dS)NFrrT)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)NcCst |||dd¡dS)N)r>r)rr*r+rrrr szDeleteCommand.__init__cCs| |¡|_| |j¡|_|jr0| |j¡|_n| |jd¡|_| |jdd¡r^| d¡|_| |j|j¡|_| |j|j¡| |¡|_ dS)Nz +1crMzend-1c) rIr?r%r*r+rNÚgetr&r,r@)rrFrrrr4s  zDeleteCommand.docCs:| d|j¡| |j|j¡| ||j¡| d¡dS)Nr()rKr*r,r+rLr@rO)rrFrrrr:szDeleteCommand.redocCs:| d|j¡| |j|j¡| ||j¡| d¡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]}| d|f¡qW|dd |¡dS)Nz %rz( z, z ))rAr;rXr5Újoin)rrCZstrsr2rrrrE4s  zCommandSequence.__repr__cCs t|jƒS)N)r0rX)rrrrÚ__len__;szCommandSequence.__len__cCs|j |¡dS)N)rXr5)rr2rrrr5>szCommandSequence.appendcCs |j|S)N)rX)rÚirrrr1AszCommandSequence.getcmdcCsx|jD]}| |¡qWdS)N)rXr:)rrFr2rrrr:Ds zCommandSequence.redocCs2|jdd…}| ¡x|D]}| |¡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}||ƒ}| d¡tt|  ¡  d¡dd…ƒ\}}|  d||df¡||d d }|  ¡|  ¡||ƒ} t ƒ‰|  ˆ¡||d ‡fd d „d} | j dd||d‡fdd „d} | j dd||d‡fdd „d} | j dddS)Nr)ÚToplevelÚTextÚButton)Ú PercolatorzTest UndoDelegatorú+rz+%d+%dé¯é )ZheightZUndocs ˆ d¡S)N)r r)ÚdrrÚbóz!_undo_delegator..)rFZcommandÚleft)ZsideZRedocs ˆ d¡S)N)r r)rerrrfdrgZDumpcs ˆ d¡S)N)r r)rerrrffrg)Ztkinterr^r_r`Zidlelib.percolatorraÚtitleÚmapÚintZgeometryÚsplitZpackZ focus_setrZ insertfilter) Úparentr^r_r`raZundowinÚxÚyrFÚpr9r:Údumpr)rerÚ_undo_delegatorSs$       rrÚ__main__)Úmainzidlelib.idle_test.test_undoéF)Ú verbosityÚexit)Úrun)rVZidlelib.delegatorrrr>r$r)r-rrr;ZunittestrtZidlelib.idle_test.htestrxrrrrÚs -9$'