
    z%i|-                     x    	 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        yy)    N	dnd_start
DndHandlerc                 8    t        | |      }|j                  |S y N)r   root)sourceevenths      ?/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/tkinter/dnd.pyr   r   m   s     65!Avv    c                   8    e Zd ZdZd Zd Zd Zd ZddZd	dZ	y)
r   Nc                    |j                   dkD  ry |j                  j                         }	 |j                   y # t        $ r | |_        || _        Y nw xY w|| _        d | _        |j                   x| _        }|j                  x| _	        }d||fz  | _
        |d   xs d| _        |j                  | j                  | j                         |j                  d| j                         d|d<   y )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    99q=||!!#	JJ 	DJDI	 ',yy0f',||3f766:JJ!(+1rD(($//:J/"xs   9 AAc                 T    | j                   }d | _         |	 |`y y # t        $ r Y y w xY wr   )r   r   r   r!   r   s     r   __del__zDndHandler.__del__   s;    yy	J  " s    	''c                    |j                   |j                  }}| j                  j                  ||      }| j                  }d }|(	 |j
                  } |||      }|n|j                  }|(| j                  }||u r||j                  ||       y y |d | _        |j                  ||       ||j                  ||       || _        y y # t        $ r Y xw xY w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
'$// "&%0
))00M ' [[
#%%%fe4 & %"$$VU3%$$VU3( & " s   C 	CCc                 (    | j                  |d       y )N   finishr!   r	   s     r   r   zDndHandler.on_release       E1r   c                 (    | j                  |d       y )Nr   r8   r:   s     r   cancelzDndHandler.cancel   r;   r   c                    | j                   }| j                  }| j                  }| j                  }	 |`| j                  j                  | j                         | j                  j                  d       | j                  |d<   d x| _         x| _        x| _        | _        |'|r|j                  ||       n|j                  ||       |j                  ||       y # |j                  ||       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    $$yy	*
&&t';';<&&z2#//F8JNNDKN$+N(;di!%%fe4$$VU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
y	)Iconc                 <    || _         d x| _        x| _        | _        y r   )namecanvaslabelid)r!   rJ   s     r   r#   zIcon.__init__   s    	-111dj47r   c                    || j                   u r(| j                   j                  | j                  ||       y | j                   | j                          |y t	        j
                  || j                  dd      }|j                  |||d      }|| _         || _        || _        |j                  d| j                         y )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[[ KKtww1-;;"KKM>f499*+H>!!!QuT!B


?DJJ/r   c                     | j                   }|y | j                  }| j                  }d x| _         x| _        | _        |j                  |       |j	                          y r   )rK   rM   rL   deletedestroy)r!   rK   rM   rL   s       r   rX   zIcon.detach   sO    >WW

-111dj47br   c                     t        | |      rU|j                  | _        |j                  | _        | j
                  j                  | j                        \  | _        | _	        y y r   )
r   r0   x_offr1   y_offrK   rW   rM   x_origy_origr:   s     r   r\   z
Icon.press   sH    T5!DJDJ'+{{'9'9$'''B$DK "r   c                     | j                  | j                  |      \  }}| j                  j                  | j                  ||       y r   )whererK   rW   rM   )r!   r	   r0   r1   s       r   movez	Icon.move   s4    zz$++u-1477Aq)r   c                 z    | j                   j                  | j                  | j                  | j                         y r   )rK   rW   rM   rd   re   )r!   s    r   putbackzIcon.putback   s$    477DKK=r   c                     |j                         }|j                         }|j                  |z
  }|j                  |z
  }|| j                  z
  || j
                  z
  fS r   )winfo_rootxwinfo_rootyr(   r)   rb   rc   )r!   rK   r	   x_orgy_orgr0   r1   s          r   rg   z
Icon.where   sU    ""$""$LL5 LL5 4::~q4::~--r   c                      y r   rF   )r!   r   r	   s      r   rA   zIcon.dnd_end	  s    r   N)
   rq   )rC   rD   rE   r#   r]   rX   r\   rh   rj   rg   rA   rF   r   r   rH   rH      s+    20 C*>.r   rH   c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)Testerc                     t        j                  |      | _        t        j                  | j                  dd      | _        | j                  j                  dd       | j                  | j                  _        y )Nd   )widthheightbothr7   )fillexpand)rY   TopleveltopCanvasrK   packr+   r%   s     r   r#   zTester.__init__  sS    ##D)nnTXXSEfQ/!%r   c                     | S r   rF   r!   r   r	   s      r   r+   zTester.dnd_accept  s    r   c                 T   | j                   j                          |j                  | j                   |      \  }}|j                   j                  |j                        \  }}}}||z
  ||z
  }
}	| j                   j                  ||||	z   ||
z         | _        | j                  ||       y r   )rK   	focus_setrg   bboxrM   create_rectangledndidr-   )r!   r   r	   r0   r1   x1y1x2y2dxdys              r   r/   zTester.dnd_enter  s    ||DKK/1++FII6BBB2B[[11!Q"adC
&r   c                     |j                  | j                  |      \  }}| j                  j                  | j                        \  }}}}| j                  j	                  | j                  ||z
  ||z
         y r   )rg   rK   r   r   rh   )	r!   r   r	   r0   r1   r   r   r   r   s	            r   r-   zTester.dnd_motion   s\    ||DKK/1))$**5BBQrT1R40r   c                     | j                   j                          | j                  j                  | j                         d | _        y r   )r|   r   rK   r_   r   r   s      r   r.   zTester.dnd_leave%  s/    4::&
r   c                     | j                  ||       |j                  | j                  |      \  }}|j                  | j                  ||       y r   )r.   rg   rK   r]   )r!   r   r	   r0   r1   s        r   r@   zTester.dnd_commit*  s<    vu%||DKK/1dkk1a(r   N)	rC   rD   rE   r#   r+   r/   r-   r.   r@   rF   r   r   rs   rs     s     1'1

)r   rs   c                     t        j                         } | j                  d       t        j                  | j                  d      j                          t        |       }|j                  j                  d       t        |       }|j                  j                  d       t        |       }|j                  j                  d       t        d      }t        d      }t        d	      }|j                  |j                         |j                  |j                         |j                  |j                         | j                          y )
Nz+1+1Quit)commandrQ   z+1+60z+120+60z+240+60ICON1ICON2ICON3)rY   TkgeometryButtonquitr~   rs   r|   rH   r]   rK   mainloop)r   t1t2t3i1i2i3s          r   testr   0  s    ::<DMM&NN49962779	BFFOOG	BFFOOI	BFFOOI	gB	gB	gBIIbiiIIbiiIIbiiMMOr   __main__)rY   __all__r   r   rH   rs   r   rC   rF   r   r   <module>r      s\   cJ 
%
S* S*r: :z )  )F& zF r   