3 2auM @sddlZddlTddlmZddlmZmZddlmZdZ dZ e dfZ d Z d!Z dZdZdZdZdZGdddZedkrddlmZedddd dS)"N)*) Scrollbar)COMPLETE_FILESCOMPLETE_ATTRIBUTES)MC_SHIFTz<>z z z<>  z!<>z zz zc@seZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdd Zd!S)"AutoCompleteWindowcCs|||_d|_|_|_d|_|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ |_|_|_|_|_d|_dS)NF)widgetautocompletewindowlistbox scrollbarorigselforegroundorigselbackground completionsmorecompletionsmodestart startindexlasttypedstartuserwantswindowZhideid keypressid listupdateid winconfigid keyreleaseid doubleclickidlastkey_was_tab)selfrr&3/opt/alt/python36/lib64/python3.6/autocomplete_w.py__init__s $zAutoCompleteWindow.__init__cCstt|jt|}d}x&||kr>|j|||kr>|d7}qW|t|jkrv|jjd|j|fd|jt|jf|t|kr|jjd|j|f||d||_dS)Nrz%s+%dc)minlenrrdeleterinsert)r%newstartmin_lenir&r&r' _change_start=s  z AutoCompleteWindow._change_startcCsXd}t|j}x4||krB||d}|j||kr8|}q|d}qWt|t|jdS)Nrr))r+rr*)r%sr0jmr&r&r'_binary_searchJs    z!AutoCompleteWindow._binary_searchc Cs|j|}|j|dt||kr(|S|d}t|j}x@||krz||d}|j|dt||krp|}q<|d}q|j?|_@| j+tA|jB|_CdS)Nr-r)z +10000+10000z!::tk::unsupported::MacWindowStyleZstylehelpZ noActivates)ZorientFZwhite)ZyscrollcommandZexportselectionr;r:r9)Zcommand)sidefillT)rFrGexpand)Drrrrindexrgetrr8r1r6r+rrZToplevelr wm_geometryZwm_overrideredirectZtkZcallZ_wZTclErrorrZVERTICALrZListboxsetrr-r@r?rrconfigZyviewpackZRIGHTYZLEFTZBOTHZliftrArBZbindHIDE_VIRTUAL_EVENT_NAME hide_eventhideaidhidewidZ event_addHIDE_FOCUS_OUT_SEQUENCEHIDE_SEQUENCESKEYPRESS_VIRTUAL_EVENT_NAMEkeypress_eventrKEYPRESS_SEQUENCESKEYRELEASE_VIRTUAL_EVENT_NAMEkeyrelease_eventr"KEYRELEASE_SEQUENCELISTUPDATE_SEQUENCElistselect_eventr WINCONFIG_SEQUENCEwinconfig_eventr!DOUBLECLICK_SEQUENCEdoubleclick_eventr#)r%Z comp_listsrIcompleterZ userWantsWinZ completedrr0acwrrrDseqr&r&r' show_windowsl                 zAutoCompleteWindow.show_windowcCs|js dS|j}|j|j|j|j\}}}}|j}|j|j}} |j|j} } |jt |t d| |} |j |} | ||| ks|| kr| |7} n| | 8} |j d| | ft jjdr|jt|jd|_dS)Nrz+%d+%dZWindows) is_activerr>rZbboxrZ winfo_width winfo_heightZ winfo_rootxr*maxZ winfo_rootyrKplatformsystem startswithunbindr^r!)r%eventtextxyZcxcyrcZ acw_widthZ acw_height text_widthZ text_heightZnew_xZnew_yr&r&r'r_s$   z"AutoCompleteWindow.winconfig_eventc CsB|js dSy|jjs|jWntk r<|jYnXdS)N)rZ focus_get hide_windowKeyError)r%r&r&r'_hide_event_checks  z$AutoCompleteWindow._hide_event_checkcCs>|jr:|jtjkr&|jjd|jn|jtjkr:|jdS)Nr)) rftypeZ EventTypeZFocusOutrafterruZ ButtonPressrs)r%rmr&r&r'rQ s   zAutoCompleteWindow.hide_eventcCs4|jr0d|_t|jjd}|j|j|dS)NTr)rfrr<rr=r1r)r%rmrCr&r&r'r]sz#AutoCompleteWindow.listselect_eventcCs.t|jjd}|j|j||jdS)Nr)r<rr=r1rrs)r%rmrCr&r&r'rasz$AutoCompleteWindow.doubleclick_eventcs|js dS|jt|dr$|j}nd}dkr6d|_tdks\d(ks\|jtkofd)kof|t@ rHtdkr|j |j n|dkr|j |j d nbdkr|j |j d nHd kr|j |j d n.t|j dkr|j dS|j |j dd*|j |_ |j jdt|j jd|j j|j|j |jd Sdkrf|j|j d S|jtkr|d+ks|jtkrd,kr|t@ rt|j jd}|j|dt|j |j kr|jtks|j r|j |j||j dSd-kr| rd|_t|j jd}dkrsz4AutoCompleteWindow.keypress_event..ShiftControlAltMetaCommandOption )ryrz)r{r|)r{rrrrr)rrrr)rrrrrr)rr)rrrrrr)rfrhasattrrxr$r+rrrr1rrsrrZ select_clearr<r=rAr6rBrbrrrZnearestrgrhr*anychar)r%rmstaterCZnewselZjumpr&)rr'rW$s               z!AutoCompleteWindow.keypress_eventcCs@|js dS|jjd|jjd|jt|jfkr<|jdS)Nr-z%s+%dc)rfrrIrr+rrs)r%rmr&r&r'rZs  z#AutoCompleteWindow.keyrelease_eventcCs |jdk S)N)r)r%r&r&r'rfszAutoCompleteWindow.is_activecCs|j|j|jdS)N)r1r8r)r%r&r&r'rbszAutoCompleteWindow.completecCs(|js dS|jjttxtD]}|jjt|q W|jjt|j|jjt|j d|_d|_ xt D]}|jjt |qhW|jjt |j d|_ |jjt t|jjt |jd|_|jjt|jd|_|jr|jjt|jd|_|jj|jjd|_|jjd|_|jjd|_dS)N)rfrZ event_deleterPrTrUrrlrRrSrXrVrrYr[r"rr\r r!r^Z focus_setrZdestroy)r%rdr&r&r'rss<      zAutoCompleteWindow.hide_windowN)__name__ __module__ __qualname__r(r1r6r8rBrer_rurQr]rarWrZrfrbrsr&r&r&r'rs    $I  tr__main__)mainz%idlelib.idle_test.test_autocomplete_wr2F) verbosityexit) rrr r r r r rrr)riZtkinterZ tkinter.ttkrZidlelib.autocompleterrZidlelib.multicallrrPrTrUrVrXrYr[r\r^r`rrZunittestrr&r&r&r's.  7