3  f'+@sddlZddlmZGdddeZGdddZGdddeZGd d d eZGd d d eZd dZe dkrddl m Z e ddddddl m Z e edS)N) Delegatorc@seZdZdZddZddZddZdd Zd d Zd d Z dZ ddZ d#Z ddZ d$ddZd%ddZddZddZd&ddZdd Zd!d"ZdS)' UndoDelegatoricCstj||jdS)N)r__init__ reset_undo)selfr1/opt/alt/python36/lib64/python3.6/idlelib/undo.pyrs zUndoDelegator.__init__cCsj|jdk r(|jd|jd|jdtj|||dk rf|jd|j|jd|j|jd|jdS)Nz<>z<>z<>)delegateZunbindr setdelegateZbind undo_event redo_event dump_event)rr rrrr s     zUndoDelegator.setdelegatecCsvddlm}||jd|jtd|jddtd|jddtd|jddtd|j||j|jdd S) Nr)pprintzpointer: )endzsaved:z can_merge:z get_saved():break)rundolistpointerprintsaved can_merge get_saved)reventrrrrr (s zUndoDelegator.dump_eventcCs&d|_d|_g|_d|_|jddS)Nr) was_savedrr undoblock set_saved)rrrrr2s zUndoDelegator.reset_undocCs&|r|j|_nd|_d|_|jdS)NrFr)rrr check_saved)rflagrrrr9s  zUndoDelegator.set_savedcCs |j|jkS)N)rr)rrrrrAszUndoDelegator.get_savedNcCs ||_dS)N)saved_change_hook)rhookrrrset_saved_change_hookFsz#UndoDelegator.set_saved_change_hookrcCs*|j}||jkr&||_|jr&|jdS)N)rrr )rZis_savedrrrrKs  zUndoDelegator.check_savedcCs|jt|||dS)N)addcmd InsertCommand)rindexcharstagsrrrinsertRszUndoDelegator.insertcCs|jt||dS)N)r# DeleteCommand)rindex1index2rrrdeleteUszUndoDelegator.deletecCs |jdkrt|_|jjdS)Nr)rCommandSequence bump_depth)rrrrundo_block_startcs zUndoDelegator.undo_block_startcCsN|jjddkrJ|j}d|_t|dkrJt|dkr>|jd}|j|ddS)Nrrr)rr.lengetcmdr#)rcmdrrrundo_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 rappendrrrmergerr0max_undor)rr2ZexecuteZlastcmdrrrr#ts(         zUndoDelegator.addcmdcCsP|jdkr|jdS|j|jd}|j|j|jd|_d|_|jdS)NrrrF)rbellrundor rr)rrr2rrrr s   zUndoDelegator.undo_eventcCsR|jt|jkr|jdS|j|j}|j|j|jd|_d|_|jdS)NrrF)rr0rr8redor rr)rrr2rrrr s   zUndoDelegator.redo_eventr)N)N)T)__name__ __module__ __qualname__r7rr r rrrr r"rrr(r,r/r3r#r r rrrrrs$      rc@sReZdZdZdddZddZddZdd Zd d Zd d Z ddZ ddZ dS)CommandNcCs,i|_i|_||_||_||_|r(||_dS)N) marks_before marks_afterr*r+r&r')rr*r+r&r'rrrrszCommand.__init__cCs>|jj}|j|j|j|jf}|jdkr2|dd}|t|S)Nrr) __class__r;r*r+r&r'repr)rstrrr__repr__s   zCommand.__repr__cCsdS)Nr)rtextrrrr4sz Command.docCsdS)Nr)rrFrrrr:sz Command.redocCsdS)Nr)rrFrrrr9sz Command.undocCsdS)Nrr)rr2rrrr6sz Command.mergecCs8i}x.|jD]"}|dkr|dkr|j|||<qW|S)Nr(Zcurrent)Z mark_namesr%)rrFmarksnamerrr save_markss zCommand.save_markscCs&x |jD]\}}|j||q WdS)N)itemsmark_set)rrFrGrHr%rrr set_marksszCommand.set_marks)N) r;r<r=r'rrEr4r:r9r6rIrLrrrrr>s r>c@sNeZdZdddZddZddZdd Zd d Zej ej d Z d dZ dS)r$NcCstj||d||dS)N)r>r)rr*r&r'rrrrszInsertCommand.__init__cCsv|j||_|j|j|_|j|jddr6|jd|_|j|j|j|j|jd|jt|jf|_ |j||_ dS)N>zend-1cz%s+%dc) rIr?r%r*comparer(r&r'r0r+r@)rrFrrrr4s  zInsertCommand.docCs>|jd|j|j|j|j|j|j||j|jddS)Nr()rKr*r(r&r'rLr@see)rrFrrrr:szInsertCommand.redocCs:|jd|j|j|j|j|j||j|jddS)Nr()rKr*r,r+rLr?rO)rrFrrrr9szInsertCommand.undocCs|j|jk rdS|j|jkr dS|j|jkr0dSt|jdkrBdS|jrh|j|jd|j|jkrhdS|j|_|j|j|_dS)NFrTr)rAr+r*r'r0r&classify)rr2rrrr6s   zInsertCommand.merge_cCs||jkrdS|dkrdSdS)N alphanumeric newlineZ punctuation)rR)rcrrrrPs  zInsertCommand.classify)N) r;r<r=rr4r:r9r6stringZ ascii_lettersZdigitsrRrPrrrrr$s  r$c@s.eZdZd ddZddZddZdd ZdS) r)NcCstj|||dddS)N)r>r)rr*r+rrrr szDeleteCommand.__init__cCs|j||_|j|j|_|jr0|j|j|_n|j|jd|_|j|jddr^|jd|_|j|j|j|_|j|j|j|j||_ dS)Nz +1crMzend-1c) rIr?r%r*r+rNgetr&r,r@)rrFrrrr4s  zDeleteCommand.docCs:|jd|j|j|j|j|j||j|jddS)Nr()rKr*r,r+rLr@rO)rrFrrrr:szDeleteCommand.redocCs:|jd|j|j|j|j|j||j|jddS)Nr()rKr*r(r&rLr?rO)rrFrrrr9$szDeleteCommand.undo)N)r;r<r=rr4r:r9rrrrr)s r)c@sNeZdZddZddZddZddZd d Zd d Zd dZ dddZ dS)r-cCsg|_d|_dS)Nr)cmdsdepth)rrrrr0szCommandSequence.__init__cCsB|jj}g}x|jD]}|jd|fqW|ddj|dS)Nz %rz( z, z ))rAr;rXr5join)rrCZstrsr2rrrrE4s  zCommandSequence.__repr__cCs t|jS)N)r0rX)rrrr__len__;szCommandSequence.__len__cCs|jj|dS)N)rXr5)rr2rrrr5>szCommandSequence.appendcCs |j|S)N)rX)rirrrr1AszCommandSequence.getcmdcCsx|jD]}|j|qWdS)N)rXr:)rrFr2rrrr:Ds zCommandSequence.redocCs2|jdd}|jx|D]}|j|qWdS)N)rXreverser9)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}||}|jdtt|j j ddd\}}|j d||df||d d }|j |j ||} t | j||d fd d d} | j dd||dfdd d} | j dd||dfdd d} | j dddS)Nr)ToplevelTextButton) PercolatorzTest UndoDelegator+rz+%d+%d )ZheightZUndocs jdS)N)r r)drrbsz!_undo_delegator..)rFZcommandleft)ZsideZRedocs jdS)N)r r)rerrrfdsZDumpcs jdS)N)r r)rerrrffs)Ztkinterr^r_r`Zidlelib.percolatorratitlemapintZgeometrysplitZpackZ focus_setrZ insertfilter) parentr^r_r`raZundowinxyrFpr9r:dumpr)rer_undo_delegatorSs$       rq__main__)mainzidlelib.idle_test.test_undoF) verbosityexit)run)rVZidlelib.delegatorrrr>r$r)r-rqr;ZunittestrsZidlelib.idle_test.htestrwrrrrs -9$'