JFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3RbrJFIFxxC      C  " }!1AQa"q2#BR$3br %&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz w!1AQaq"2B #3Rbrў fEc @sdZddlTddlmZddlmZmZdZdZdZ dZ dZ dZ dZ dZdZGdddZdS(uH An auto-completion window for IDLE, used by the AutoComplete extension i(u*(uMC_SHIFT(uCOMPLETE_FILESuCOMPLETE_ATTRIBUTESu<>u u u<>uuu u uu u u u u u!<>u uu ucBs|EeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ ddZ ddZ ddZddZddZddZdS( uAutoCompleteWindowcCs||_d|_|_|_d|_|_d|_d|_d|_ d|_ d|_ d|_ d|_ d|_|_|_|_|_|_d|_dS(NF(uwidgetuNoneuautocompletewindowulistboxu scrollbaruorigselforegrounduorigselbackgroundu completionsumorecompletionsumodeustartu startindexulasttypedstartuuserwantswindowuhideidu keypressidu listupdateidu winconfigidu keyreleaseidu doubleclickiduFalseulastkey_was_tab(uselfuwidget((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyu__init__s        ,uAutoCompleteWindow.__init__cCstt|jt|}d}x1||krW|j|||krW|d7}q'W|t|jkr|jjd|j|fd|jt|jfn|t|kr|jjd|j|f||dn||_dS(Niiu%s+%dc(uminulenustartuwidgetudeleteu startindexuinsert(uselfunewstartumin_lenui((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyu _change_start8s& u AutoCompleteWindow._change_startcCsvd}t|j}xD||kr[||d}|j||krN|}q|d}qWt|t|jdS(uFind the first index in self.completions where completions[i] is greater or equal to s, or the last index if there is no such one.iii(ulenu completionsumin(uselfusuiujum((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyu_binary_searchEs u!AutoCompleteWindow._binary_searchc CsG|j|}|j|dt||kr6|S|d}t|j}xT||kr||d}|j|dt||kr|}qR|d}qRW|d}||kr|j|S|j|}|j|}tt|t|} t|}x.|| kr8||||kr8|d7}q W|d|S(uAssuming that s is the prefix of a string in self.completions, return the longest string which is a prefix of all the strings which s is a prefix of them. If s is not a prefix of a string, return s.Nii(u_binary_searchu completionsulenumin( uselfusufirstuiujumulastu first_compu last_compumin_len((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyu_complete_stringRs(# #       #u#AutoCompleteWindow._complete_stringcCst|jjd}|jj||j}|j|}|j||kr]|}nbtt|t|}d}x.||kr||||kr|d7}qW|d|}|j ||j|dt|j |j kr|jj d|j d|j n|jj d|jjdd|jjd|jr|j|_d|_|jjdtx$|jD]}|jjt|qW|jj|j|j |jndS(u|Should be called when the selection of the Listbox has changed. Updates the Listbox display and calls _change_start.iiNuselectbackgrounduselectforegroundubgufg(uintulistboxu curselectionuseeulasttypedstartu completionsu_binary_searchuminulenu _change_startustartu configureuorigselbackgrounduorigselforegrounducgetumorecompletionsuNoneudeleteuENDuinsertu select_setu_selection_changed(uselfucurselultsuselstartunewstartumin_lenuiuitem((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyu_selection_changedqs2   # )    u%AutoCompleteWindow._selection_changedcCsQ|\|_|_||_|jj||_|jj|jd|_|r|j|j}|j}|j ||j |}|j||kr|t |jdks|j|ddt ||kr||kSn||_ |j|_ t|j|_} | jd| jdy#| jjdd| jddWntk rdYnXt| d t|_} t| d | jd dd d |_} x!|jD]} | jt| qW| jd|_ | jd|_!| j"d| j#| j$dt%dt&| j$dt'dt(dd|jj*|j |j|j+|jj,t-|j.|_/x!t0D]} |jj1t-| q{W|jj,t2|j3|_4x!t5D]} |jj1t2| qW|jj,t6|j7|_8|jj1t6t9| j,t:|j;|_<| j,t=|j>|_?| j,t@|jA|_BdS(uShow the autocomplete list, bind events. If complete is True, complete the text, and if there is exactly one matching completion, don't open a list.uinsertiNu +10000+10000u!::tk::unsupported::MacWindowStyleustyleuhelpu noActivatesuorientuyscrollcommanduexportselectionubguwhiteuselectforegrounduselectbackgrounducommandusideufilluexpandFT(Cu completionsumorecompletionsumodeuwidgetuindexu startindexugetustartu_complete_stringu _change_startu_binary_searchulenuuserwantswindowulasttypedstartuTopleveluautocompletewindowu wm_geometryuwm_overrideredirectutkucallu_wuTclErroru ScrollbaruVERTICALu scrollbaruListboxusetuFalseulistboxuinsertuENDucgetuorigselforegrounduorigselbackgrounduconfiguyviewupackuRIGHTuYuLEFTuBOTHuTrueu select_setu_selection_changedubinduHIDE_VIRTUAL_EVENT_NAMEu hide_eventuhideiduHIDE_SEQUENCESu event_adduKEYPRESS_VIRTUAL_EVENT_NAMEukeypress_eventu keypressiduKEYPRESS_SEQUENCESuKEYRELEASE_VIRTUAL_EVENT_NAMEukeyrelease_eventu keyreleaseiduKEYRELEASE_SEQUENCEuLISTUPDATE_SEQUENCEulistselect_eventu listupdateiduWINCONFIG_SEQUENCEuwinconfig_eventu winconfigiduDOUBLECLICK_SEQUENCEudoubleclick_eventu doubleclickid(uselfu comp_listsuindexucompleteumodeu userWantsWinu completedustartuiuacwu scrollbarulistboxuitemuseq((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyu show_windowsf   '              uAutoCompleteWindow.show_windowcCs |jsdS|j}|j|j|j|j\}}}}|j}|j|j}} |j|j} } |jt |t d| |} |j |} | ||| ks|| kr| |7} n | | 8} |j d| | fdS(Niu+%d+%d( u is_activeuwidgetuseeu startindexubboxuautocompletewindowu winfo_widthu winfo_heightu winfo_rootxuminumaxu winfo_rootyu wm_geometry(uselfueventutextuxuyucxucyuacwu acw_widthu acw_heightu text_widthu text_heightunew_xunew_y((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyuwinconfig_events   &   u"AutoCompleteWindow.winconfig_eventcCs|jsdS|jdS(N(u is_activeu hide_window(uselfuevent((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyu hide_events uAutoCompleteWindow.hide_eventcCsJ|jsdSd|_t|jjd}|j|j|dS(NiT(u is_activeuTrueuuserwantswindowuintulistboxu curselectionu _change_startu completions(uselfueventucursel((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyulistselect_events   u#AutoCompleteWindow.listselect_eventcCs;t|jjd}|j|j||jdS(Ni(uintulistboxu curselectionu _change_startu completionsu hide_window(uselfueventucursel((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyudoubleclick_eventsu$AutoCompleteWindow.doubleclick_eventcs9|jsdS|jt|dr4|j}nd}dkrRd&|_ntdksd'ks|jtkrd(kr|t @ rtdkr|j |j ndkr|j |j d ndkr|j |j d n`dkr)|j |j d n=t|j dkrL|j dS|j |j dd)|j |_ |jjdt|jjd|jj|j|j |jd Sd kr|j dS|jtkrd*ks|jtkrd+kr|t @ rt|jjd}|j|dt|j |j kr|jtksx|j r|j |j|n|j dSd,kr | r d-|_t|jjd}dkrd}ndkr t|jd}nd.kr|jj|jj|jjd}dkrbtd||}qtt|jd||}nBdkrtd|d}n tt|jd|d}|jj||jj||j|j |j|d Sdkry| ry|jr`t|jjd}|j |j||j d Sd-|_d-|_dSntfddd/DrdS|jr'|jd%kr'|j |j |j|j |_ |jjdt|jjd|jj|j|j |jd S|j dSdS(0Numc_stateiuTabiu underscoreu BackSpaceuperioduminusu_u.u-ubreakuReturnuspaceu parenleftu parenrightu bracketleftu bracketrightuslashu backslashuquotedblu apostropheuHomeuEnduPrioruNextuUpuDownc3s|]}|kVqdS(N((u.0us(ukeysym(u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyu asu4AutoCompleteWindow.keypress_event..uShiftuControluAltuMetauCommanduOptionu F(u underscoreu BackSpace(uperioduminusi(uperioduspaceu parenleftu parenrightu bracketleftu bracketright(uslashu backslashuquotedblu apostrophe(uHomeuEnduPrioruNextuUpuDownT(uPrioruNext(uShiftuControluAltuMetauCommanduOption(u is_activeukeysymuhasattrumc_stateuFalseulastkey_was_tabulenumodeuCOMPLETE_FILESuMC_SHIFTu _change_startustartu hide_windowulasttypedstartulistboxu select_clearuintu curselectionu select_setu_binary_searchu_selection_changeduCOMPLETE_ATTRIBUTESu completionsuTrueuuserwantswindowunearestu winfo_heightumaxuminuanyuchar(uselfueventustateucurselunewselujump((ukeysymu?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyukeypress_events            &      )        #         &  u!AutoCompleteWindow.keypress_eventcCs[|jsdS|jjd|jjd|jt|jfkrW|jndS(Nuinsertu%s+%dc(u is_activeuwidgetuindexu startindexulenustartu hide_window(uselfuevent((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyukeyrelease_eventts  +u#AutoCompleteWindow.keyrelease_eventcCs |jdk S(N(uautocompletewindowuNone(uself((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyu is_active|suAutoCompleteWindow.is_activecCs|j|j|jdS(N(u _change_startu_complete_stringustart(uself((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyucompletesuAutoCompleteWindow.completecCsL|jsdSx!tD]}|jjt|qW|jjt|jd|_x!tD]}|jjt |qZW|jjt |j d|_ |jjt t |jjt |j d|_ |jjt|jd|_|jjt|jd|_|jjd|_|jjd|_|jjd|_dS(N(u is_activeuHIDE_SEQUENCESuwidgetu event_deleteuHIDE_VIRTUAL_EVENT_NAMEuunbinduhideiduNoneuKEYPRESS_SEQUENCESuKEYPRESS_VIRTUAL_EVENT_NAMEu keypressiduKEYRELEASE_VIRTUAL_EVENT_NAMEuKEYRELEASE_SEQUENCEu keyreleaseidulistboxuLISTUPDATE_SEQUENCEu listupdateiduautocompletewindowuWINCONFIG_SEQUENCEu winconfigidu scrollbarudestroy(uselfuseq((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyu hide_windows0              uAutoCompleteWindow.hide_windowN(u__name__u __module__u __qualname__u__init__u _change_startu_binary_searchu_complete_stringu_selection_changedu show_windowuwinconfig_eventu hide_eventulistselect_eventudoubleclick_eventukeypress_eventukeyrelease_eventu is_activeucompleteu hide_window(u __locals__((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyuAutoCompleteWindows  $ E     s   uAutoCompleteWindowN(u u ( uuu u uu u u u u (u__doc__utkinteruidlelib.MultiCalluMC_SHIFTuidlelib.AutoCompleteuCOMPLETE_FILESuCOMPLETE_ATTRIBUTESuHIDE_VIRTUAL_EVENT_NAMEuHIDE_SEQUENCESuKEYPRESS_VIRTUAL_EVENT_NAMEuKEYPRESS_SEQUENCESuKEYRELEASE_VIRTUAL_EVENT_NAMEuKEYRELEASE_SEQUENCEuLISTUPDATE_SEQUENCEuWINCONFIG_SEQUENCEuDOUBLECLICK_SEQUENCEuAutoCompleteWindow(((u?/opt/alt/python33/lib64/python3.3/idlelib/AutoCompleteWindow.pyus