o
     JAf                     @   s~   	 d dl T G dd dZG dd deZG dd deZdd	 Zed
kr=d dlmZ edddd d dlm	Z	 e	e dS dS )    )*c                   @   sF   e Zd Z	 dd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TooltipBasec                 C   s   	 || _ d | _d S N)anchor_widget	tipwindow)selfr    r   &/usr/lib/python3.10/idlelib/tooltip.py__init__   s   
zTooltipBase.__init__c                 C   s   |    d S r   hidetipr   r   r   r	   __del__   s   zTooltipBase.__del__c                 C   s|   	 | j rd S t| j | _ }|d z|jdd|jdd W n	 ty)   Y nw |   | 	  | j 
  | j   d S )N   z!::tk::unsupported::MacWindowStylestylehelpZnoActivates)r   Toplevelr   Zwm_overrideredirectZtkcallZ_wTclErrorposition_windowshowcontentsZupdate_idletasksZliftr   Ztwr   r   r	   showtip   s    

zTooltipBase.showtipc                 C   sB   	 |   \}}| j | }| j | }| jd||f  d S )N+%d+%d)get_positionr   Zwinfo_rootxZwinfo_rootyr   Zwm_geometry)r   xyZroot_xZroot_yr   r   r	   r   /   s
   zTooltipBase.position_windowc                 C   s   	 d| j  d fS )N   r   )r   Zwinfo_heightr   r   r   r	   r   6   s   zTooltipBase.get_positionc                 C   s   	 t r   )NotImplementedErrorr   r   r   r	   r   A   s   zTooltipBase.showcontentsc                 C   s:   	 | j }d | _ |rz|  W d S  ty   Y d S w d S r   )r   Zdestroyr   r   r   r   r	   r   F   s   zTooltipBase.hidetipN)
__name__
__module____qualname__r
   r   r   r   r   r   r   r   r   r   r	   r   
   s    
r   c                       s\   e Zd Z	 d fdd	Z fddZdddZdd	d
Zdd Zdd Z fddZ	  Z
S )OnHoverTooltipBase  c                    sX   	 t t| | || _d | _| jd| j| _| jd| j	| _
| jd| j	| _d S Nz<Enter>z<Leave>z<Button>)superr"   r
   hover_delay	_after_idr   bind_show_event_id1_hide_event_id2_id3)r   r   r&   	__class__r   r	   r
   U   s   	zOnHoverTooltipBase.__init__c                    sZ   z| j d| j | j d| j | j d| j W n	 ty#   Y nw tt|   d S r$   )	r   Zunbindr*   r,   r-   r   r%   r"   r   r   r.   r   r	   r   g   s   zOnHoverTooltipBase.__del__Nc                 C   s    	 | j r
|   d S |   d S r   )r&   scheduler   r   eventr   r   r	   r)   p   s   zOnHoverTooltipBase._show_eventc                 C   s   	 |    d S r   r   r1   r   r   r	   r+   w   s   zOnHoverTooltipBase._hide_eventc                 C   s"   	 |    | j| j| j| _d S r   )
unscheduler   Zafterr&   r   r'   r   r   r   r	   r0   {   s
   

zOnHoverTooltipBase.schedulec                 C   s&   	 | j }d | _ |r| j| d S d S r   )r'   r   Zafter_cancel)r   Zafter_idr   r   r	   r3      s   zOnHoverTooltipBase.unschedulec                    s4   	 z|    W n	 ty   Y nw tt|   d S r   )r3   r   r%   r"   r   r   r.   r   r	   r      s   zOnHoverTooltipBase.hidetipr#   r   )r   r    r!   r
   r   r)   r+   r0   r3   r   __classcell__r   r   r.   r	   r"   R   s    
	
r"   c                       s(   e Zd Z	 d fdd	Zdd Z  ZS )Hovertipr#   c                    s    	 t t| j||d || _d S )Nr&   )r%   r6   r
   text)r   r   r8   r&   r.   r   r	   r
      s   	
zHovertip.__init__c                 C   s$   t | j| jtdtdd}|  d S )Nz#ffffe0r   )r8   ZjustifyZ
backgroundZreliefZborderwidth)Labelr   r8   ZLEFTZSOLIDpack)r   labelr   r   r	   r      s   zHovertip.showcontentsr4   )r   r    r!   r
   r   r5   r   r   r.   r	   r6      s    r6   c                 C   s   t | }|d tt|  ddd  \}}|d||d f  t|dd}|  t|dd}|  t	|d	d
d t|dd}|  t	|dd d d S )NzTest tooltip+r   r      zPlace your mouse over buttons)r8   z"Button 1 -- 1/2 second hover delayz!This is tooltip text for button1.i  r7   zButton 2 -- no hover delayz!This is tooltip
text for button2.)
r   titlemapintZgeometrysplitr9   r:   ZButtonr6   )parenttopr   r   r;   Zbutton1Zbutton2r   r   r	   _tooltip   s   
 rD   __main__)mainzidlelib.idle_test.test_tooltip   F)	verbosityexit)runN)
tkinterr   r"   r6   rD   r   ZunittestrF   Zidlelib.idle_test.htestrJ   r   r   r   r	   <module>   s    H?