U e5dâ,ã@sTddlZdd„ZGdd„dƒZGdd„dƒZGdd „d ƒZd d „Zed krPeƒdS) éNcCst||ƒ}|jr|SdSdS©N)Ú DndHandlerÚroot)ÚsourceÚeventÚh©rú#/usr/lib64/python3.8/tkinter/dnd.pyÚ dnd_startls r c@sDeZdZdZdd„Zdd„Zdd„Zdd „Zdd d „Zdd d„Z dS)rNcCs°|jdkrdS|j ¡}z |jWdStk rD||_||_YnX||_d|_|j|_}|j|_ }d||f|_ |dp‚d|_ |  |j |j ¡|  d|j¡d|d<dS)NézÚcursorÚúZhand2)ZnumÚwidgetZ_rootÚ_DndHandler__dndÚAttributeErrorrrÚtargetZinitial_buttonÚinitial_widgetÚrelease_patternÚ save_cursorÚbindÚ on_releaseÚ on_motion)ÚselfrrrZbuttonrrrr Ú__init__zs$     zDndHandler.__init__cCs2|j}d|_|r.z|`Wntk r,YnXdSr)rrr©rrrrr Ú__del__ŽszDndHandler.__del__c Cs²|j|j}}|j ||¡}|j}d}|rbz |j}Wntk rHYnX|||ƒ}|rZqb|j}q&|j}||kr‚|r®|  ||¡n,|r˜d|_|  ||¡|r®|  ||¡||_dSr) Úx_rootÚy_rootrZwinfo_containingrÚ dnd_acceptrZmasterrÚ dnd_motionÚ dnd_leaveÚ dnd_enter) rrÚxÚyZ target_widgetrÚ new_targetÚattrZ old_targetrrr r—s.    zDndHandler.on_motioncCs| |d¡dS)Né©Úfinish©rrrrr r²szDndHandler.on_releasecCs| |d¡dS)Nrr(r*rrr ÚcancelµszDndHandler.cancelrc Cs’|j}|j}|j}|j}zf|`|j |j¡|j d¡|j|d<d|_|_|_|_|r||rp|  ||¡n |  ||¡W5| ||¡XdS)Nrr ) rrrrÚdnd_endrZunbindrrÚ dnd_commitr!)rrZcommitrrrrrrr r)¸s  zDndHandler.finish)N)r) Ú__name__Ú __module__Ú __qualname__rrrrrr+r)rrrr rvs  rc@sNeZdZdd„Zddd„Zdd„Zdd „Zd d „Zd d „Zdd„Z dd„Z dS)ÚIconcCs||_d|_|_|_dSr)ÚnameÚcanvasÚlabelÚid)rr2rrr rÑsz Icon.__init__é cCs€||jkr |j |j||¡dS|jr.| ¡|s6dStj||jddd}|j|||dd}||_||_||_|  d|j ¡dS)NéZraised)ÚtextZ borderwidthZreliefZnw)ZwindowZanchorz ) r3Úcoordsr5ÚdetachÚtkinterZLabelr2Z create_windowr4rÚpress)rr3r#r$r4r5rrr ÚattachÕs   ÿz Icon.attachcCsB|j}|sdS|j}|j}d|_|_|_| |¡| ¡dSr)r3r5r4ÚdeleteZdestroy)rr3r5r4rrr r:ås z Icon.detachcCs4t||ƒr0|j|_|j|_|j |j¡\|_|_ dSr) r r#Úx_offr$Úy_offr3r9r5Úx_origÚy_origr*rrr r<ïs z Icon.presscCs(| |j|¡\}}|j |j||¡dSr)Úwherer3r9r5)rrr#r$rrr Úmove÷sz Icon.movecCs|j |j|j|j¡dSr)r3r9r5rArB)rrrr Úputbackûsz Icon.putbackcCs8| ¡}| ¡}|j|}|j|}||j||jfSr)Z winfo_rootxZ winfo_rootyrrr?r@)rr3rZx_orgZy_orgr#r$rrr rCþs   z Icon.wherecCsdSrr)rrrrrr r,sz Icon.dnd_endN)r6r6) r.r/r0rr=r:r<rDrErCr,rrrr r1Ïs   r1c@s<eZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd S)ÚTestercCs>t |¡|_tj|jddd|_|jjddd|j|j_dS)Néd)ÚwidthZheightZbothr')ZfillÚexpand)r;ZToplevelÚtopZCanvasr3Úpackrrrrr rs zTester.__init__cCs|Srr©rrrrrr rszTester.dnd_acceptc Csp|j ¡| |j|¡\}}|j |j¡\}}}}||||} } |j |||| || ¡|_| ||¡dSr)r3Ú focus_setrCÚbboxr5Zcreate_rectangleÚdndidr ) rrrr#r$Úx1Úy1Úx2Úy2ZdxZdyrrr r"s  zTester.dnd_enterc CsF| |j|¡\}}|j |j¡\}}}}|j |j||||¡dSr)rCr3rNrOrD) rrrr#r$rPrQrRrSrrr r szTester.dnd_motioncCs"|j ¡|j |j¡d|_dSr)rJrMr3r>rOrLrrr r!$s zTester.dnd_leavecCs2| ||¡| |j|¡\}}| |j||¡dSr)r!rCr3r=)rrrr#r$rrr r-)s zTester.dnd_commitN) r.r/r0rrr"r r!r-rrrr rF s rFcCsªt ¡}| d¡tj|jdd ¡t|ƒ}|j d¡t|ƒ}|j d¡t|ƒ}|j d¡tdƒ}tdƒ}td ƒ}|  |j ¡|  |j ¡|  |j ¡|  ¡dS) Nz+1+1ZQuit)Zcommandr8z+1+60z+120+60z+240+60ZICON1ZICON2ZICON3) r;ZTkZgeometryZButtonÚquitrKrFrJr1r=r3Zmainloop)rÚt1Út2Zt3Zi1Zi2Zi3rrr Útest/s        rWÚ__main__)r;r rr1rFrWr.rrrr Úgs Y=#