\d#+ddlZddlmZGddeZGddZGddeZGd d eZGd d eZd Ze dkr'ddl m Z e dddddl m Z e edSdS)N) DelegatorczeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z dd Zdd ZdZdZddZdZdZdS) UndoDelegatoricVtj||dSN)r__init__ reset_undoselfs ..\python\lib\idlelib\undo.pyrzUndoDelegator.__init__s)4    cf|j?|d|d|dtj|||S|d|j|d|j|d|jdSdS)Nz<>z<>z<>)delegateunbindr setdelegatebind undo_event redo_event dump_event)r rs r rzUndoDelegator.setdelegates = $ KK # # # KK # # # KK- . . .dH---   IIj$/ 2 2 2 IIj$/ 2 2 2 II+T_ = = = = = r cTddlm}||jd|jtd|jdtd|jdtd|jdtd|||j|jdd S) Nr)pprintzpointer: )endzsaved:z can_merge:z get_saved():break)rundolistpointerprintsaved can_merge get_saved)r eventrs r rzUndoDelegator.dump_event(s!!!!!!t}]dl]+,,, j$,C0000 h ,,,, lDN4444 ndnn..///t}T\]]+,,,wr chd|_d|_g|_d|_|ddSNr) was_savedrr undoblock set_savedr s r r zUndoDelegator.reset_undo2s6   qr ch|r |j|_nd|_d|_|dS)Nr$F)rrr check_saved)r flags r r(zUndoDelegator.set_saved9s;  DJJDJ r c"|j|jkSr)rrr s r r zUndoDelegator.get_savedAszT\))r Nc||_dSr)saved_change_hook)r hooks r set_saved_change_hookz#UndoDelegator.set_saved_change_hookFs!%r r$c|}||jkr$||_|jr|dSdSdSr)r r&r.)r is_saveds r r*zUndoDelegator.check_savedKsZ>>## t~ % %%DN% )&&((((( & % ) )r cN|t|||dSr)addcmd InsertCommand)r indexcharstagss r insertzUndoDelegator.insertRs& M%5566666r cL|t||dSr)r4 DeleteCommandr index1index2s r deletezUndoDelegator.deleteUs$ M&&1122222r ct|jdkrt|_|jdSNr)r'CommandSequence bump_depthr s r undo_block_startzUndoDelegator.undo_block_startcs6 >Q  ,..DN !!#####r c|jddkra|j}d|_t|dkrBt|dkr|d}||ddSdSdSr#)r'rClengetcmdr4r cmds r undo_block_stopzUndoDelegator.undo_block_stophs > $ $R ( (A - -.CDN3xx!||s88q==**Q--C C##### . -|r TcJ|r||j|jdkr|j|dS|jr7|jdkr,|j|jdz }||rdS|g|j|jd<|j|jkrd|_|jdz|_t|j|j kr1|jd=|jdz |_|jdkr|jdz |_d|_| dS)Nrr%r$T) dorr'appendrrrmergerrFmax_undor*)r rIexecutelastcmds r r4zUndoDelegator.addcmdts%  " FF4= ! ! ! >Q   N ! !# & & & F > dlQ..mDLN3G}}S!! (+u dlmm$ : $ $DJ|a' t}   - - a  > >***&&&I)))77773333$$$ $ $ $.        r rcDeZdZdZd dZdZdZdZdZdZ dZ d Z dS) CommandNcbi|_i|_||_||_||_|r ||_dSdSr) marks_before marks_afterr=r>r7r8)r r=r>r7r8s r rzCommand.__init__sD    DIII  r c|jj}|j|j|j|jf}|j |dd}|t |zS)Nr$) __class__rXr=r>r7r8repr)r sts r __repr__zCommand.__repr__sG N # [$+tz49 = 9 #2#A477{r cdSrr[r texts r rLz Command.do r cdSrr[rhs r rWz Command.redorjr cdSrr[rhs r rTz Command.undorjr cdSrAr[rHs r rNz Command.mergesqr ci}|D]&}|dkr|dkr||||<'|S)Nr9current) mark_namesr6)r rimarksnames r save_markszCommand.save_markssPOO%% / /DxDI$5$5"jj..d  r cf|D]\}}|||dSr)itemsmark_set)r rirqrrr6s r set_markszCommand.set_markss> ;;== ' 'KD% MM$ & & & & ' 'r r) rXrYrZr8rrfrLrWrTrNrsrwr[r r r]r]s D         '''''r r]cXeZdZd dZdZdZdZdZej ej zdzZ dZ dS) r5NcBt||d||dSrr]r)r r=r7r8s r rzInsertCommand.__init__s$vtUD99999r c|||_||j|_||jddr|d|_||j|j|j|d|jt|jfz|_ |||_ dS)N>end-1cz%s+%dc) rsr_r6r=comparer9r7r8rFr>r`rhs r rLzInsertCommand.dos OOD11jj-- << S( 3 3 /**X..DK DKTY777jjT[#dj//,J!JKK ??400r c|d|j||j|j|j|||j|ddSNr9)rvr=r9r7r8rwr`seerhs r rWzInsertCommand.redosc h ,,, DKTY777 tT-... r c|d|j||j|j|||j|ddSr)rvr=r?r>rwr_rrhs r rTzInsertCommand.undos_ h ,,, DK--- tT./// r cl|j|jurdS|j|jkrdS|j|jkrdSt |jdkrdS|jr>||jd||jkrdS|j|_|j|jz|_dS)NFr%r$T)rbr>r=r8rFr7classifyrHs r rNzInsertCommand.merges > . .5 ;#* $ $5 9 5 sy>>Q  5 :  ==B ( (DMM#),D,D D D5j Z#)+ tr _c,||jvrdS|dkrdSdS)N alphanumeric newline punctuation)r)r cs r rzInsertCommand.classifys( ! ! !!> 999}r r) rXrYrZrrLrWrTrNstring ascii_lettersdigitsrrr[r r r5r5s::::111 '&-7#=Lr r5c(eZdZddZdZdZdZdS)r;NcBt|||dddSrrzr<s r rzDeleteCommand.__init__ s$vvtT:::::r c4|||_||j|_|jr ||j|_n"||jdz|_||jddr|d|_||j|j|_||j|j|||_ dS)Nz +1cr|r}) rsr_r6r=r>r~getr7r?r`rhs r rLzDeleteCommand.dos OOD11jj-- ; ;**T[11DKK**T[6%9::DK << S( 3 3 /**X..DKXXdk4;77  DK---??400r c|d|j||j|j|||j|ddSr)rvr=r?r>rwr`rrhs r rWzDeleteCommand.redos_ h ,,, DK--- tT-... r c|d|j||j|j|||j|ddSr)rvr=r9r7rwr_rrhs r rTzDeleteCommand.undo$s_ h ,,, DK,,, tT./// r r)rXrYrZrrLrWrTr[r r r;r;sU;;;; 1 1 1r r;c@eZdZdZdZdZdZdZdZdZ d d Z d S) rBc"g|_d|_dSrA)cmdsdepthr s r rzCommandSequence.__init__0s  r c|jj}g}|jD]}|d||dzd|zdzS)Nz z( z, z ))rbrXrrMjoin)r rdstrsrIs r rfzCommandSequence.__repr__4s] N #9 ( (C KKs ' ' ' '5y5::d+++e33r c*t|jSr)rFrr s r __len__zCommandSequence.__len__;s49~~r c:|j|dSr)rrMrHs r rMzCommandSequence.append>s r c|j|Sr)r)r is r rGzCommandSequence.getcmdAsy|r cD|jD]}||dSr)rrW)r rirIs r rWzCommandSequence.redoDs.9  C HHTNNNN  r c|jdd}||D]}||dSr)rreverserT)r rirrIs r rTzCommandSequence.undoHsHy|   C HHTNNNN  r r%c.|j|z|_|jSr)r)r incrs r rCzCommandSequence.bump_depthNsZ$& zr N)r%) rXrYrZrrfrrMrGrWrTrCr[r r rBrB,s444 r rBc ddlm}m}m}ddlm}||}|dtt| ddd\}}| d||dzfz||d }| | ||} t |  ||d fd  } | d||d fd } | d||d fd } | ddS)Nr)ToplevelTextButton) PercolatorzTest UndoDelegator+r%z+%d+%d )heightUndoc.dSr)rdsr z!_undo_delegator..bq||D7I7Ir )ricommandleft)sideRedoc.dSr)rrsr rz!_undo_delegator..drr Dumpc.dSr)rrsr rz!_undo_delegator..frr )tkinterrrridlelib.percolatorrtitlemapintgeometrysplitpack focus_setr insertfilter)parentrrrrundowinxyriprTrWdumprs @r _undo_delegatorrSs..........------hvG MM&''' sFOO%%++C004 5 5DAq XAG ,--- 4 # # #DIIKKKNN 4AANN1 6'0I0I0I0I J J JDII6I 6'0I0I0I0I J J JDII6I 6'0I0I0I0I J J JDII6Ir __main__)mainzidlelib.idle_test.test_undoF) verbosityexit)run)ridlelib.delegatorrrr]r5r;rBrrXunittestridlelib.idle_test.htestrr[r r rss ''''''$JJJJJIJJJZ*'*'*'*'*'*'*'*'Z66666G666r     G   H$$$$$g$$$N, zD &!%@@@@++++++C r