a ze-@s\ddlZddgZddZGdddZGdddZGdd d Zd d Zed krXedS) N dnd_start DndHandlercCst||}|jr|SdSdSN)rroot)sourceeventhr ?/opt/bitninja-python-dojo/embedded/lib/python3.9/tkinter/dnd.pyrms c@sDeZdZdZddZddZddZdd Zdd d Zdd dZ dS)rNcCs|jdkrdS|j}z |jWdStyB||_||_Yn0||_d|_|j|_}|j|_ }d||f|_ |dpd|_ | |j |j | d|jd|d<dS)NzcursorZhand2)numwidget_root_DndHandler__dndAttributeErrorrrtargetZinitial_buttoninitial_widgetrelease_pattern save_cursorbind on_release on_motion)selfrrrZbuttonrr r r __init__{s$      zDndHandler.__init__cCs0|j}d|_|r,z|`Wnty*Yn0dSr)rrrrrr r r __del__s zDndHandler.__del__c Cs|j|j}}|j||}|j}d}|r`z |j}WntyFYn0|||}|rXq`|j}q&|j}||ur|r| ||n,|rd|_| |||r| ||||_dSr) x_rooty_rootrZwinfo_containingr dnd_acceptrZmasterr dnd_motion dnd_leave dnd_enter) rrxyZ target_widgetr new_targetattrZ old_targetr r r rs.     zDndHandler.on_motioncCs||ddS)Nfinishrrr r r rszDndHandler.on_releasecCs||ddS)Nrr*r,r r r cancelszDndHandler.cancelrc Cs|j}|j}|j}|j}zr|`|j|j|jd|j|d<d|_|_|_|_|r||rp|||n | ||W| ||n| ||0dS)Nrr ) rrrrrZunbindrr dnd_commitr#dnd_end)rrZcommitrrrrr r r r+s  zDndHandler.finish)N)r) __name__ __module__ __qualname__rrrrrr-r+r r r r rws  c@sNeZdZddZdddZddZdd Zd d Zd d ZddZ ddZ dS)IconcCs||_d|_|_|_dSr)namecanvaslabelid)rr4r r r rsz Icon.__init__ cCs||jur |j|j||dS|jr.||s6dStj||jddd}|j|||dd}||_||_||_| d|j dS)NZraised)textZ borderwidthZreliefZnw)Zwindowanchorz ) r5coordsr7detachtkinterZLabelr4Z create_windowr6rpress)rr5r%r&r6r7r r r attachs  z Icon.attachcCsB|j}|sdS|j}|j}d|_|_|_|||dSr)r5r7r6deleteZdestroy)rr5r7r6r r r r=s z Icon.detachcCs4t||r0|j|_|j|_|j|j\|_|_ dSr) rr%x_offr&y_offr5r<r7x_origy_origr,r r r r?s z Icon.presscCs(||j|\}}|j|j||dSr)wherer5r<r7)rrr%r&r r r movesz Icon.movecCs|j|j|j|jdSr)r5r<r7rDrE)rr r r putbacksz Icon.putbackcCs8|}|}|j|}|j|}||j||jfSr)Z winfo_rootxZ winfo_rootyrr rBrC)rr5rZx_orgZy_orgr%r&r r r rFs   z Icon.wherecCsdSrr )rrrr r r r/ sz Icon.dnd_endN)r8r8) r0r1r2rr@r=r?rGrHrFr/r r r r r3s   r3c@s<eZdZddZddZddZddZd d Zd d Zd S)TestercCs>t||_tj|jddd|_|jjddd|j|j_dS)Nd)widthZheightZbothr))fillexpand)r>ZTopleveltopZCanvasr5packr!rr r r rs zTester.__init__cCs|Srr rrrr r r r!szTester.dnd_acceptc Csp|j||j|\}}|j|j\}}}}||||} } |j|||| || |_|||dSr)r5 focus_setrFbboxr7Zcreate_rectangledndidr") rrrr%r&x1y1x2y2ZdxZdyr r r r$s  zTester.dnd_enterc CsF||j|\}}|j|j\}}}}|j|j||||dSr)rFr5rRrSrG) rrrr%r&rTrUrVrWr r r r" szTester.dnd_motioncCs"|j|j|jd|_dSr)rNrQr5rArSrPr r r r#%s zTester.dnd_leavecCs2|||||j|\}}||j||dSr)r#rFr5r@)rrrr%r&r r r r.*s zTester.dnd_commitN) r0r1r2rr!r$r"r#r.r r r r rI s rIcCst}|dtj|jddt|}|jdt|}|jdt|}|jdtd}td}td }| |j | |j | |j | dS) Nz+1+1ZQuit)Zcommandr:z+1+60z+120+60z+240+60ZICON1ZICON2ZICON3) r>ZTkZgeometryZButtonquitrOrIrNr3r@r5Zmainloop)rt1t2Zt3Zi1Zi2Zi3r r r test0s        r[__main__)r>__all__rrr3rIr[r0r r r r fs Y=#