a
    ze                     @   sx   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rtd dlmZ edddd d dlm	Z	 e	e dS )    )*c                   @   sD   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.9/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   sz   | j r
d S t| j | _ }|d z|jdd|jdd W n tyP   Y n0 |   | 	  | 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   s@   |   \}}| 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 d S r   )NotImplementedErrorr   r   r   r	   r   A   s    zTooltipBase.showcontentsc                 C   s4   | j }d | _ |r0z|  W n ty.   Y n0 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                       sZ   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                    sV   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   z4| j d| j | j d| j | j d| j W n tyF   Y n0 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|   n|   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 r   )r'   r   Zafter_cancel)r   Zafter_idr   r   r	   r3      s    zOnHoverTooltipBase.unschedulec                    s2   z|    W n ty   Y n0 tt|   d S r   )r3   r   r%   r"   r   r   r.   r   r	   r      s
    zOnHoverTooltipBase.hidetip)r#   )N)N)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%   r5   r
   text)r   r   r7   r&   r.   r   r	   r
      s    
zHovertip.__init__c                 C   s$   t | j| jtdtdd}|  d S )Nz#ffffe0r   )r7   ZjustifyZ
backgroundZreliefZborderwidth)Labelr   r7   ZLEFTZSOLIDpack)r   labelr   r   r	   r      s    zHovertip.showcontents)r#   )r   r    r!   r
   r   r4   r   r   r.   r	   r5      s   r5   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)r7   z"Button 1 -- 1/2 second hover delayz!This is tooltip text for button1.i  r6   zButton 2 -- no hover delayz!This is tooltip
text for button2.)
r   titlemapintZgeometrysplitr8   r9   ZButtonr5   )parenttopr   r   r:   Zbutton1Zbutton2r   r   r	   _tooltip   s    
 rC   __main__)mainzidlelib.idle_test.test_tooltip   F)	verbosityexit)runN)
tkinterr   r"   r5   rC   r   ZunittestrE   Zidlelib.idle_test.htestrI   r   r   r   r	   <module>   s   H?