³ò
œ›\Kc           @   sy   d  Z  d d k Td d k l Z d d k Z d Z d Z d Z d Z d Z	 d Z
 d Z d Z d Z d d d „  ƒ  YZ d S(   sH   
An auto-completion window for IDLE, used by the AutoComplete extension
iÿÿÿÿ(   t   *(   t   MC_SHIFTNs   <<autocompletewindow-hide>>s
   <FocusOut>s   <ButtonPress>s   <<autocompletewindow-keypress>>s   <Key>s   <Key-BackSpace>s   <Key-Return>s	   <Key-Tab>s   <Key-Up>s
   <Key-Down>s
   <Key-Home>s	   <Key-End>s   <Key-Prior>s
   <Key-Next>s!   <<autocompletewindow-keyrelease>>s   <KeyRelease>s   <B1-ButtonRelease>s   <Configure>s   <B1-Double-ButtonRelease>t   AutoCompleteWindowc           B   s   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s¨   | |  _  d  |  _ |  _ |  _ d  |  _ |  _ d  |  _ d  |  _ d  |  _	 d  |  _
 d  |  _ d  |  _ d  |  _ d  |  _ |  _ |  _ |  _ |  _ |  _ t |  _ d  S(   N(   t   widgett   Nonet   autocompletewindowt   listboxt	   scrollbart   origselforegroundt   origselbackgroundt   completionst   morecompletionst   modet   startt
   startindext   lasttypedstartt   userwantswindowt   hideidt
   keypressidt   listupdateidt   winconfigidt   keyreleaseidt   doubleclickidt   Falset   lastkey_was_tab(   t   selfR   (    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyt   __init__   s    								,c         C   sñ   d } xP | t  |  i ƒ j  o9 | t  | ƒ j  o& |  i | | | j o | d 7} q	 W| t  |  i ƒ j  o: |  i i d |  i | f d |  i t  |  i ƒ f ƒ n | t  | ƒ j  o( |  i i d |  i | f | | ƒ n | |  _ d  S(   Ni    i   s   %s+%dc(   t   lenR   R   t   deleteR   t   insert(   R   t   newstartt   i(    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyt   _change_start8   s     )!c         C   sz   d } t  |  i ƒ } xH | | j o: | | d } |  i | | j o
 | } q | d } q Wt | t  |  i ƒ d ƒ S(   s’   Find 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.i    i   i   (   R   R
   t   min(   R   t   sR   t   jt   m(    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyt   _binary_searchE   s      
c         C   s1  |  i  | ƒ } |  i | t | ƒ  | j o | Sn | d } t |  i ƒ } xR | | j oD | | d } |  i | t | ƒ  | j o
 | } qQ | d } qQ W| d } t | ƒ } xf t |  i | ƒ | j oK t |  i | ƒ | j o1 |  i | | |  i | | j o | d 7} q¼ W|  i | |  S(   sÖ   Assuming 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.i   i   (   R%   R
   R   (   R   R"   t   firstR   R#   R$   t   last(    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyt   _complete_stringR   s&    
 

 #c         C   sÈ  t  |  i i ƒ  d ƒ } |  i i | ƒ |  i } |  i | } |  i | ƒ | j o
 | } n^ d } xJ | t | ƒ j  o6 | t | ƒ j  o# | | | | j o | d 7} qh W| |  } |  i | ƒ |  i | t |  i	 ƒ  |  i	 j o# |  i i
 d |  i d |  i ƒ nµ |  i i
 d |  i i d ƒ d |  i i d ƒ ƒ |  i oy |  i |  _ d |  _ |  i i d t ƒ x$ |  i D] } |  i i t | ƒ q}W|  i i |  i |  i	 ƒ ƒ |  i ƒ  n d S(   s|   Should be called when the selection of the Listbox has changed.
        Updates the Listbox display and calls _change_start.i    i   t   selectbackgroundt   selectforegroundt   bgt   fgN(   t   intR   t   curselectiont   seeR   R
   R%   R   R    R   t	   configureR	   R   t   cgetR   R   R   t   ENDR   t
   select_sett   _selection_changed(   R   t   curselt   ltst   selstartR   R   t   item(    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyR4   m   s4    	
 ;
$
	
 c         C   sF  | \ |  _  |  _ | |  _ |  i i | ƒ |  _ |  i i |  i d ƒ |  _ | oŠ |  i |  i ƒ } |  i	 | ƒ |  i
 | ƒ } |  i  | | j oD | t |  i  ƒ d j p" |  i  | d t | ƒ  | j o d SqÜ n | |  _ |  i |  _ t |  i ƒ |  _ } | i d ƒ | i d ƒ y# | i i d d | i d d ƒ Wn t j
 o n Xt | d	 t ƒ|  _ }	 t | d
 |	 i d t d d ƒ|  _ }
 x! |  i  D] } |
 i t | ƒ q¥W|
 i d ƒ |  _  |
 i d ƒ |  _! |	 i" d |
 i# ƒ |	 i$ d t% d t& ƒ |
 i$ d t' d t( d t) ƒ |  i i* |  i
 |  i ƒ ƒ |  i+ ƒ  |  i i, t- |  i. ƒ |  _/ x! t0 D] } |  i i1 t- | ƒ qpW|  i i, t2 |  i3 ƒ |  _4 x! t5 D] } |  i i1 t2 | ƒ q¯W|  i i, t6 |  i7 ƒ |  _8 |  i i1 t6 t9 ƒ |
 i, t: |  i; ƒ |  _< | i, t= |  i> ƒ |  _? |
 i, t@ |  iA ƒ |  _B d S(   s¤   Show 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.R   i   Ns   +10000+10000s!   ::tk::unsupported::MacWindowStylet   stylet   helpt   noActivatest   orientt   yscrollcommandt   exportselectionR+   t   whiteR*   R)   t   commandt   sidet   fillt   expand(C   R
   R   R   R   t   indexR   t   getR   R(   R    R%   R   R   R   t   ToplevelR   t   wm_geometryt   wm_overrideredirectt   tkt   callt   _wt   TclErrort	   Scrollbart   VERTICALR   t   Listboxt   setR   R   R   R2   R1   R   R	   t   configt   yviewt   packt   RIGHTt   Yt   LEFTt   BOTHt   TrueR3   R4   t   bindt   HIDE_VIRTUAL_EVENT_NAMEt
   hide_eventR   t   HIDE_SEQUENCESt	   event_addt   KEYPRESS_VIRTUAL_EVENT_NAMEt   keypress_eventR   t   KEYPRESS_SEQUENCESt   KEYRELEASE_VIRTUAL_EVENT_NAMEt   keyrelease_eventR   t   KEYRELEASE_SEQUENCEt   LISTUPDATE_SEQUENCEt   listselect_eventR   t   WINCONFIG_SEQUENCEt   winconfig_eventR   t   DOUBLECLICK_SEQUENCEt   doubleclick_eventR   (   R   t
   comp_listsRD   t   completeR   t   userWantsWint	   completedR   t   acwR   R   R8   t   seq(    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyt   show_window   sj    	"	
 
  		c         C   s‘   |  i  ƒ  p d  Sn |  i } |  i i |  i ƒ |  i i |  i ƒ \ } } } } | i d | |  i i ƒ  | |  i i ƒ  | i	 ƒ  f ƒ d  S(   Ns   +%d+%d(
   t	   is_activeR   R   R/   R   t   bboxRG   t   winfo_rootxt   winfo_rootyt   winfo_height(   R   t   eventRn   t   xt   yt   cxt   cy(    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyRg   Ô   s    	!c         C   s#   |  i  ƒ  p d  Sn |  i ƒ  d  S(   N(   Rq   t   hide_window(   R   Rv   (    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyR[   à   s    c         C   sO   |  i  ƒ  p d  Sn t |  _ t |  i i ƒ  d ƒ } |  i |  i | ƒ d  S(   Ni    (   Rq   RX   R   R-   R   R.   R    R
   (   R   Rv   R5   (    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyRe   å   s
    	c         C   s;   t  |  i i ƒ  d ƒ } |  i |  i | ƒ |  i ƒ  d  S(   Ni    (   R-   R   R.   R    R
   R{   (   R   Rv   R5   (    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyRi   ì   s    c   	   	   C   sA  |  i  ƒ  p d  Sn | i } t | d ƒ o | i } n d } | d j o t |  _ n t | ƒ d j p- | d% j p  |  i t i	 j o | d& j oC| t
 @o6t | ƒ d j o |  i |  i | ƒ n¬ | d j o |  i |  i d	 ƒ n‡ | d j o |  i |  i d
 ƒ nb | d j o |  i |  i d ƒ n= t |  i ƒ d j o |  i ƒ  d  Sn |  i |  i d  ƒ |  i |  _ |  i i d t |  i i ƒ  d ƒ ƒ |  i i |  i |  i ƒ ƒ |  i ƒ  d Sn`| d j o |  i ƒ  d  SnA|  i t i j o | d' j p- |  i t i	 j o | d( j o‘ | t
 @o„ t |  i i ƒ  d ƒ } |  i | t |  i ƒ  |  i j o5 |  i t i j p
 |  i o |  i |  i | ƒ n |  i ƒ  d  Snp| d) j o—| ot |  _ t |  i i ƒ  d ƒ } | d j o
 d } n| d j o t |  i ƒ d } ní | d* j o‡ |  i i |  i i ƒ  ƒ |  i i d ƒ } | d j o t d | | ƒ } q,| d j p t ‚ t t |  i ƒ d | | ƒ } nY | d j o t d | d ƒ } n5 | d j p t ‚ t t |  i ƒ d | d ƒ } |  i i | ƒ |  i i | ƒ |  i ƒ  |  i |  i | ƒ d SnÌ | d j ok | oc |  i o? t |  i i ƒ  d ƒ } |  i |  i | ƒ |  i ƒ  d Sq=t |  _ t |  _ d  SnT t d „  g  } d+ D] } | | i  | ƒ d j qþ~ ƒ o d  Sn |  i ƒ  d  Sd  S(,   Nt   mc_statei    t   Tabi   t
   underscoret	   BackSpacet   periodt   minust   _t   .t   -iÿÿÿÿt   breakt   Returnt   spacet	   parenleftt
   parenrightt   bracketleftt   bracketrightt   slasht	   backslasht   quotedblt
   apostrophet   Homet   Endt   Priort   Nextt   Upt   Downc         S   s   |  p | S(    (    (   Rw   Rx   (    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyt   <lambda>R  s    t   Shiftt   Controlt   Altt   Metat   Commandt   Option(   R~   R   (   R€   R   (   R€   R‡   Rˆ   R‰   RŠ   R‹   (   RŒ   R   RŽ   R   (   R   R‘   R’   R“   R”   R•   (   R’   R“   (   R—   R˜   R™   Rš   R›   Rœ   (!   Rq   t   keysymt   hasattrR|   R   R   R   R   t   AutoCompletet   COMPLETE_FILESR   R    R   R{   R   R   t   select_clearR-   R.   R3   R%   R4   t   COMPLETE_ATTRIBUTESR
   RX   R   t   nearestRu   t   maxt   AssertionErrorR!   t   reducet   find(	   R   Rv   R   t   stateR5   t   newselt   jumpt   _[1]R"   (    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyR_   ò   s¦    	 

&

 

$
	
$ 


			-
c         C   sb   |  i  ƒ  p d  Sn |  i i d ƒ |  i i d |  i t |  i ƒ f ƒ j o |  i ƒ  n d  S(   NR   s   %s+%dc(   Rq   R   RD   R   R   R   R{   (   R   Rv   (    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyRb   ^  s
    ,c         C   s   |  i  d  j	 S(   N(   R   R   (   R   (    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyRq   f  s    c         C   s   |  i  |  i |  i ƒ ƒ d  S(   N(   R    R(   R   (   R   (    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyRk   i  s    c         C   sQ  |  i  ƒ  p d  Sn x! t D] } |  i i t | ƒ q W|  i i t |  i ƒ d  |  _ x! t D] } |  i i t	 | ƒ q_ W|  i i t	 |  i
 ƒ d  |  _
 |  i i t t ƒ |  i i t |  i ƒ d  |  _ |  i i t |  i ƒ d  |  _ |  i i t |  i ƒ d  |  _ |  i i ƒ  d  |  _ |  i i ƒ  d  |  _ |  i i ƒ  d  |  _ d  S(   N(   Rq   R\   R   t   event_deleteRZ   t   unbindR   R   R`   R^   R   Ra   Rc   R   R   Rd   R   R   Rf   R   R   t   destroy(   R   Ro   (    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyR{   m  s4     	 						(   t   __name__t
   __module__R   R    R%   R(   R4   Rp   Rg   R[   Re   Ri   R_   Rb   Rq   Rk   R{   (    (    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pyR      s   	 				#	D					l			(   s
   <FocusOut>s   <ButtonPress>(
   s   <Key>s   <Key-BackSpace>s   <Key-Return>s	   <Key-Tab>s   <Key-Up>s
   <Key-Down>s
   <Key-Home>s	   <Key-End>s   <Key-Prior>s
   <Key-Next>(    (   t   __doc__t   Tkintert	   MultiCallR   RŸ   RZ   R\   R^   R`   Ra   Rc   Rd   Rf   Rh   R   (    (    (    s0   /usr/lib/python2.5/idlelib/AutoCompleteWindow.pys   <module>   s   
  