a 9êdgöã@sŽddlmZmZmZmZddlmZdZdZdZ dZ dZ dZ Gd d „d eƒZ d d „Zed krŠddlmZeddddddlmZeeƒdS)é)ÚLabelÚLEFTÚSOLIDÚTclError)Ú TooltipBasez<>)z z z<>)z zédZcalltipwindowregion_rightcsreZdZ‡fdd„Zdd„Z‡fdd„Z‡fdd„Zd d „Zdd d „Zdd„Z ‡fdd„Z dd„Z dd„Z ‡Z S)Ú CalltipWindowcsDtt|ƒ |¡d|_|_d|_|_|_d|_|_ d|_ dS©N) ÚsuperrÚ__init__ÚlabelÚtextÚ parenlineÚparencolÚlastlineÚhideidÚ checkhideidÚcheckhide_after_id)ÚselfZ text_widget©Ú __class__©ú-/usr/local/lib/python3.9/idlelib/calltip_w.pyr s   zCalltipWindow.__init__cCsŠt|j d¡ d¡dƒ}||jkr2|j|jf}n|df}|j d|¡}|snt|j d¡ƒ}d|d<d|d<|dd|d|dfS)NÚinsertÚ.rz%d.%dééé)ÚintÚ anchor_widgetÚindexÚsplitrrZbboxÚlist)rÚcurlineZ anchor_indexZboxrrrÚ get_position#s zCalltipWindow.get_positioncsLt|j d¡ d¡dƒ}||jkr(dS||_|j d¡tt|ƒ ¡dS)Nrrr) rrr r!rZseer rÚposition_window)rr#rrrr%2s   zCalltipWindow.position_windowcs^||_|js|jsdS|j t|¡tt|j |¡ d¡ƒ\|_ |_ t t |ƒ  ¡| ¡dS)Nr)r Ú tipwindowrZmark_setÚ MARK_RIGHTÚmaprr r!rrr rÚshowtipÚ _bind_events)rr Z parenleftZ parenrightrrrr);s  ÿ zCalltipWindow.showtipc Cs2t|j|jtddtd|jdd|_|j ¡dS)Nz#ffffd0ZblackrÚfont)r ZjustifyZ backgroundZ foregroundZreliefZ borderwidthr+)rr&r rrrr Úpack©rrrrÚ showcontentsPs  ýzCalltipWindow.showcontentsNcCs–|js dStt|j d¡ d¡ƒ\}}||jksT||jkrD||jksT|j ddt ¡r`|  ¡dS|  ¡|j dur€|j  |j ¡|j t|j¡|_ dS)Nrrú>Úbreak)r&r(rrr r!rrZcomparer'Úhidetipr%rZ after_cancelÚafterÚCHECKHIDE_TIMEÚcheckhide_event)rÚeventr#Zcurcolrrrr4Xs$ ÿÿþ ÿzCalltipWindow.checkhide_eventcCs|js dS| ¡dS)Nr0)r&r1)rr5rrrÚ hide_eventsszCalltipWindow.hide_eventc sž|js dSz|j ¡Wnty*Yn0d|_d|_|_|_z|j t ¡WntyfYn0z |  ¡Wntt fyŠYn0t t |ƒ ¡dSr )r&r ZdestroyrrrrrZ mark_unsetr'Ú_unbind_eventsÚ ValueErrorr rr1r-rrrr1{s"   zCalltipWindow.hidetipcCsh|j t|j¡|_tD]}|j t|¡q|j t|j¡|j t |j ¡|_ t D]}|j t |¡qPdSr ) rÚbindÚCHECKHIDE_EVENTr4rÚCHECKHIDE_SEQUENCESÚ event_addr2r3Ú HIDE_EVENTr6rÚHIDE_SEQUENCES©rÚseqrrrr*”sÿÿzCalltipWindow._bind_eventscCs`tD]}|j t|¡q|j t|j¡d|_tD]}|j t|¡q2|j t|j¡d|_dSr ) r;rZ event_deleter:Zunbindrr>r=rr?rrrr7 szCalltipWindow._unbind_events)N)Ú__name__Ú __module__Ú __qualname__r r$r%r)r.r4r6r1r*r7Ú __classcell__rrrrrs     rc sìddlm}m}m}m}||ƒ}| d¡tt| ¡  d¡dd…ƒ\}}| d|d|df¡||ƒ}|j ||dd |  d d ¡|  ¡t |ƒ‰‡fd d „} ‡fdd„} | dd¡| dd¡| d| ¡| d| ¡| ¡dS)Nr)ÚToplevelÚTextrÚBOTHzTest call-tipsú+rz 250x100+%d+%dé¯é–)ZsideÚfillÚexpandrz string.splitcsˆ ddd¡dS)Nz(s='Hello world')rÚend)r)©r5©ZcalltiprrÚ calltip_show¹sz%_calltip_window..calltip_showcs ˆ ¡dSr )r1rNrOrrÚ calltip_hide»sz%_calltip_window..calltip_hidez<>ú(z<>ú))ÚtkinterrErFrrGÚtitler(rZgeometryr!r,rÚupdaterr<r9Z focus_set) ÚparentrErFrrGÚtopÚxÚyr rPrQrrOrÚ_calltip_window¬s"         r[Ú__main__)Úmainz idlelib.idle_test.test_calltip_wrF)Ú verbosityÚexit)ÚrunN)rTrrrrZidlelib.tooltiprr=r>r:r;r3r'rr[rAZunittestr]Zidlelib.idle_test.htestr`rrrrÚs