
    3\h                         	 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           dS dS )    )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 | _	        d S N)
super__init__labeltext	parenlineparencollastlinehideidcheckhideidcheckhide_after_id)selftext_widget	__class__s     ;/opt/python-3.11.14/usr/lib/python3.11/idlelib/calltip_w.pyr   zCalltipWindow.__init__   sb    	
 	%%%!%%
TY9===)--d&"&    c                    	 t          | j                            d                              d          d                   }|| j        k    r| j        | j        f}n|df}| j                            d|z            }|s1t          | 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8>>sCCAFGGdn$$ NDM:LL#Q<L %%g&<== 	t)..x8899CCFCF1vz3q6CF?**r   c                 &   	 t          | j                            d                              d          d                   }|| j        k    rd S || _        | j                            d           t                                                       d S )Nr   r   r   )r#   r$   r%   r&   r   seer   position_window)r   r)   r   s     r   r/   zCalltipWindow.position_window2   s    *d(..x88>>sCCAFGGdm##Fx(((!!!!!r   c                 z   	 || _         | j        s| j         sd S | j                            t          |           t          t          | j                            |                              d                    \  | _	        | _
        t                                                       |                                  d S )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    	 	> 	 	F##J
;;;(+#)))44::3??)A )A% 	r   c                     	 t          | j        | j        t          ddt          d| j        d                   | _        | j                                         d S )Nz#ffffd0blackr!   font)r   justify
background
foregroundreliefborderwidthr;   )r   r1   r   r   r   r$   r   pack)r   s    r   showcontentszCalltipWindow.showcontentsP   sT    )4>	4&/G"'Q $ 26 :< < <
 	
r   Nc                    	 | j         sd S t          t          | j                            d                              d                    \  }}|| j        k     s7|| j        k    r|| j        k    s!| j                            ddt                    r| 
                                 dS |                                  | j        | j                            | j                   | j                            t          | j                  | _        d S )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~ 	 4 c4#5#;#;H#E#E#K#KC#P#PQQT^##t~%%&DM*A*A%%hZ@@ +BLLNNN7 	".++D,CDDD$$^T5IJJ 	tr   c                 B    	 | j         sd S |                                  dS )NrE   )r1   rG   )r   rL   s     r   
hide_eventzCalltipWindow.hide_events   s&    3~ 	4wr   c                    	 | j         sd S 	 | j                                         n# t          $ r Y nw xY wd | _        d x| _        x| _        | _        	 | j                            t                     n# t          $ r Y nw xY w	 | 
                                 n# t          t          f$ r Y nw xY wt                                                       d S r   )r1   r   destroyr   r   r   r   r$   
mark_unsetr3   _unbind_events
ValueErrorr   rG   )r   r   s    r   rG   zCalltipWindow.hidetip{   s    ~ 	F	J     	 	 	D	
9===	))*5555 	 	 	D		!!!!*% 	 	 	D	 	s0   ' 
44A4 4
B BB B.-B.c                    	 | j                             t          | j                  | _        t
          D ]"}| j                             t          |           #| j                             t          | j                   | j                             t          | j
                  | _        t          D ]"}| j                             t          |           #d S 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?373GI I& 	? 	?C((#>>>>  1EFFF(--j.2o? ?! 	: 	:C((S9999	: 	:r   c                 `   	 t           D ]"}| j                            t          |           #| j                            t          | j                   d | _        t          D ]"}| j                            t          |           #| j                            t          | j                   d | _        d S r   )	rX   r$   event_deleterW   unbindr   r[   rZ   r   r\   s     r   rS   zCalltipWindow._unbind_events   s    $& 	B 	BC++OSAAAA!!/43CDDD! 	= 	=C++J<<<<!!*dk:::r   r   )__name__
__module____qualname__r   r,   r/   r5   rB   rK   rO   rG   r6   rS   __classcell__)r   s   @r   r   r      s        5' ' ' ' '+ + +" " " " "    *     6      2
: 
: 
:	 	 	 	 	 	 	r   r   c                    ddl m}m}m}m}  ||           }|                    d           t          t          |                                 	                    d          dd                    \  }}|                    d|dz   |dz   fz              ||          }|
                    ||d	           |                    d
d           |                                 t          |          fd}	fd}
|                    dd           |                    dd           |                    d|	           |                    d|
           |                                 d S )Nr   )ToplevelTextr   BOTHzTest call-tips+r!   z250x100+%d+%d      )sidefillexpandr   zstring.splitc                 6                         ddd           d S )Nz(s='Hello world')r   end)r5   rL   calltips    r   calltip_showz%_calltip_window.<locals>.calltip_show   s     +Xu=====r   c                 0                                      d S 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2222222222
(6

CIIsFOO%%++C00455DAqLLAGQW#55666499DII4d1I---KK.)))JJLLL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      s
  
 1 0 0 0 0 0 0 0 0 0 0 0 ' ' ' ' ' '%
//9 (
V V V V VK V V Vr  2 zD	+quEEEE++++++C r   