
    ;e|-                         	 d dl Z ddgZd Z G d d          Z G d d          Z G d d	          Zd
 Zedk    r e             dS dS )    N	dnd_start
DndHandlerc                 8    t          | |          }|j        |S d S N)r   root)sourceevenths      "/usr/lib/python3.11/tkinter/dnd.pyr   r   m   s#    65!!Avt    c                   :    e Zd ZdZd Zd Zd Zd Zd	dZd
dZ	dS )r   Nc                    |j         dk    rd S |j                                        }	 |j         d S # t          $ r | |_        || _        Y nw xY w|| _        d | _        |j         x| _        }|j        x| _	        }d||fz  | _
        |d         pd| _        |                    | j
        | j                   |                    d| j                   d|d<   d S )N   z<B%d-ButtonRelease-%d>cursor <Motion>hand2)numwidget_root_DndHandler__dndAttributeErrorr   r   targetinitial_buttoninitial_widgetrelease_patternsave_cursorbind
on_release	on_motion)selfr   r	   r   buttonr   s         r   __init__zDndHandler.__init__{   s    9q==F|!!##	JJF 	 	 	DJDIII	 ',y0f',|3f766:JJ!(+1rD($/:::J///"xs   1 AAc                 R    | j         }d | _         |	 |`d S # t          $ r Y d S w xY wd S r   )r   r   r   r!   r   s     r   __del__zDndHandler.__del__   sN    y	JJJ!    s    
$$c                    |j         |j        }}| j                            ||          }| j        }d }|1	 |j        } |||          }|nn# t          $ r Y nw xY w|j        }|1| j        }||u r||	                    ||           d S d S |d | _        |
                    ||           ||                    ||           || _        d S d S r   )x_rooty_rootr   winfo_containingr   
dnd_acceptr   masterr   
dnd_motion	dnd_leave	dnd_enter)	r!   r	   xytarget_widgetr   
new_targetattr
old_targets	            r   r    zDndHandler.on_motion   s-   |U\1+<<QBB
'$/ "T&%00
) *	 "    *0M ' [
##%%%fe44444 &% %"$$VU333%$$VU333( &%s   A 
AAc                 2    |                      |d           d S )N   finishr!   r	   s     r   r   zDndHandler.on_release       E1r   c                 2    |                      |d           d S )Nr   r8   r:   s     r   cancelzDndHandler.cancel   r;   r   r   c                    | j         }| j        }| j        }| j        }	 |`| j                            | j                   | j                            d           | j        |d<   d x| _         x| _        x| _        | _        |/|r|                    ||           n|	                    ||           |
                    ||           d S # |
                    ||           w xY w)Nr   r   )r   r   r   r   r   unbindr   r   
dnd_commitr.   dnd_end)r!   r	   commitr   r   r   r   s          r   r9   zDndHandler.finish   s    $y	*
&&t';<<<&&z222#/F8JNNDKN$+N(;di! 4%%fe4444$$VU333NN65)))))FNN65))))s   BC C r   )r   )
__name__
__module____qualname__r   r#   r&   r    r   r=   r9    r   r   r   r   w   s}        D# # #(  ) ) )6     * * * * * *r   c                   @    e Zd Zd ZddZd Zd Zd Zd Zd Z	d	 Z
d
S )Iconc                 >    || _         d x| _        x| _        | _        d S r   )namecanvaslabelid)r!   rJ   s     r   r#   zIcon.__init__   s"    	-111dj4777r   
   c                 h   || j         u r#| j                             | j        ||           d S | j         |                                  |d S t	          j        || j        dd          }|                    |||d          }|| _         || _        || _        |	                    d| j
                   d S )N   raised)textborderwidthreliefnw)windowanchorz<ButtonPress>)rK   coordsrM   detachtkinterLabelrJ   create_windowrL   r   press)r!   rK   r0   r1   rL   rM   s         r   attachzIcon.attach   s    T[  Ktw1---F;"KKMMM>Ff49*+H> > >!!!QuT!BB


?DJ/////r   c                     | j         }|d S | j        }| j        }d x| _         x| _        | _        |                    |           |                                 d S r   )rK   rM   rL   deletedestroy)r!   rK   rM   rL   s       r   rY   zIcon.detach   sY    >FW
-111dj47br   c                     t          | |          rF|j        | _        |j        | _        | j                            | j                  \  | _        | _	        d S d S r   )
r   r0   x_offr1   y_offrK   rX   rM   x_origy_origr:   s     r   r]   z
Icon.press   sW    T5!! 	CDJDJ'+{'9'9$''B'B$DK	C 	Cr   c                     |                      | j        |          \  }}| j                            | j        ||           d S r   )whererK   rX   rM   )r!   r	   r0   r1   s       r   movez	Icon.move   s=    zz$+u--147Aq)))))r   c                 \    | j                             | j        | j        | j                   d S r   )rK   rX   rM   re   rf   )r!   s    r   putbackzIcon.putback   s(    47DK=====r   c                     |                                 }|                                }|j        |z
  }|j        |z
  }|| j        z
  || j        z
  fS r   )winfo_rootxwinfo_rootyr(   r)   rc   rd   )r!   rK   r	   x_orgy_orgr0   r1   s          r   rh   z
Icon.where   sS    ""$$""$$L5 L5 4:~q4:~--r   c                     d S r   rF   )r!   r   r	   s      r   rA   zIcon.dnd_end	  s    r   N)rN   rN   )rC   rD   rE   r#   r^   rY   r]   ri   rk   rh   rA   rF   r   r   rH   rH      s        2 2 20 0 0 0   C C C* * *> > >. . .    r   rH   c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )Testerc                     t          j        |          | _        t          j        | j        dd          | _        | j                            dd           | j        | j        _        d S )Nd   )widthheightbothr7   )fillexpand)rZ   TopleveltopCanvasrK   packr+   r%   s     r   r#   zTester.__init__  s[    #D))nTXSEEEfQ///!%r   c                     | S r   rF   r!   r   r	   s      r   r+   zTester.dnd_accept  s    r   c                 L   | j                                          |                    | j         |          \  }}|j                             |j                  \  }}}}||z
  ||z
  }
}	| j                             ||||	z   ||
z             | _        |                     ||           d S r   )rK   	focus_setrh   bboxrM   create_rectangledndidr-   )r!   r   r	   r0   r1   x1y1x2y2dxdys              r   r/   zTester.dnd_enter  s    ||DK//1++FI66BBB2B[11!Q"adCC
&&&&&r   c                     |                     | j        |          \  }}| j                            | j                  \  }}}}| j                            | j        ||z
  ||z
             d S r   )rh   rK   r   r   ri   )	r!   r   r	   r0   r1   r   r   r   r   s	            r   r-   zTester.dnd_motion   sd    ||DK//1))$*55BBQrT1R400000r   c                     | j                                          | j                            | j                   d | _        d S r   )r|   r   rK   r`   r   r   s      r   r.   zTester.dnd_leave%  s9    4:&&&


r   c                     |                      ||           |                    | j        |          \  }}|                    | j        ||           d S r   )r.   rh   rK   r^   )r!   r   r	   r0   r1   s        r   r@   zTester.dnd_commit*  sM    vu%%%||DK//1dk1a(((((r   N)	rC   rD   rE   r#   r+   r/   r-   r.   r@   rF   r   r   rs   rs     sn        1 1 1  ' ' '1 1 1
  
) ) ) ) )r   rs   c                     t          j                    } |                     d           t          j        | j        d                                           t          |           }|j                            d           t          |           }|j                            d           t          |           }|j                            d           t          d          }t          d          }t          d	          }|	                    |j
                   |	                    |j
                   |	                    |j
                   |                                  d S )
Nz+1+1Quit)commandrR   z+1+60z+120+60z+240+60ICON1ICON2ICON3)rZ   TkgeometryButtonquitr~   rs   r|   rH   r^   rK   mainloop)r   t1t2t3i1i2i3s          r   testr   0  s   :<<DMM&N49622277999	BFOOG	BFOOI	BFOOI	gB	gB	gBIIbiIIbiIIbiMMOOOOOr   __main__)rZ   __all__r   r   rH   rs   r   rC   rF   r   r   <module>r      s   cJ 
%
  S* S* S* S* S* S* S* S*r: : : : : : : :z )  )  )  )  )  )  )  )F  & zDFFFFF r   