V''P)ddlZddlmZGddeZGddZGddeZGd d eZGd d eZd Ze dk(r ddl m Z e dddddl m Z e eyy)N) DelegatorcxeZdZdZdZdZdZdZdZdZ dZ d Z d Z d Z dd Zdd ZdZdZddZdZdZy) UndoDelegatoricNtj||jyN)r__init__ reset_undoselfs 3/opt/alt/python312/lib64/python3.12/idlelib/undo.pyrzUndoDelegator.__init__s4  c\|j3|jd|jd|jdtj|||U|j d|j |j d|j |j d|jyy)Nz<>z<>z<>)delegateunbindr setdelegatebind undo_event redo_event dump_event)r rs r rzUndoDelegator.setdelegates == $ KK # KK # KK- .dH-   IIj$// 2 IIj$// 2 II+T__ = r cPddlm}||jd|jtd|jdtd|jdtd|j dtd|j ||j|jdy ) Nr)pprintzpointer: )endzsaved:z can_merge:z get_saved():break)rundolistpointerprintsaved can_merge get_saved)r eventrs r rzUndoDelegator.dump_event(sw!t}}]dll+, j$,,C0 h , lDNN4 ndnn./t}}T\\]+,r c^d|_d|_g|_d|_|j dyNr) was_savedrr undoblock set_savedr s r r zUndoDelegator.reset_undo2s*   qr ch|r|j|_nd|_d|_|jy)Nr$F)rrr check_saved)r flags r r(zUndoDelegator.set_saved9s* DJDJ r c4|j|jk(Sr)rrr s r r zUndoDelegator.get_savedAszzT\\))r Nc||_yr)saved_change_hook)r hooks r set_saved_change_hookz#UndoDelegator.set_saved_change_hookFs !%r r$c|j}||jk7r%||_|jr|jyyyr)r r&r.)r is_saveds r r*zUndoDelegator.check_savedKs@>># t~~ %%DN%%&&(& &r c<|jt|||yr)addcmd InsertCommand)r indexcharstagss r insertzUndoDelegator.insertRs M%56r c:|jt||yr)r4 DeleteCommandr index1index2s r deletezUndoDelegator.deleteUs M&&12r ct|jdk(rt|_|jjyNr)r'CommandSequence bump_depthr s r undo_block_startzUndoDelegator.undo_block_startcs( >>Q ,.DN !!#r c|jjddk(rT|j}d|_t|dkDr2t|dk(r|jd}|j |dyyyr#)r'rClengetcmdr4r cmds r undo_block_stopzUndoDelegator.undo_block_stophsf >> $ $R (A -..CDN3x!|s8q=**Q-C C#  .r c|r|j|j|jdk7r|jj|y|jr=|j dkDr.|j |j dz }|j|ry|g|j |j d|j|j kDrd|_|j dz|_t|j |jkDrD|j d=|j dz |_|jdk\r|jdz |_d|_|jy)Nrr%r$T) dorr'appendrrrmergerrFmax_undor*)r rIexecutelastcmds r r4zUndoDelegator.addcmdts  FF4== ! >>Q  NN ! !# &  >>dllQ.mmDLLN3G}}S!(+u dllm$ :: $DJ||a' t}}  - a <*&I)73$ $.  r rcBeZdZdZd dZdZdZdZdZdZ dZ d Z y) CommandNc^i|_i|_||_||_||_|r||_yyr) marks_before marks_afterr=r>r7r8)r r=r>r7r8s r rzCommand.__init__s6   DI r c|jj}|j|j|j|j f}|j |dd}|t |zS)Nr$) __class__rXr=r>r7r8repr)r sts r __repr__zCommand.__repr__sR NN # # [[$++tzz499 = 99 #2A47{r cyrr[r texts r rLz Command.do r cyrr[rhs r rWz Command.redorjr cyrr[rhs r rTz Command.undorjr cyrAr[rHs r rNz Command.mergesr cti}|jD]"}|dk7s |dk7s|j|||<$|S)Nr9current) mark_namesr6)r rimarksnames r save_markszCommand.save_markss@OO%DxDI$5"jj.d & r cX|jD]\}}|j||yr)itemsmark_set)r rirqrrr6s r set_markszCommand.set_markss$ ;;=KD% MM$ &)r r) rXrYrZr8rrfrLrWrTrNrsrwr[r r r]r]s1 D   'r r]cjeZdZd dZdZdZdZdZejejzdzZ dZ y) r5Nc6tj||d||yrr]r)r r=r7r8s r rzInsertCommand.__init__svtUD9r c|j||_|j|j|_|j |jddr|jd|_|j |j|j |j|jd|jt|j fz|_ |j||_ y)N>end-1cz%s+%dc) rsr_r6r=comparer9r7r8rFr>r`rhs r rLzInsertCommand.dos OOD1jj- << S( 3**X.DK DKKTYY7jjT[[#djj/,J!JK ??40r c|jd|j|j|j|j|j|j ||j |jdyNr9)rvr=r9r7r8rwr`seerhs r rWzInsertCommand.redosP h , DKKTYY7 tT--. r c|jd|j|j|j|j|j ||j |j dyr)rvr=r?r>rwr_rrhs r rTzInsertCommand.undosJ h , DKK- tT../ r c|j|jury|j|jk7ry|j|jk7ryt |j dk7ry|j r;|j |j d|j |j k7ry|j|_|j |j z|_y)NFr%r$T)rbr>r=r8rFr7classifyrHs r rNzInsertCommand.merges >> . ;;#** $ 99  syy>Q  :: ==B (DMM#)),D Djj ZZ#))+ r _c.||jvry|dk(ryy)N alphanumeric newline punctuation)r)r cs r rzInsertCommand.classifys !! !! 9r r) rXrYrZrrLrWrTrNstring ascii_lettersdigitsrrr[r r r5r5s;:1 ''&--7#=Lr r5c&eZdZddZdZdZdZy)r;Nc6tj|||ddyrrzr<s r rzDeleteCommand.__init__ svvtT:r cD|j||_|j|j|_|jr!|j|j|_n#|j|jdz|_|j |jddr|jd|_|j |j|j|_|j|j|j|j||_ y)Nz +1cr|r}) rsr_r6r=r>r~getr7r?r`rhs r rLzDeleteCommand.dos OOD1jj- ;;**T[[1DK**T[[6%9:DK << S( 3**X.DKXXdkk4;;7  DKK-??40r c|jd|j|j|j|j|j ||j |j dyr)rvr=r?r>rwr`rrhs r rWzDeleteCommand.redosJ h , DKK- tT--. r c|jd|j|j|j|j|j ||j |j dyr)rvr=r9r7rwr_rrhs r rTzDeleteCommand.undo$sJ h , DKK, tT../ r r)rXrYrZrrLrWrTr[r r r;r;s; 1r r;c>eZdZdZdZdZdZdZdZdZ d dZ y ) rBc g|_d|_yrA)cmdsdepthr s r rzCommandSequence.__init__0s  r c|jj}g}|jD]}|jd||dzdj |zdzS)Nz z( z, z ))rbrXrrMjoin)r rdstrsrIs r rfzCommandSequence.__repr__4sS NN # #99C KK$sg '5y5::d++e33r c,t|jSr)rFrr s r __len__zCommandSequence.__len__;s499~r c:|jj|yr)rrMrHs r rMzCommandSequence.append>s r c |j|Sr)r)r is r rGzCommandSequence.getcmdAsyy|r cH|jD]}|j|yr)rrW)r rirIs r rWzCommandSequence.redoDs99C HHTNr cr|jdd}|j|D]}|j|yr)rreverserT)r rirrIs r rTzCommandSequence.undoHs-yy| C HHTNr cB|j|z|_|jSr)r)r incrs r rCzCommandSequence.bump_depthNsZZ$& zzr N)r%) rXrYrZrrfrrMrGrWrTrCr[r r rBrB,s*4 r rBcJ ddlm}m}m}ddlm}||}|j dtt|jjddd\}}|jd||dzfz||d }|j|j||} t | j ||d fd  } | jd||d fd } | jd||d fd } | jdy)Nr)ToplevelTextButton) PercolatorzTest UndoDelegator+r%z+%d+%d )heightUndoc&jdSr)rdsr z!_undo_delegator..b1<<3Er )ricommandleft)sideRedoc&jdSr)rrsr rz!_undo_delegator..drr Dumpc&jdSr)rrsr rz!_undo_delegator..frr )tkinterrrridlelib.percolatorrtitlemapintgeometrysplitpack focus_setr insertfilter)parentrrrrtopxyriprTrWdumprs @r _undo_delegatorrSs..- 6 CII"# sFOO%++C04 5DAqLLQCL() B DIIKNN4AANN1 #F,E FDII6I #F,E FDII6I #F,E FDII6Ir __main__)mainzidlelib.idle_test.test_undoF) verbosityexit)run)ridlelib.delegatorrrr]r5r;rBrrXunittestridlelib.idle_test.htestrr[r r rs{ '$JIJZ*'*'Z6G6r G H$g$N. z &!%@+ r