
    ;eG                         	 d dl T  G d d          Z G d de          Z G d de          Zd Zed	k    r'd d
lmZ  eddd           d dlm	Z	  e	e           dS dS )    )*c                   :    e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	dS )	TooltipBasec                 $    	 || _         d | _        d S N)anchor_widget	tipwindow)selfr   s     &/usr/lib/python3.11/idlelib/tooltip.py__init__zTooltipBase.__init__   s    	 +    c                 .    |                                   d S r   hidetipr
   s    r   __del__zTooltipBase.__del__   s    r   c                    	 | j         rd S t          | j                  x| _         }|                    d           	 |j                            dd|j        dd           n# t          $ r Y nw xY w|                                  | 	                                 | j         
                                 | j                                          d S )N   z!::tk::unsupported::MacWindowStylestylehelpnoActivates)r	   Toplevelr   wm_overrideredirecttkcall_wTclErrorposition_windowshowcontentsupdate_idletasksliftr
   tws     r   showtipzTooltipBase.showtip   s    !> 	F&t'9:::
q!!!	 EJJ:GRU}. . . . 	 	 	D	 	'')))s   #A   
A-,A-c                     	 |                                  \  }}| j                                        |z   }| j                                        |z   }| j                            d||fz             d S )N+%d+%d)get_positionr   winfo_rootxwinfo_rootyr	   wm_geometry)r
   xyroot_xroot_ys        r   r   zTooltipBase.position_window/   sr    4  ""1#//11A5#//11A5""8vv.>#>?????r   c                 @    	 d| j                                         dz   fS )N   r   )r   winfo_heightr   s    r   r'   zTooltipBase.get_position6   s&    6 4%2244q888r   c                     	 t           r   )NotImplementedErrorr   s    r   r   zTooltipBase.showcontentsA   s    2!!r   c                 x    	 | j         }d | _         |r(	 |                                 d S # t          $ r Y d S w xY wd S r   )r	   destroyr   r"   s     r   r   zTooltipBase.hidetipF   s]    ^ 	

   	 	s   ) 
77N)
__name__
__module____qualname__r   r   r$   r   r'   r   r    r   r   r   r   
   s        *      *@ @ @	9 	9 	9" " "
	 	 	 	 	r   r   c                   R     e Zd Z	 d
 fd	Z fdZddZddZd Zd Z fd	Z	 xZ
S )OnHoverTooltipBase  c                 F   	 t                                          |           || _        d | _        | j                            d| j                  | _        | j                            d| j                  | _	        | j                            d| j                  | _
        d S Nz<Enter>z<Leave>z<Button>)superr   hover_delay	_after_idr   bind_show_event_id1_hide_event_id2_id3)r
   r   r@   	__class__s      r   r   zOnHoverTooltipBase.__init__U   s    	 	'''&&++It7GHH	&++It7GHH	&++J8HII			r   c                 ,   	 | j                             d| j                   | j                             d| j                   | j                             d| j                   n# t
          $ r Y nw xY wt                                                       d S r>   )r   unbindrD   rF   rG   r   r?   r   r
   rH   s    r   r   zOnHoverTooltipBase.__del__g   s    	%%i;;;%%i;;;%%j$)<<<< 	 	 	D	s   A A$ $
A10A1Nc                 j    	 | j         r|                                  d S |                                  d S r   )r@   scheduler$   r
   events     r   rC   zOnHoverTooltipBase._show_eventp   s2    2 	MMOOOOOLLNNNNNr   c                 0    	 |                                   d S r   r   rN   s     r   rE   zOnHoverTooltipBase._hide_eventw   s    /r   c                     	 |                                   | j                            | j        | j                  | _        d S r   )
unscheduler   afterr@   r$   rA   r   s    r   rM   zOnHoverTooltipBase.schedule{   s?    8+11$2B26,@ @r   c                 `    	 | j         }d | _         |r| j                            |           d S d S r   )rA   r   after_cancel)r
   after_ids     r   rR   zOnHoverTooltipBase.unschedule   sB    6> 	6++H55555	6 	6r   c                     	 	 |                                   n# t          $ r Y nw xY wt                                                       d S r   )rR   r   r?   r   rK   s    r   r   zOnHoverTooltipBase.hidetip   sX    	OO 	 	 	D	s    
&&r<   r   )r6   r7   r8   r   r   rC   rE   rM   rR   r   __classcell__rH   s   @r   r;   r;   R   s        IJ J J J J J$          @ @ @6 6 6        r   r;   c                   (     e Zd Z	 d fd	Zd Z xZS )Hovertipr<   c                 ^    	 t                                          ||           || _        d S )Nr@   )r?   r   text)r
   r   r_   r@   rH   s       r   r   zHovertip.__init__   s2    	 	K@@@			r   c                     t          | j        | j        t          dt          d          }|                                 d S )Nz#ffffe0r   )r_   justify
backgroundreliefborderwidth)Labelr	   r_   LEFTSOLIDpack)r
   labels     r   r   zHovertip.showcontents   s;    dn49d!*5aI I I

r   rX   )r6   r7   r8   r   r   rY   rZ   s   @r   r\   r\      sO        G           r   r\   c                 8   t          |           }|                    d           t          t          |                                                     d          dd                    \  }}|                    d||dz   fz             t          |d          }|                                 t          |d          }|                                 t          |d	d
           t          |d          }|                                 t          |dd            d S )NzTest tooltip+r   r&      zPlace your mouse over buttons)r_   z"Button 1 -- 1/2 second hover delayz!This is tooltip text for button1.i  r^   zButton 2 -- no hover delayz!This is tooltip
text for button2.)
r   titlemapintgeometrysplitre   rh   Buttonr\   )parenttopr+   r,   ri   button1button2s          r   _tooltiprw      s   
6

CIInsFOO%%++C00455DAqLLQCL()))#;<<<E	JJLLLSCDDDGLLNNNW9sKKKKS;<<<GLLNNNW:MMMMMMr   __main__)mainzidlelib.idle_test.test_tooltip   F)	verbosityexit)runN)
tkinterr   r;   r\   rw   r6   unittestry   idlelib.idle_test.htestr}   r9   r   r   <module>r      s      E E E E E E E EP< < < < < < < <~    !   *N N N zD	)QUCCCC++++++CMMMMM r   