a XC?h&+ã@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/python39/lib64/python3.9/idlelib/undo.pyrs zUndoDelegator.__init__cCsj|jdur(| d¡| d¡| d¡t ||¡|durf| d|j¡| d|j¡| d|j¡dS)Nz<>z<>z<>)ÚdelegateZunbindrÚ setdelegateZbindÚ undo_eventÚ redo_eventÚ dump_event)rr r r r r 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Úeventrr r r r(s zUndoDelegator.dump_eventcCs&d|_d|_g|_d|_| d¡dS©Néÿÿÿÿré)Ú was_savedrrÚ undoblockÚ set_savedrr r r r2s zUndoDelegator.reset_undocCs&|r|j|_nd|_d|_| ¡dS)NrF)rrrÚ check_saved)rÚflagr r r r 9s  zUndoDelegator.set_savedcCs |j|jkSr)rrrr r r rAszUndoDelegator.get_savedNcCs ||_dSr)Úsaved_change_hook)rÚhookr r r Úset_saved_change_hookFsz#UndoDelegator.set_saved_change_hookrcCs*| ¡}||jkr&||_|jr&| ¡dSr)rrr#)rZis_savedr r r r!Ks  zUndoDelegator.check_savedcCs| t|||ƒ¡dSr)ÚaddcmdÚ InsertCommand)rÚindexÚcharsÚtagsr r r ÚinsertRszUndoDelegator.insertcCs| t||ƒ¡dSr)r&Ú DeleteCommand©rÚindex1Úindex2r r r ÚdeleteUszUndoDelegator.deletecCs |jdkrtƒ|_|j ¡dS©Nr)rÚCommandSequenceÚ bump_depthrr r r Úundo_block_startcs zUndoDelegator.undo_block_startcCsN|j d¡dkrJ|j}d|_t|ƒdkrJt|ƒdkr>| d¡}| |d¡dSr)rr3ÚlenÚgetcmdr&©rÚcmdr r r Ú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Úmergerr5Úmax_undor!)rr8ZexecuteZlastcmdr r r r&ts(         zUndoDelegator.addcmdcCsP|jdkr| ¡dS|j|jd}| |j¡|jd|_d|_| ¡dS)NrrrF)rÚbellrÚundor rr!©rrr8r r r r ‹s   zUndoDelegator.undo_eventcCsR|jt|jƒkr| ¡dS|j|j}| |j¡|jd|_d|_| ¡dS)NrrF)rr5rr>Úredor rr!r@r r r r–s   zUndoDelegator.redo_event)N)N)T)Ú__name__Ú __module__Ú __qualname__r=rr rrr rr#r%rr!r+r0r4r9r&r rr r r r rs$      rc@sReZdZdZddd„Zdd„Zdd„Zdd „Zd d „Zd d „Z dd„Z dd„Z dS)ÚCommandNcCs,i|_i|_||_||_||_|r(||_dSr)Ú marks_beforeÚ marks_afterr.r/r)r*)rr.r/r)r*r r r r§szCommand.__init__cCs>|jj}|j|j|j|jf}|jdur2|dd…}|t|ƒS)Nr)Ú __class__rBr.r/r)r*Úrepr)rÚsÚtr r r Ú__repr__°s   zCommand.__repr__cCsdSrr ©rÚtextr r r r:·sz Command.docCsdSrr rMr r r rAºsz Command.redocCsdSrr rMr r r r?½sz Command.undocCsdSr1r r7r r r r<Àsz Command.mergecCs4i}| ¡D]"}|dkr |dkr | |¡||<q |S)Nr+Zcurrent)Z mark_namesr()rrNÚmarksÚnamer r r Ú save_marksÃs  zCommand.save_markscCs"| ¡D]\}}| ||¡qdSr)ÚitemsÚmark_set)rrNrOrPr(r r r Ú set_marksÊszCommand.set_marks)N) rBrCrDr*rrLr:rAr?r<rQrTr r r r rE¢s rEc@sNeZdZddd„Zdd„Zdd„Zdd „Zd d „Zej ej d Z d d„Z dS)r'NcCst ||d||¡dSr©rEr)rr.r)r*r r r rÒszInsertCommand.__init__cCsv| |¡|_| |j¡|_| |jdd¡r6| d¡|_| |j|j|j¡| d|jt|jƒf¡|_ | |¡|_ dS)Nú>úend-1cz%s+%dc) rQrFr(r.Úcomparer+r)r*r5r/rGrMr r r r:Õs  zInsertCommand.docCs>| d|j¡| |j|j|j¡| ||j¡| d¡dS©Nr+)rSr.r+r)r*rTrGÚseerMr r r rAàszInsertCommand.redocCs:| d|j¡| |j|j¡| ||j¡| d¡dSrY)rSr.r0r/rTrFrZrMr r r r?çszInsertCommand.undocCs‚|j|jurdS|j|jkr dS|j|jkr0dSt|jƒdkrBdS|jrh| |jd¡| |j¡krhdS|j|_|j|j|_dS)NFrrT)rHr/r.r*r5r)Úclassifyr7r r r r<îs   ÿzInsertCommand.mergeÚ_cCs||jvrdS|dkrdSdS)NÚ alphanumericÚ ÚnewlineZ punctuation)r])rÚcr r r r[s  zInsertCommand.classify)N) rBrCrDrr:rAr?r<ÚstringZ ascii_lettersZdigitsr]r[r r r r r'Ïs  r'c@s.eZdZd dd„Zdd„Zdd„Zdd „ZdS) r,NcCst |||dd¡dSrrUr-r r r r szDeleteCommand.__init__cCs| |¡|_| |j¡|_|jr0| |j¡|_n| |jd¡|_| |jdd¡r^| d¡|_| |j|j¡|_| |j|j¡| |¡|_ dS)Nz +1crVrW) rQrFr(r.r/rXÚgetr)r0rGrMr r r r:s  zDeleteCommand.docCs:| d|j¡| |j|j¡| ||j¡| d¡dSrY)rSr.r0r/rTrGrZrMr r r rAszDeleteCommand.redocCs:| d|j¡| |j|j¡| ||j¡| d¡dSrY)rSr.r+r)rTrFrZrMr r r r?$szDeleteCommand.undo)N)rBrCrDrr:rAr?r r r r r,s r,c@sNeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z ddd„Z dS)r2cCsg|_d|_dSr1)ÚcmdsÚdepthrr r r r0szCommandSequence.__init__cCs>|jj}g}|jD]}| d|f¡q|dd |¡dS)Nz %rz( z, z ))rHrBrcr;Újoin)rrJZstrsr8r r r rL4s  zCommandSequence.__repr__cCs t|jƒSr)r5rcrr r r Ú__len__;szCommandSequence.__len__cCs|j |¡dSr)rcr;r7r r r r;>szCommandSequence.appendcCs |j|Sr)rc)rÚir r r r6AszCommandSequence.getcmdcCs|jD]}| |¡qdSr)rcrA)rrNr8r r r rADs zCommandSequence.redocCs.|jdd…}| ¡|D]}| |¡qdSr)rcÚreverser?)rrNrcr8r r r r?HszCommandSequence.undorcCs|j||_|jSr)rd)rZincrr r r r3Ns zCommandSequence.bump_depthN)r) rBrCrDrrLrfr;r6rAr?r3r r r r r2,sr2c 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¡Sr)r r ©Údr r Úbóz!_undo_delegator..)rNZcommandÚleft)ZsideZRedocs ˆ d¡Sr)rr rpr r rrdrsZDumpcs ˆ d¡Sr)rr rpr r rrfrs)ZtkinterrirjrkZidlelib.percolatorrlÚtitleÚmapÚintZgeometryÚsplitZpackZ focus_setrZ insertfilter) ÚparentrirjrkrlZundowinÚxÚyrNÚpr?rAÚdumpr rpr Ú_undo_delegatorSs$       r~Ú__main__)Úmainzidlelib.idle_test.test_undoéF)Ú verbosityÚexit)Úrun)raZidlelib.delegatorrrrEr'r,r2r~rBZunittestr€Zidlelib.idle_test.htestr„r r r r Ús -9$'