???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    e5dâ,  ã                   @   sT   d dl Z dd„ ZG dd„ dƒZG dd„ dƒZG dd	„ d	ƒZd
d„ ZedkrPeƒ  dS )é    Nc                 C   s   t | |ƒ}|jr|S d S d S ©N)Ú
DndHandlerÚroot)ÚsourceÚeventÚh© r   ú#/usr/lib64/python3.8/tkinter/dnd.pyÚ	dnd_startl   s    
r
   c                   @   sD   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zdd
d„Zddd„Z	dS )r   Nc                 C   s°   |j dkrd S |j ¡ }z|j W d S  tk
rD   | |_|| _Y nX || _d | _|j  | _}|j | _	}d||f | _
|d p‚d| _| | j
| j¡ | d| j¡ d|d< d S )Né   z<B%d-ButtonRelease-%d>ÚcursorÚ ú<Motion>Zhand2)ZnumÚwidgetZ_rootÚ_DndHandler__dndÚAttributeErrorr   r   ÚtargetZinitial_buttonÚinitial_widgetÚrelease_patternÚsave_cursorÚbindÚ
on_releaseÚ	on_motion)Úselfr   r   r   Zbuttonr   r   r   r	   Ú__init__z   s$    

zDndHandler.__init__c                 C   s2   | j }d | _ |r.z|`W n tk
r,   Y nX d S r   )r   r   r   ©r   r   r   r   r	   Ú__del__Ž   s    zDndHandler.__del__c           	      C   s²   |j |j }}| j ||¡}| j}d }|rbz
|j}W n tk
rH   Y nX |||ƒ}|rZqb|j}q&| j}||kr‚|r®| 	||¡ n,|r˜d | _| 
||¡ |r®| ||¡ || _d S r   )Úx_rootÚy_rootr   Zwinfo_containingr   Ú
dnd_acceptr   Zmasterr   Ú
dnd_motionÚ	dnd_leaveÚ	dnd_enter)	r   r   ÚxÚyZtarget_widgetr   Ú
new_targetÚattrZ
old_targetr   r   r	   r   —   s.    

zDndHandler.on_motionc                 C   s   |   |d¡ d S )Né   ©Úfinish©r   r   r   r   r	   r   ²   s    zDndHandler.on_releasec                 C   s   |   |d¡ d S )Nr   r(   r*   r   r   r	   Úcancelµ   s    zDndHandler.cancelr   c              
   C   s’   | j }| j}| j}| j}zf|`| j | j¡ | j d¡ | j|d< d  | _  | _ | _| _|r||rp| 	||¡ n| 
||¡ W 5 | ||¡ X d S )Nr   r   )r   r   r   r   Údnd_endr   Zunbindr   r   Ú
dnd_commitr!   )r   r   Zcommitr   r   r   r   r   r   r	   r)   ¸   s    
zDndHandler.finish)N)r   )
Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r+   r)   r   r   r   r	   r   v   s   	
r   c                   @   sN   e Zd Zdd„ Zddd„Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Z	dd„ Z
dS )ÚIconc                 C   s   || _ d  | _ | _| _d S r   )ÚnameÚcanvasÚlabelÚid)r   r2   r   r   r	   r   Ñ   s    zIcon.__init__é
   c                 C   s€   || j kr | j  | j||¡ d S | j r.|  ¡  |s6d S tj|| jddd}|j|||dd}|| _ || _|| _| 	d| j
¡ d S )Né   Zraised)ÚtextZborderwidthZreliefZnw)ZwindowZanchorz<ButtonPress>)r3   Úcoordsr5   ÚdetachÚtkinterZLabelr2   Zcreate_windowr4   r   Úpress)r   r3   r#   r$   r4   r5   r   r   r	   ÚattachÕ   s     

 ÿzIcon.attachc                 C   sB   | j }|sd S | j}| j}d  | _  | _| _| |¡ | ¡  d S r   )r3   r5   r4   ÚdeleteZdestroy)r   r3   r5   r4   r   r   r	   r:   å   s    
zIcon.detachc                 C   s4   t | |ƒr0|j| _|j| _| j | j¡\| _| _	d S r   )
r
   r#   Úx_offr$   Úy_offr3   r9   r5   Úx_origÚy_origr*   r   r   r	   r<   ï   s    
z
Icon.pressc                 C   s(   |   | j|¡\}}| j | j||¡ d S r   )Úwherer3   r9   r5   )r   r   r#   r$   r   r   r	   Úmove÷   s    z	Icon.movec                 C   s   | j  | j| j| j¡ d S r   )r3   r9   r5   rA   rB   )r   r   r   r	   Úputbackû   s    zIcon.putbackc                 C   s8   |  ¡ }| ¡ }|j| }|j| }|| j || j fS r   )Zwinfo_rootxZwinfo_rootyr   r   r?   r@   )r   r3   r   Zx_orgZy_orgr#   r$   r   r   r	   rC   þ   s
    

z
Icon.wherec                 C   s   d S r   r   )r   r   r   r   r   r	   r,     s    zIcon.dnd_endN)r6   r6   )r.   r/   r0   r   r=   r:   r<   rD   rE   rC   r,   r   r   r   r	   r1   Ï   s   


r1   c                   @   s<   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ ZdS )ÚTesterc                 C   s>   t  |¡| _t j| jddd| _| jjddd | j| j_d S )Néd   )ÚwidthZheightZbothr'   )ZfillÚexpand)r;   ZToplevelÚtopZCanvasr3   Úpackr   r   r   r   r	   r     s    zTester.__init__c                 C   s   | S r   r   ©r   r   r   r   r   r	   r     s    zTester.dnd_acceptc                 C   sp   | j  ¡  | | j |¡\}}|j  |j¡\}}}}|| ||  }	}
| j  ||||	 ||
 ¡| _|  ||¡ d S r   )r3   Ú	focus_setrC   Úbboxr5   Zcreate_rectangleÚdndidr    )r   r   r   r#   r$   Úx1Úy1Úx2Úy2ZdxZdyr   r   r	   r"     s    
zTester.dnd_enterc           	      C   sF   |  | j|¡\}}| j | j¡\}}}}| j | j|| || ¡ d S r   )rC   r3   rN   rO   rD   )	r   r   r   r#   r$   rP   rQ   rR   rS   r   r   r	   r      s    zTester.dnd_motionc                 C   s"   | j  ¡  | j | j¡ d | _d S r   )rJ   rM   r3   r>   rO   rL   r   r   r	   r!   $  s    
zTester.dnd_leavec                 C   s2   |   ||¡ | | j|¡\}}| | j||¡ d S r   )r!   rC   r3   r=   )r   r   r   r#   r$   r   r   r	   r-   )  s    zTester.dnd_commitN)	r.   r/   r0   r   r   r"   r    r!   r-   r   r   r   r	   rF     s   rF   c                  C   sª   t  ¡ } |  d¡ t j| jdd ¡  t| ƒ}|j d¡ t| ƒ}|j d¡ t| ƒ}|j d¡ tdƒ}tdƒ}td	ƒ}| 	|j
¡ | 	|j
¡ | 	|j
¡ |  ¡  d S )
Nz+1+1ZQuit)Zcommandr8   z+1+60z+120+60z+240+60ZICON1ZICON2ZICON3)r;   ZTkZgeometryZButtonÚquitrK   rF   rJ   r1   r=   r3   Zmainloop)r   Út1Út2Zt3Zi1Zi2Zi3r   r   r	   Útest/  s     
rW   Ú__main__)r;   r
   r   r1   rF   rW   r.   r   r   r   r	   Ú<module>g   s   
Y=#