B X–ûЬ$ã@s˜ddlZddlTddlmZddlmZmZddlmZdZ dZ e dfZ d Z d Z d Zd Zd ZdZdZGdd„dƒZedkr”ddlmZedddddS)éN)Ú*)Ú Scrollbar)ÚFILESÚATTRS)ÚMC_SHIFTz<>z z z<>) zzz z zz z z z z z z!<>z zz zc@sŒeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zdd„Zdd „Zd!S)"ÚAutoCompleteWindowcCs‚||_d|_|_|_d|_|_d|_d|_d|_d|_ d|_ d|_ d|_ d|_ |_|_|_|_|_d|_d|_dS)NF)ÚwidgetÚautocompletewindowÚlistboxÚ scrollbarÚorigselforegroundÚorigselbackgroundÚ completionsÚmorecompletionsÚmodeÚstartÚ startindexÚlasttypedstartÚuserwantswindowZhideidÚ keypressidÚ listupdateidÚ winconfigidÚ keyreleaseidÚ doubleclickidÚlastkey_was_tabÚis_configuring)Úselfr©rú9/opt/alt/python37/lib/python3.7/idlelib/autocomplete_w.pyÚ__init__s $zAutoCompleteWindow.__init__cCs¬tt|jƒt|ƒƒ}d}x&||kr>|j|||kr>|d7}qW|t|jƒkrv|j d|j|fd|jt|jƒf¡|t|ƒkr¢|j d|j|f||d…¡||_dS)Nréz%s+%dc)ÚminÚlenrrÚdeleterÚinsert)rÚnewstartÚmin_lenÚirrrÚ _change_start>s  z AutoCompleteWindow._change_startcCsXd}t|jƒ}x4||krB||d}|j||kr8|}q|d}qWt|t|jƒdƒS)Nrér )r"rr!)rÚsr'ÚjÚmrrrÚ_binary_searchKs    z!AutoCompleteWindow._binary_searchc Csö| |¡}|j|dt|ƒ…|kr(|S|d}t|jƒ}x@||krz||d}|j|dt|ƒ…|krp|}q<|d}q|  +t?|j@¡|_A|  +tB|jC¡|_DdS)Nr$r z +10000+10000z!::tk::unsupported::MacWindowStyleZstyleÚhelpZ noActivates)ZorientF)ZyscrollcommandZexportselectionr1r0)Zcommand)ÚsideÚfillT)r=r>Úexpand)ErrrrÚindexrÚgetrr/r(r-r"rrZToplevelr Ú wm_geometryZwm_overrideredirectZtkZcallZ_wZTclErrorrZVERTICALr ZListboxÚsetr r$r7r6r r ZconfigZyviewÚpackZRIGHTÚYZLEFTZBOTHZliftr8r9ZbindÚHIDE_VIRTUAL_EVENT_NAMEÚ hide_eventÚhideaidÚhidewidZ event_addÚHIDE_FOCUS_OUT_SEQUENCEÚHIDE_SEQUENCESÚKEYPRESS_VIRTUAL_EVENT_NAMEÚkeypress_eventrÚKEYPRESS_SEQUENCESÚKEYRELEASE_VIRTUAL_EVENT_NAMEÚkeyrelease_eventrÚKEYRELEASE_SEQUENCEÚLISTUPDATE_SEQUENCEÚlistselect_eventrrÚWINCONFIG_SEQUENCEÚwinconfig_eventrÚDOUBLECLICK_SEQUENCEÚdoubleclick_eventr)rZ comp_listsr@ÚcompleterZ userWantsWinZ completedrr'Úacwr r r;ÚseqrrrÚ show_windowžsn                 zAutoCompleteWindow.show_windowcCs|jr dSd|_| ¡sdS|j}| |j¡| |j¡\}}}}|j}| ¡| ¡|  ¡}} | ¡|  ¡} } |  ¡t |t d| |ƒƒ} |  ¡|} | ||| ks´|| kr¾| |7} n| | 8} | d| | f¡| ¡t ¡ d¡r| t|j¡d|_d|_dS)NTrz+%d+%dZWindowsF)rÚ is_activerr5rZbboxr ÚupdateZ winfo_widthÚ winfo_heightZ winfo_rootxr!ÚmaxZ winfo_rootyrBZupdate_idletasksÚplatformÚsystemÚ startswithÚunbindrTr)rÚeventÚtextÚxÚyZcxÚcyrYZ acw_widthZ acw_heightÚ text_widthZ text_heightZnew_xZnew_yrrrrUês0   z"AutoCompleteWindow.winconfig_eventcCsB|js dSy|j ¡s| ¡Wntk r<| ¡YnXdS)N)r Z focus_getÚ hide_windowÚKeyError)rrrrÚ_hide_event_checks  z$AutoCompleteWindow._hide_event_checkcCs>| ¡r:|jtjkr&|j d|j¡n|jtjkr:| ¡dS)Nr ) r\ÚtypeZ EventTypeZFocusOutrZafterrlZ ButtonPressrj)rrdrrrrGs   zAutoCompleteWindow.hide_eventcCs4| ¡r0d|_t|j ¡dƒ}| |j|¡dS)NTr)r\rr3r r4r(r)rrdr:rrrrS(sz#AutoCompleteWindow.listselect_eventcCs.t|j ¡dƒ}| |j|¡| ¡dS)Nr)r3r r4r(rrj)rrdr:rrrrW.sz$AutoCompleteWindow.doubleclick_eventcs| ¡s dS|j‰t|dƒr$|j}nd}ˆdkr6d|_tˆƒdks`ˆdks`|jtkrJˆdkrJ|t@sJtˆƒdkrŠ|  |j ˆ¡n|ˆdkr¤|  |j d ¡nbˆd kr¾|  |j d ¡nHˆd krØ|  |j d ¡n.t|j ƒdkrò|  ¡dS|  |j dd…¡|j |_ |j  dt|j  ¡dƒ¡|j  | |j ¡¡| ¡dSˆdkrh| ¡|  ¡dS|jtkr~ˆdks |jtkrˆdkr|t@st|j  ¡dƒ}|j|dt|j ƒ…|j krö|jtksæ|j rö|  |j|¡|  ¡dSˆdkr|sd|_t|j  ¡dƒ}ˆdkr:d}n¨ˆdkrTt|jƒd}nŽˆdkr°|j  |j  ¡¡|j  d¡}ˆdkr–td||ƒ}ntt|jƒd||ƒ}n2ˆdkrÊtd|dƒ}ntt|jƒd|dƒ}|j  |¡|j  |¡| ¡|  |j|¡dSˆdkrn|sn|jr\t|j  ¡dƒ}|  |j|¡|  ¡dSd|_d|_dSn’t‡fdd„dDƒƒrŠdS|jrô|jdkrô|  |j |j¡|j |_ |j  dt|j  ¡dƒ¡|j  | |j ¡¡| ¡dS|  ¡dSdS)NÚmc_staterZTabFr )Ú underscoreZ BackSpace)ÚperiodÚminusroÚ_rpÚ.rqú-éÿÿÿÿÚbreakZReturn)rpZspaceZ parenleftZ parenrightZ bracketleftZ bracketright)ZslashZ backslashZquotedblZ apostrophe)ÚHomeÚEndÚPriorÚNextÚUpZDownTrwrx)ryrzryr{c3s|]}|ˆkVqdS)Nr)Ú.0r*)Úkeysymrrú •sz4AutoCompleteWindow.keypress_event..)ZShiftZControlZAltZMetaZCommandZOptionú )r\r}Úhasattrrnrr"rrrr(rrjrr Z select_clearr3r4r8r-r9rXrrrZnearestr^r_r!ÚanyÚchar)rrdÚstater:ZnewselZjumpr)r}rrM4s¬              z!AutoCompleteWindow.keypress_eventcCs@| ¡s dS|j d¡|j d|jt|jƒf¡kr<| ¡dS)Nr$z%s+%dc)r\rr@rr"rrj)rrdrrrrP¨s  z#AutoCompleteWindow.keyrelease_eventcCs |jdk S)N)r )rrrrr\°szAutoCompleteWindow.is_activecCs| | |j¡¡dS)N)r(r/r)rrrrrX³szAutoCompleteWindow.completecCs(| ¡s dS|j tt¡xtD]}|j t|¡q W|j t|j¡|j t|j ¡d|_d|_ xt D]}|j t |¡qhW|j t |j ¡d|_ |j t t¡|j t |j¡d|_|j t|j¡d|_|jrê|j t|j¡d|_|j ¡|j ¡d|_|j ¡d|_|j ¡d|_dS)N)r\r Z event_deleterFrJrKrrcrHrIrNrLrrOrQrr rRrrrTZ focus_setr Zdestroy)rrZrrrrj·s<      zAutoCompleteWindow.hide_windowN)Ú__name__Ú __module__Ú __qualname__rr(r-r/r9r[rUrlrGrSrWrMrPr\rXrjrrrrrs !   &L%  trÚ__main__)Úmainz%idlelib.idle_test.test_autocomplete_wr)F)Ú verbosityÚexit)r`ZtkinterZ tkinter.ttkrZidlelib.autocompleterrZidlelib.multicallrrFrJrKrLrNrOrQrRrTrVrr„ZunittestrˆrrrrÚs*  G