
    z%i                         	 d dl mZmZmZmZ d dlmZ dZdZdZ	dZ
dZd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)    )LabelLEFTSOLIDTclError)TooltipBasez<<calltipwindow-hide>>)z<Key-Escape>z
<FocusOut>z<<calltipwindow-checkhide>>)z<KeyRelease>z<ButtonRelease>d   calltipwindowregion_rightc                   d     e Zd Z	  fdZd Z fdZ fdZd ZddZd Z	 fdZ
d	 Zd
 Z xZS )CalltipWindowc                     	 t         |   |       d x| _        | _        d x| _        x| _        | _        d x| _        | _        d | _	        y N)
super__init__labeltext	parenlineparencollastlinehideidcheckhideidcheckhide_after_id)selftext_widget	__class__s     E/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/calltip_w.pyr   zCalltipWindow.__init__   sQ    	
 	%!%%
TY9===)--d&"&    c                    	 t        | j                  j                  d      j                  d      d         }|| j                  k(  r| j                  | j
                  f}n|df}| j                  j                  d|z        }|s.t        | j                  j                  d            }d|d<   d|d<   |d   dz   |d   |d   z   fS )Ninsert.r   z%d.%d         )intanchor_widgetindexsplitr   r   bboxlist)r   curlineanchor_indexboxs       r   get_positionzCalltipWindow.get_position#   s    2d((..x8>>sCAFGdnn$ NNDMM:L#Q<L  %%g&<=t))..x89CCFCF1vz3q6CF?**r   c                     	 t        | j                  j                  d      j                  d      d         }|| j                  k(  ry || _        | j                  j                  d       t        |           y )Nr   r   r   )r#   r$   r%   r&   r   seer   position_window)r   r)   r   s     r   r/   zCalltipWindow.position_window2   sf    *d((..x8>>sCAFGdmm#x(!r   c                 N   	 || _         | j                  s| j                   sy | j                  j                  t        |       t        t        | j                  j                  |      j                  d            \  | _	        | _
        t        | 1          | j                          y )Nr   )r   	tipwindowr$   mark_set
MARK_RIGHTmapr#   r%   r&   r   r   r   showtip_bind_events)r   r   	parenleft
parenrightr   s       r   r5   zCalltipWindow.showtip;   s    	 	>>##J
;(+##)))4::3?)A% 	r   c                     	 t        | j                  | j                  t        ddt        d| j
                  d         | _        | j                  j                          y )Nz#ffffd0blackr!   font)r   justify
background
foregroundreliefborderwidthr;   )r   r1   r   r   r   r$   r   pack)r   s    r   showcontentszCalltipWindow.showcontentsP   sG    )4>>		4&/G"'Q $ 2 26 :<
 	

r   c                 4   	 | j                   sy t        t        | j                  j	                  d      j                  d            \  }}|| j                  k  s?|| j                  k(  r|| j                  k  s!| j                  j                  ddt              r| j                          y| j                          | j                  %| j                  j                  | j                         | j                  j                  t        | j                         | _        y )Nr   r   >break)r1   r4   r#   r$   r%   r&   r   r   comparer3   hidetipr/   r   after_cancelafterCHECKHIDE_TIMEcheckhide_event)r   eventr)   curcols       r   rK   zCalltipWindow.checkhide_eventX   s    B~~  c4#5#5#;#;H#E#K#KC#PQT^^#t~~%&DMM*A%%hZ@LLN 	"".++D,C,CD$$^T5I5IJ 	r   c                 @    	 | j                   sy | j                          y)NrE   )r1   rG   )r   rL   s     r   
hide_eventzCalltipWindow.hide_events   s    3~~r   c                 t   	 | j                   sy 	 | j                  j                          d | _        d x| _        x| _        | _        	 | j                  j                  t               	 | j                          t        | 5          y # t        $ r Y gw xY w# t        $ r Y :w xY w# t        t        f$ r Y >w xY wr   )r1   r   destroyr   r   r   r   r$   
mark_unsetr3   _unbind_events
ValueErrorr   rG   )r   r   s    r   rG   zCalltipWindow.hidetip{   s     ~~	JJ  
9===	))*5	!
 	!  		  		
 *% 		s5   B B (B% 	BB	B"!B"%B76B7c                    	 | j                   j                  t        | j                        | _        t
        D ]"  }| j                   j                  t        |       $ | j                   j                  t        | j                         | j                   j                  t        | j                        | _        t        D ]"  }| j                   j                  t        |       $ y r   )r$   bindCHECKHIDE_EVENTrK   r   CHECKHIDE_SEQUENCES	event_addrI   rJ   
HIDE_EVENTrO   r   HIDE_SEQUENCESr   seqs     r   r6   zCalltipWindow._bind_events   s    "--22?373G3GI& 	?C((#>	?  1E1EF((--j.2oo?! 	:C((S9	:r   c                 v   	 t         D ]"  }| j                  j                  t        |       $ | j                  j	                  t        | j
                         d | _        t        D ]"  }| j                  j                  t        |       $ | j                  j	                  t        | j                         d | _        y r   )	rX   r$   event_deleterW   unbindr   r[   rZ   r   r\   s     r   rS   zCalltipWindow._unbind_events   s    $& 	BC++OSA	B!!/43C3CD! 	=C++J<	=!!*dkk:r   r   )__name__
__module____qualname__r   r,   r/   r5   rB   rK   rO   rG   r6   rS   __classcell__)r   s   @r   r   r      s8    5'+"*62
:	r   r   c                 D   ddl m}m}m}m}  ||       }|j                  d       t        t        | j                         j                  d      dd        \  }}|j                  d|dz   |dz   fz          ||      }|j                  ||d	       |j                  d
d       |j                          t        |      fd}	fd}
|j                  dd       |j                  dd       |j                  d|	       |j                  d|
       |j!                          y )Nr   )ToplevelTextr   BOTHzTest call-tips+r!   z250x100+%d+%d      )sidefillexpandr   zstring.splitc                 ,    j                  ddd       y )Nz(s='Hello world')r   end)r5   rL   calltips    r   calltip_showz%_calltip_window.<locals>.calltip_show   s    +Xu=r   c                 &    j                          y r   )rG   rq   s    r   calltip_hidez%_calltip_window.<locals>.calltip_hide   s    r   z<<calltip-show>>(z<<calltip-hide>>))tkinterrf   rg   r   rh   titler4   r#   geometryr&   rA   r   updater   rY   rV   	focus_set)parentrf   rg   r   rh   topxyr   rs   ru   rr   s              @r   _calltip_windowr      s    22
6
CIIsFOO%++C045DAqLLAGQW#5569DII4d1I-KK.)JJLD!G>NN%s+NN%s+II ,/II ,/NNr   __main__)mainz idlelib.idle_test.test_calltip_wr    F)	verbosityexit)runN)rx   r   r   r   r   idlelib.tooltipr   rZ   r[   rW   rX   rJ   r3   r   r   ra   unittestr   idlelib.idle_test.htestr    r   r   <module>r      sr   
 1 0 '%
//9 (
VK Vr0 z	+quE+ r   