a  ze&+@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 dZ ddZ d#ddZd$ddZddZddZd%ddZdd Zd!d"ZdS)& UndoDelegatoricCst||dSN)r__init__ reset_undoselfr @/opt/bitninja-python-dojo/embedded/lib/python3.9/idlelib/undo.pyrs zUndoDelegator.__init__cCsj|jdur(|d|d|dt|||durf|d|j|d|j|d|jdS)Nz<>z<>z<>)delegateZunbindr setdelegatebind undo_event redo_event dump_event)rr r r r r s     zUndoDelegator.setdelegatecCsvddlm}||jd|jtd|jddtd|jddtd|jddtd|||j|jdd S) Nr)pprintzpointer: )endzsaved:z can_merge:z get_saved():break)rundolistpointerprintsaved can_merge get_saved)reventrr r r r(s zUndoDelegator.dump_eventcCs&d|_d|_g|_d|_|ddSNr) was_savedrr undoblock set_savedrr r r r2s zUndoDelegator.reset_undocCs&|r|j|_nd|_d|_|dS)NrF)rrr check_saved)rflagr r r r!9s  zUndoDelegator.set_savedcCs |j|jkSr)rrrr r r rAszUndoDelegator.get_savedNcCs ||_dSr)saved_change_hook)rhookr 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)rindexcharstagsr r r insertRszUndoDelegator.insertcCs|t||dSr)r' DeleteCommandrindex1index2r r r deleteUszUndoDelegator.deletecCs |jdkrt|_|jdSNr)r CommandSequence bump_depthrr r r undo_block_startcs zUndoDelegator.undo_block_startcCsN|jddkrJ|j}d|_t|dkrJt|dkr>|d}||ddSr)r r4lengetcmdr'rcmdr 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 appendrrrmergerr6max_undor")rr9ZexecuteZlastcmdr r r r'ts(         zUndoDelegator.addcmdcCsP|jdkr|dS|j|jd}||j|jd|_d|_|dS)NrrrF)rbellrundor rr"rrr9r r r rs   zUndoDelegator.undo_eventcCsR|jt|jkr|dS|j|j}||j|jd|_d|_|dS)NrrF)rr6rr?redor rr"rAr r r rs   zUndoDelegator.redo_event)N)N)T)__name__ __module__ __qualname__r>rr rrr!rr$r&rr"r,r1r5r:r'rrr r r r rs$      rc@sReZdZdZdddZddZddZdd Zd d Zd d Z ddZ ddZ dS)CommandNcCs,i|_i|_||_||_||_|r(||_dSr) marks_before marks_afterr/r0r*r+)rr/r0r*r+r r r rszCommand.__init__cCs>|jj}|j|j|j|jf}|jdur2|dd}|t|S)Nr) __class__rCr/r0r*r+repr)rstr r r __repr__s   zCommand.__repr__cCsdSrr rtextr r r r;sz Command.docCsdSrr rNr r r rBsz Command.redocCsdSrr rNr r r r@sz Command.undocCsdSr2r r8r r r r=sz Command.mergecCs4i}|D]"}|dkr |dkr ||||<q |S)Nr,current)Z mark_namesr))rrOmarksnamer r r save_markss  zCommand.save_markscCs"|D]\}}|||qdSr)itemsmark_set)rrOrQrRr)r r r set_marksszCommand.set_marks)N) rCrDrEr+rrMr;rBr@r=rSrVr r r r rFs rFc@sNeZdZdddZddZddZdd Zd d Zej ej d Z d dZ dS)r(NcCst||d||dSrrFr)rr/r*r+r r r rszInsertCommand.__init__cCsv|||_||j|_||jddr6|d|_||j|j|j|d|jt|jf|_ |||_ dS)N>end-1cz%s+%dc) rSrGr)r/comparer,r*r+r6r0rHrNr r r r;s  zInsertCommand.docCs>|d|j||j|j|j|||j|ddSNr,)rUr/r,r*r+rVrHseerNr r r rBszInsertCommand.redocCs:|d|j||j|j|||j|ddSr[)rUr/r1r0rVrGr\rNr r r r@szInsertCommand.undocCs|j|jurdS|j|jkr dS|j|jkr0dSt|jdkrBdS|jrh||jd||jkrhdS|j|_|j|j|_dS)NFrrT)rIr0r/r+r6r*classifyr8r r r r=s   zInsertCommand.merge_cCs||jvrdS|dkrdSdS)N alphanumeric newline punctuation)r_)rcr r r r]s  zInsertCommand.classify)N) rCrDrErr;rBr@r=string ascii_lettersdigitsr_r]r r r r r(s  r(c@s.eZdZd ddZddZddZdd ZdS) r-NcCst|||dddSrrWr.r r r r szDeleteCommand.__init__cCs|||_||j|_|jr0||j|_n||jd|_||jddr^|d|_||j|j|_||j|j|||_ dS)Nz +1crXrY) rSrGr)r/r0rZgetr*r1rHrNr r r r;s  zDeleteCommand.docCs:|d|j||j|j|||j|ddSr[)rUr/r1r0rVrHr\rNr r r rBszDeleteCommand.redocCs:|d|j||j|j|||j|ddSr[)rUr/r,r*rVrGr\rNr r r r@$szDeleteCommand.undo)N)rCrDrErr;rBr@r r r r r-s r-c@sNeZdZddZddZddZddZd d Zd d Zd dZ dddZ dS)r3cCsg|_d|_dSr2)cmdsdepthrr r r r0szCommandSequence.__init__cCs>|jj}g}|jD]}|d|fq|dd|dS)Nz %rz( z, z ))rIrCrhr<join)rrKZstrsr9r r r rM4s  zCommandSequence.__repr__cCs t|jSr)r6rhrr r r __len__;szCommandSequence.__len__cCs|j|dSr)rhr<r8r r r r<>szCommandSequence.appendcCs |j|Sr)rh)rir r r r7AszCommandSequence.getcmdcCs|jD]}||qdSr)rhrB)rrOr9r r r rBDs zCommandSequence.redocCs.|jdd}||D]}||qdSr)rhreverser@)rrOrhr9r r r r@HszCommandSequence.undorcCs|j||_|jSr)ri)rZincrr r r r4Ns zCommandSequence.bump_depthN)r) rCrDrErrMrkr<r7rBr@r4r r r r r3,sr3c sddlm}m}m}ddlm}||}|dtt| ddd\}}| d||df||d d }| | ||} t | ||d fd d d} | j dd||dfdd d} | j dd||dfdd d} | j dddS)Nr)ToplevelTextButton) PercolatorzTest UndoDelegator+rz+%d+%d )ZheightZUndocs dSr)rr dr r bz!_undo_delegator..)rOZcommandleft)ZsideZRedocs dSr)rr rur r rwdrxZDumpcs dSr)rr rur r rwfrx)tkinterrnrorpZidlelib.percolatorrqtitlemapintZgeometrysplitpackZ focus_setrZ insertfilter) parentrnrorprqZundowinxyrOpr@rBdumpr rur _undo_delegatorSs$       r__main__)mainzidlelib.idle_test.test_undoF) verbosityexit)run)rdZidlelib.delegatorrrrFr(r-r3rrCZunittestrZidlelib.idle_test.htestrr r r r s -9$'