
    z%iG                         	 d dl   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       yy)    )*c                   8    e Zd Z	 d Zd Zd Zd Zd Zd Zd Z	y)	TooltipBasec                 "    	 || _         d | _        y N)anchor_widget	tipwindow)selfr   s     C/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/tooltip.py__init__zTooltipBase.__init__   s    	 +    c                 $    | j                          y r   hidetipr
   s    r   __del__zTooltipBase.__del__   s    r   c                    	 | j                   ry t        | j                        x| _         }|j                  d       	 |j                  j                  dd|j                  dd       | j                          | j                          | j                   j                          | j                   j                          y # t        $ r Y `w xY w)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    !>>&t'9'9::
q!	 EEJJ:GRUU}.
 	'')  		s   )B; ;	CCc                     	 | j                         \  }}| j                  j                         |z   }| j                  j                         |z   }| j                  j                  d||fz         y )N+%d+%d)get_positionr   winfo_rootxwinfo_rootyr	   wm_geometry)r
   xyroot_xroot_ys        r   r   zTooltipBase.position_window/   se    4  "1##//1A5##//1A5""8vv.>#>?r   c                 B    	 d| j                   j                         dz   fS )N   r   )r   winfo_heightr   s    r   r'   zTooltipBase.get_position6   s&    6 4%%224q888r   c                     	 t         r   )NotImplementedErrorr   s    r   r   zTooltipBase.showcontentsA   s    2!!r   c                 r    	 | j                   }d | _         |r	 |j                          y y # t        $ r Y y w xY wr   )r	   destroyr   r"   s     r   r   zTooltipBase.hidetipF   s?    ^^

   s   * 	66N)
__name__
__module____qualname__r   r   r$   r   r'   r   r    r   r   r   r   
   s)    **@	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 )
OnHoverTooltipBasec                 D   	 t         |   |       || _        d | _        | j                  j                  d| j                        | _        | j                  j                  d| j                        | _	        | j                  j                  d| j                        | _
        y 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    	 	'&&&++It7G7GH	&&++It7G7GH	&&++J8H8HI	r   c                 &   	 | j                   j                  d| j                         | j                   j                  d| j                         | j                   j                  d| j                         t        |           y # t
        $ r Y w xY wr=   )r   unbindrC   rE   rF   r   r>   r   r
   rG   s    r   r   zOnHoverTooltipBase.__del__g   sv    	%%i;%%i;%%j$))< 	  		s   A2B 	BBc                 `    	 | j                   r| j                          y | j                          y r   )r?   scheduler$   r
   events     r   rB   zOnHoverTooltipBase._show_eventp   s     2MMOLLNr   c                 &    	 | j                          y r   r   rM   s     r   rD   zOnHoverTooltipBase._hide_eventw   s    /r   c                     	 | j                          | j                  j                  | j                  | j                        | _        y r   )
unscheduler   afterr?   r$   r@   r   s    r   rL   zOnHoverTooltipBase.schedule{   s7    8++11$2B2B26,,@r   c                 h    	 | j                   }d | _         |r| j                  j                  |       y y r   )r@   r   after_cancel)r
   after_ids     r   rQ   zOnHoverTooltipBase.unschedule   s1    6>>++H5 r   c                 d    	 	 | j                          t        |           y # t        $ r Y w xY wr   )rQ   r   r>   r   rJ   s    r   r   zOnHoverTooltipBase.hidetip   s5    	OO 	  		s   # 	//i  r   )r6   r7   r8   r   r   rB   rD   rL   rQ   r   __classcell__rG   s   @r   r;   r;   R   s0    IJ$@6 r   r;   c                   (     e Zd Z	 d fd	Zd Z xZS )Hovertipc                 8    	 t         |   ||       || _        y )Nr?   )r>   r   text)r
   r   r^   r?   rG   s       r   r   zHovertip.__init__   s#    	 	K@	r   c                 ~    t        | j                  | j                  t        dt        d      }|j                          y )Nz#ffffe0r   )r^   justify
backgroundreliefborderwidth)Labelr	   r^   LEFTSOLIDpack)r
   labels     r   r   zHovertip.showcontents   s+    dnn499d!*5aI

r   rW   )r6   r7   r8   r   r   rX   rY   s   @r   r[   r[      s    Gr   r[   c                    t        |       }|j                  d       t        t        | j	                         j                  d      dd        \  }}|j	                  d||dz   fz         t        |d      }|j                          t        |d      }|j                          t        |d	d
       t        |d      }|j                          t        |dd        y )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splitrd   rg   Buttonr[   )parenttopr+   r,   rh   button1button2s          r   _tooltiprv      s    
6
CIInsFOO%++C045DAqLLQCL()#;<E	JJLSCDGLLNW9sKS;<GLLNW:Mr   __main__)mainzidlelib.idle_test.test_tooltip   F)	verbosityexit)runN)
tkinterr   r;   r[   rv   r6   unittestrx   idlelib.idle_test.htestr|   r9   r   r   <module>r      se    E EP< <~! *N z	)QUC+M r   