³ò
Õ%Hc           @   s²   d  d k  Z  d  d k Z d  d k Z d  d k l Z l Z l Z l Z l Z l	 Z	 d d d „  ƒ  YZ
 d „  Z d d „ Z d d	 „ Z d
 „  Z d e f d „  ƒ  YZ d „  Z d S(   iÿÿÿÿN(   t   voidt   exitt   alwayst   Returnt   maybe_returnt   show_buttonst   listboxc           B   s,   e  Z d  „  Z d „  Z d „  Z d „  Z RS(   c
         C   s
  | |  _  | d | d d f |  _ | |  _ | |  _ | |  _ | |  _ | |  _ | |  _ |	 |  _ t	 i
 |  i d |  i d d f ƒ |  _ |  i i | ƒ xf t | ƒ D]X }
 |  i i | d d |
 |  i d |  i |  i d d |  i d |  i d f ƒ qª Wd  S(   Ni    i   i   (   t   xyt   sizet   viewable_itemst   lines_per_itemt   bg_colort	   sel_colort	   out_colort
   font_colort   fontt   pygamet   Surfacet   list_surfacet   fillt   range(   t   selfR   R   R	   R
   R   R   R   R   R   t   i(    (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyt   __init__   s     								* c         C   sì  t  | ƒ |  i j o/ d t t  | ƒ ƒ GHd t |  i ƒ GHt Sn | |  i j o d t | ƒ GHd } n t  | ƒ |  i |  i d j o d t t  | ƒ ƒ GHt Sn t i i |  i |  i	 ƒ t i i
 |  i |  i	 d d |  i	 d d | |  i d |  i |  i d d |  i d |  i d f ƒ |  i i d ƒ } x£ t |  i ƒ D]’ } x‰ t |  i ƒ D]x } t i t i | | |  i | |  i d	 |  i	 d d
 |  i	 d | |  i d |  i | | d d f |  i ƒ qhWqRWt S(   Ns    CRASH WARNING: len(lines_array)=s#   CRASH WARNING: self.viewable_items=s&   Error in refresh_listbox(). selected =i    s-   Error in refresh_listbox(). len(lines_array)=i   i   t    iÿÿÿÿi   (   t   lenR	   t   strt   FalseR
   t   gt   screent   blitR   R   R   R   R   R   R   t   print_stringR   t   True(   R   t   selectedt   lines_arrayt
   txt_y_sizeR   t   j(    (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyt   refresh_listbox4   s2    
!$*   %c         C   s£   | d |  i  d j o‡ | d |  i  d j oo | d |  i  d |  i d j oL | d |  i  d |  i d j  o) | d |  i  d |  i |  i d Sn d S(   Ni    i   iÿÿÿÿ(   R   R   R	   (   R   R   (    (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyt   is_overU   s
    0##)c         C   s  t  | ƒ } | } t } | t i j o | d 7} n™ | t i j o | d 8} n{ | t i j o
 d } na | t i j o | d } nC | t i j o | |  i 8} n" | t i	 j o | |  i 7} n | | j o | d } n | d j o
 d } n | | d j o] | t i	 j p | t i j o= x: t
 | d d ƒ D]" } | } | | d j o PqDqDWn | | j o
 t } n | | f S(   Ni   i    R   iÿÿÿÿ(   R   R   R   t   K_DOWNt   K_UPt   K_HOMEt   K_ENDt   K_PAGEUPR	   t
   K_PAGEDOWNR   R    (   R   t   keycodet   cur_post   input_arrayt   array_lengtht   lastpost   refreshR   (    (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyt   key_handler]   s:    

! 
(   t   __name__t
   __module__R   R%   R&   R3   (    (    (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyR      s   		!	c         C   s›   |  i  | |  i | | |  i |  i | |  i |  i |  i !ƒ } | p	 | GHn | o0 | i | t | ƒ |  i d |  i d ƒ n t i i ƒ  d  S(   Ni   (   R%   R	   t   refresh_scrollR   R   t   displayt   flip(   R   t	   scrollbart   list_post
   list_arrayt   success(    (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyt   refresh_list   s    		'i
   c         C   sC   t  |  ƒ d j o t  |  ƒ | } n | } |  d g | 7}  d  S(   Ni    R   (   R   (   t   listt	   list_sizet   padding_needed(    (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyt   resize_list‹   s    i    c         C   s=   | | d j o | Sn t  | d t | t |  d ƒ ƒ ƒ S(   s;   Return the closest int i to index such that min <= i < max.i   g      à?(   t   mint   maxt   int(   t   indext	   max_valuet	   min_value(    (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyt
   sane_index’   s    c          O   sÞ   t  d d d d d d d t i d d d	 d
 f d d d t i d d t i d d t i d d t i d d t i d d d t d t d t d d ƒ } | i | ƒ y t |  | Ž  Wn  t j
 o } | i	 d Sn Xd  S(   NR:   i    R?   i
   R
   i   t   loci   i,  i2   t   box_sizeiú   R   t	   dark_blueR   t   blueR   t   whiteR   R   i   t   pos_callbackt   return_callbackt   button_callbackt   escape_exit_codeiÿÿÿÿ(   iú   i,  (
   t   dictR   t   screen_sizet   colorsR   R    t   updatet   _show_listboxR   t   args(   RW   t   kwargst   optionst   e(    (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyt   show_listbox˜   s(    	t   Argsc           B   s   e  Z d  „  Z RS(   c         C   s   | |  _  d  S(   N(   t   __dict__(   R   RR   (    (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyR   ¾   s    (   R4   R5   R   (    (    (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyR\   ½   s   c            s3  t  | ƒ ‰ t ˆ ˆ i ƒ t ˆ i ˆ i ˆ i ˆ i ˆ i ˆ i ˆ i	 ˆ i
 ˆ i ƒ	 ‰  t i ˆ i d ˆ i d ˆ i d f ˆ i d ˆ i ˆ i ˆ i ˆ i	 ƒ ‰ ‡  ‡ ‡ f d †  } ‡  ‡ ‡ ‡ f d †  } ‡ f d †  } ‡  ‡ ‡ ‡ f d †  } t t | d | d | d	 ˆ i d
 | d | ƒ‚ d  S(   Ni    i   c            s‹   |  i  } | t i t i f j o t ˆ i ˆ i ƒ ƒ n+ | t i t i f j o t ˆ i	 ƒ n ˆ  i
 | ˆ i ˆ ƒ \ ˆ _ } d  S(   N(   t   keyR   t   K_RETURNt
   K_KP_ENTERR   RO   R:   t   K_ESCAPEt   K_qRQ   R3   (   t   eventR^   R2   (   t   boxR>   t   kw(    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyt
   handle_keyÈ   s    	c            sé   |  i  d j ot ˆ  i |  i ƒ } | d j o | ˆ i ˆ i ˆ i 7} n ˆ i |  ˆ i ˆ ƒ } | d j o | ˆ _ qÊ nG |  i  d j o ˆ i d 8_ n$ |  i  d j o ˆ i d 7_ n t ˆ i t ˆ ƒ ƒ ˆ _ d  S(   Ni   iÿÿÿÿi   i   (   t   buttonR&   t   posR:   R?   t
   adjust_posRH   R   (   Rc   t	   selection(   Rd   R>   t   scrollRe   (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyt   handle_clickÓ   s    c              s
   ˆ  i  f S(   N(   R:   (    (   Re   (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyt   give_list_posä   s    c              s*   ˆ i  ˆ i ƒ t ˆ  ˆ ˆ i ˆ ƒ d  S(   N(   RN   R:   R=   (    (   Rd   R>   Re   Rk   (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyt
   do_refreshç   s    t   key_callbackt   click_callbackRP   t   button_argst   refresh_callback(   R\   RA   R?   R   RI   RJ   R
   R   R   R   R   R   R9   R   R   RP   (   R>   t   buttonsRX   Rf   Rl   Rm   Rn   (    (   Rd   R>   Re   Rk   s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pyRV   Á   s    ?P	(    (   R   R   R9   Rs   R    R   R   R   R   R   R   R=   RA   RH   R[   t   objectR\   RV   (    (    (    s<   /home/phil/rcs/svn/endgame-singularity/trunk/code/listbox.pys   <module>   s   .e		%