e f?*@sddlZddlTddlmZGdddeZGdddZGdd d eZGd d d eZGd d d eZddZ e dkrddl m Z e e ndS)N)*) Delegatorc@seZdZdZddZddZddZdd Zd d Zd d Z dZ ddZ d#Z ddZ dddZdddZddZddZdddZdd Zd!d"ZdS)$ UndoDelegatoricCstj||jdS)N)r__init__ reset_undo)selfr:/opt/alt/python34/lib64/python3.4/idlelib/UndoDelegator.pyrs zUndoDelegator.__init__cCs|jdk r9|jd|jd|jdntj|||dk r|jd|j|jd|j|jd|jndS)Nz<>z<>z<>)delegateZunbindr setdelegateZbind undo_event redo_event dump_event)rr rrr r s   zUndoDelegator.setdelegatecCsddlm}||jd|jtd|jddtd|jddtd|jddtd|j||j|jdd S) Nr)pprintzpointer:end zsaved:z can_merge:z get_saved():break)rundolistpointerprintsaved can_merge get_saved)reventrrrr r&szUndoDelegator.dump_eventcCs5d|_d|_g|_d|_|jddS)Nr) was_savedrr undoblock set_saved)rrrr r0s     zUndoDelegator.reset_undocCs5|r|j|_n d|_d|_|jdS)NrFr)rrr check_saved)rZflagrrr r7s   zUndoDelegator.set_savedcCs|j|jkS)N)rr)rrrr r?szUndoDelegator.get_savedNcCs ||_dS)N)saved_change_hook)rhookrrr set_saved_change_hookDsz#UndoDelegator.set_saved_change_hookrcCsA|j}||jkr=||_|jr=|jq=ndS)N)rrr )rZis_savedrrr rIs    zUndoDelegator.check_savedcCs|jt|||dS)N)addcmd InsertCommand)rindexcharstagsrrr insertPszUndoDelegator.insertcCs|jt||dS)N)r# DeleteCommand)rindex1index2rrr deleteSszUndoDelegator.deletecCs/|jdkrt|_n|jjdS)Nr)rCommandSequence bump_depth)rrrr undo_block_startaszUndoDelegator.undo_block_startcCsz|jjddkrv|j}d|_t|dkrvt|dkr`|jd}n|j|dqvndS)Nrrr)rr.lengetcmdr#)rcmdrrr undo_block_stopfs  zUndoDelegator.undo_block_stopTcCs3|r|j|jn|jdkr<|jj|dS|jr~|jdkr~|j|jd}|j|r~dSn|g|j|jd<|j|jkrd|_n|jd|_t |j|j kr|jd=|jd|_|jdkr|jd|_qnd|_|j dS)NrrTr) dor rappendrrrmergerr0max_undor)rr2ZexecuteZlastcmdrrr r#rs(   zUndoDelegator.addcmdcCsh|jdkr|jdS|j|jd}|j|j|jd|_d|_|jdS)NrrrF)rbellrundor rr)rrr2rrr r s   zUndoDelegator.undo_eventcCsm|jt|jkr&|jdS|j|j}|j|j|jd|_d|_|jdS)NrrF)rr0rr8redor rr)rrr2rrr r s   zUndoDelegator.redo_eventr)__name__ __module__ __qualname__r7rr rrrrr r"rrr(r,r/r3r#r r rrrr rs$          rc@syeZdZdZdddZddZddZdd Zd d Zd d Z ddZ ddZ dS)CommandNcCsCi|_i|_||_||_||_|r?||_ndS)N) marks_before marks_afterr*r+r&r')rr*r+r&r'rrr rs     zCommand.__init__cCsZ|jj}|j|j|j|jf}|jdkrL|dd}n|t|S)Nrr) __class__r;r*r+r&r'repr)rstrrr __repr__s  zCommand.__repr__cCsdS)Nr)rtextrrr r4sz Command.docCsdS)Nr)rrFrrr r:sz Command.redocCsdS)Nr)rrFrrr r9sz Command.undocCsdS)Nrr)rr2rrr r6sz Command.mergecCsOi}xB|jD]4}|dkr|dkr|j|||s       r>c@soeZdZdddZddZddZdd Zd d Zej ej d Z d dZ dS)r$NcCstj||d||dS)N)r>r)rr*r&r'rrr rszInsertCommand.__init__cCs|j||_|j|j|_|j|jddrT|jd|_n|j|j|j|j|jd|jt|jf|_ |j||_ dS)N>zend-1cz%s+%dc) rIr?r%r*comparer(r&r'r0r+r@)rrFrrr r4s(zInsertCommand.docCsS|jd|j|j|j|j|j|j||j|jddS)Nr()rKr*r(r&r'rLr@see)rrFrrr r:szInsertCommand.redocCsM|jd|j|j|j|j|j||j|jddS)Nr()rKr*r,r+rLr?rO)rrFrrr r9szInsertCommand.undocCs|j|jk rdS|j|jkr,dS|j|jkrBdSt|jdkr[dS|jr|j|jd|j|jkrdS|j|_|j|j|_dS)NFrTr)rAr+r*r'r0r&classify)rr2rrr r6s ( zInsertCommand.merge_cCs'||jkrdS|dkr#dSdS)N alphanumeric newlineZ punctuation)rR)rcrrr rPs  zInsertCommand.classify) r;r<r=rr4r:r9r6stringZ ascii_lettersZdigitsrRrPrrrr r$s    r$c@sCeZdZdddZddZddZdd ZdS) r)NcCstj|||dddS)N)r>r)rr*r+rrr r szDeleteCommand.__init__cCs|j||_|j|j|_|jrH|j|j|_n|j|jd|_|j|jddr|jd|_n|j|j|j|_|j|j|j|j||_ dS)Nz +1crMzend-1c) rIr?r%r*r+rNgetr&r,r@)rrFrrr r4s zDeleteCommand.docCsM|jd|j|j|j|j|j||j|jddS)Nr()rKr*r,r+rLr@rO)rrFrrr r:szDeleteCommand.redocCsM|jd|j|j|j|j|j||j|jddS)Nr()rKr*r(r&rLr?rO)rrFrrr r9%szDeleteCommand.undo)r;r<r=rr4r:r9rrrr r)s   r)c@sseZdZddZddZddZddZd d Zd d Zd dZ dddZ dS)r-cCsg|_d|_dS)Nr)cmdsdepth)rrrr r1s zCommandSequence.__init__cCsS|jj}g}x%|jD]}|jd|fqW|ddj|dS)Nz %rz( z, z ))rAr;rXr5join)rrCZstrsr2rrr rE5s  zCommandSequence.__repr__cCs t|jS)N)r0rX)rrrr __len__<szCommandSequence.__len__cCs|jj|dS)N)rXr5)rr2rrr r5?szCommandSequence.appendcCs |j|S)N)rX)rirrr r1BszCommandSequence.getcmdcCs%x|jD]}|j|q WdS)N)rXr:)rrFr2rrr r:EszCommandSequence.redocCs?|jdd}|jx|D]}|j|q$WdS)N)rXreverser9)rrFrXr2rrr r9Is  zCommandSequence.undorcCs|j||_|jS)N)rY)rZincrrrr r.OszCommandSequence.bump_depthN) r;r<r=rrEr[r5r1r:r9r.rrrr r-,s        r-c spddlm}t}|jdttttjd|j \}}}}|j d||dft |}|j dd|j |j ||}t|jt|d d d fd d } | j ddt|d dd fdd } | j ddt|d dd fdd } | j dd|jdS)Nr) PercolatorzTest UndoDelegatorz[x+]z+%d+%dheight rFZUndoZcommandcs jdS)N)r r)drr bsz!_undo_delegator..ZsideleftZRedocs jdS)N)r r)rbrr rcdsZDumpcs jdS)N)rr)rbrr rcfs)Zidlelib.Percolatorr^ZTktitlelistmapintresplitZgeometryZTextconfigZpackZ focus_setrZ insertfilterZButtonZmainloop) parentr^rootwidthr`xyrFpr9r:dumpr)rbr _undo_delegatorSs&  3      $$$rs__main__)run) rVZtkinterZidlelib.Delegatorrrr>r$r)r-rsr;Zidlelib.idle_test.htestrurrrr s  .:$'