509318396
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
ó
¿œ^c           @   sä  d  Z  d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z d d d f \ Z Z	 Z
 d „  Z d „  Z d	 „  Z i e e 6e e	 6e e
 6Z i d
 e 6d e	 6d e
 6Z i e d
 6e	 d 6e
 d 6Z i d e 6d e	 6d e
 6Z d „  Z d f  d „  ƒ  YZ d f  d „  ƒ  YZ d f  d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ d „  Z d „  Z d „  Z d „  Z d d l Z d  f  d! „  ƒ  YZ d" „  Z  d# „  Z! e" d$ k ràe! ƒ  n  d S(%   s   SS1 -- a spreadsheet.iÿÿÿÿN(   t   expatt   LEFTt   CENTERt   RIGHTc         C   s   |  j  | ƒ S(   N(   t   ljust(   t   xt   n(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR      s    c         C   s   |  j  | ƒ S(   N(   t   center(   R   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR      s    c         C   s   |  j  | ƒ S(   N(   t   rjust(   R   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR      s    t   leftR   t   rightt   wt   ec         C   s4   d } x' |  D] } | d  k	 r | | 7} q q W| S(   Ni    (   t   None(   t   seqt   totalR   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   sum   s
    t   Sheetc           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 d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   sO   i  |  _  t j ƒ  |  _ |  j j d ƒ } |  j | _ |  j | _  t | _ d  S(   Nt   __main__(   t   cellst   rexect   RExect
   add_modulet	   cellvaluet   cellt   multicellvalueR   (   t   selft   m(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   __init__"   s    	c         C   s9   |  j  | | ƒ } t | d ƒ r1 | j |  j ƒ S| Sd  S(   Nt   recalc(   t   getcellt   hasattrR   R   (   R   R   t   yR   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR   *   s    c         C   s—   | | k r | | } } n  | | k r8 | | } } n  g  } xR t  | | d ƒ D]= } x4 t  | | d ƒ D] } | j |  j | | ƒ ƒ ql WqR W| S(   Ni   (   t   ranget   appendR   (   R   t   x1t   y1t   x2t   y2R   R    R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR   1   s    !c         C   s   |  j  j | | f ƒ S(   N(   R   t   get(   R   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR   <   s    c         C   s   | |  j  | | f <d  S(   N(   R   (   R   R   R    R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   setcell?   s    c         C   s,   y |  j  | | f =Wn t k
 r' n Xd  S(   N(   R   t   KeyError(   R   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt	   clearcellD   s    c         C   s1   x* |  j  | | | | ƒ D] } |  j | =q Wd  S(   N(   t   selectcellsR   (   R   R#   R$   R%   R&   t   xy(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt
   clearcellsJ   s    c         C   s   |  j  d | t j | ƒ d  S(   Ni    (   R-   t   syst   maxint(   R   R$   R&   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt	   clearrowsN   s    c         C   s   |  j  | d | t j ƒ d  S(   Ni    (   R-   R.   R/   (   R   R#   R%   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   clearcolumnsQ   s    c         C   s–   | | k r | | } } n  | | k r8 | | } } n  g  |  j  D]P \ } } | | k oe | k n rB | | k o� | k n rB | | f ^ qB S(   N(   R   (   R   R#   R$   R%   R&   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR+   T   s    c         C   s#  | d k r | d k r d  S| | k r8 | | } } n  | | k rT | | } } n  i  } x¹ |  j  D]® \ } }	 |  j  | |	 f }
 t |
 d ƒ r³ |
 j | | | | | | ƒ }
 n  | | k oÊ | k n r| |	 k oæ | k n r| | 7} |	 | 7}	 n  |
 | | |	 f <qd W| |  _  d  S(   Ni    t   renumber(   R   R   R2   (   R   R#   R$   R%   R&   t   dxt   dyt   newR   R    R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt	   movecells\   s     !8
c         C   s&   |  j  d | t j t j d | ƒ d  S(   Ni    (   R6   R.   R/   (   R   R    R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt
   insertrowso   s    c         C   s^   | | k r | | } } n  |  j  | | ƒ |  j d | d t j t j d | | d ƒ d  S(   Ni    i   (   R0   R6   R.   R/   (   R   R$   R&   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt
   deleterowss   s    c         C   s&   |  j  | d t j t j | d ƒ d  S(   Ni    (   R6   R.   R/   (   R   R   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   insertcolumnsy   s    c         C   s^   | | k r | | } } n  |  j  | | ƒ |  j | d d t j t j | | d d ƒ d  S(   Ni   i    (   R-   R6   R.   R/   (   R   R#   R%   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   deletecolumns}   s    c         C   sL   d } } x5 |  j  D]* \ } } t | | ƒ } t | | ƒ } q W| | f S(   Ni    (   R   t   max(   R   t   maxxt   maxyR   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   getsizeƒ   s
    
c         C   s:   x3 |  j  j ƒ  D]" } t | d ƒ r | j ƒ  q q Wd  S(   Nt   reset(   R   t
   itervaluesR   R?   (   R   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR?   Š   s    c         C   sJ   |  j  ƒ  x9 |  j j ƒ  D]( } t | d ƒ r | j |  j ƒ q q Wd  S(   NR   (   R?   R   R@   R   R   R   (   R   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR   �   s    
c         C   sÉ  |  j  ƒ  \ } } | d | d } } d g | } i  } xZ t d | ƒ D]I } t | ƒ t f | | d f <\ } }	 t | | t | ƒ ƒ | | <qJ WxZ t d | ƒ D]I }
 t |
 ƒ t f | d |
 f <\ } }	 t | d t | ƒ ƒ | d <q§ Wxä |  j j ƒ  D]Ó \ \ } }
 } | d k s|
 d k r4qn  t	 | d ƒ rV| j
 |  j ƒ n  t	 | d ƒ rz| j ƒ  \ } }	 n* t | ƒ } t | t ƒ ržt }	 n t }	 | |	 f | | |
 f <t | | t | ƒ ƒ | | <qWd } x9 t | ƒ D]+ } | r| d 7} n  | d | | 7} qîWx¥ t | ƒ D]— }
 d } xo t | ƒ D]a } | j | |
 f ƒ pgd t f \ } }	 t |	 | | | ƒ } | rš| d 7} n  | | 7} qCW| GH|
 d k r*| GHq*q*Wd  S(	   Ni   i    R   t   formatt    t   +t   -t   |(   R>   R!   t   colnum2nameR   R;   t   lent   strR   t	   iteritemsR   R   R   RA   t
   isinstanceR   R'   t   align2action(   R   R<   R=   t   widtht   heightt   colwidtht   fullR   t   textt	   alignmentR    R   t   sept   line(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   display•   sP    &!&!"	!'c         C   s”   d g } xn |  j  j ƒ  D]] \ \ } } } t | d ƒ rI | j ƒ  } n d t j | ƒ } | j d | | | f ƒ q W| j d ƒ d j | ƒ S(   Ns   <spreadsheet>t   xmls   <value>%s</value>s%   <cell row="%s" col="%s">
  %s
</cell>s   </spreadsheet>s   
(   R   RI   R   RU   t   cgit   escapeR"   t   join(   R   t   outR   R    R   t   cellxml(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRU   Ç   s    	"	c         C   s\   |  j  ƒ  } t | d ƒ } | j | ƒ | rN | j d ƒ rN | j d ƒ n  | j ƒ  d  S(   NR   s   
(   RU   t   opent   writet   endswitht   close(   R   t   filenameRP   t   f(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   saveÓ   s    c         C   s0   t  | d ƒ } t |  ƒ j | ƒ | j ƒ  d  S(   Nt   r(   R[   t   SheetParsert	   parsefileR^   (   R   R_   R`   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   loadÛ   s    (   t   __name__t
   __module__R   R   R   R   R(   R*   R-   R0   R1   R+   R6   R7   R8   R9   R:   R>   R?   R   RT   RU   Ra   Re   (    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR       s,   																			2		Rc   c           B   s•   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z e Z	 d „  Z
 d „  Z d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   t   sheet(   R   Rh   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR   â   s    c         C   sA   t  j ƒ  } |  j | _ |  j | _ |  j | _ | j | ƒ d  S(   N(	   R    t   ParserCreatet   startelementt   StartElementHandlert
   endelementt   EndElementHandlert   datat   CharacterDataHandlert	   ParseFile(   R   R`   t   parser(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRd   å   s
    c         C   sc   t  |  d | d  ƒ } | rV x* | j ƒ  D] \ } } t | ƒ | | <q) W| | ƒ n  g  |  _ d  S(   Nt   start_(   t   getattrR   RI   RH   t   texts(   R   t   tagt   attrst   methodt   keyt   value(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRj   ì   s    c         C   s    t  | ƒ } |  j j | ƒ d  S(   N(   RH   Rt   R"   (   R   RP   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRn   ô   s    c         C   s9   t  |  d | d  ƒ } | r5 | d j |  j ƒ ƒ n  d  S(   Nt   end_RB   (   Rs   R   RX   Rt   (   R   Ru   Rw   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRl   ø   s    c         C   s4   t  | j d ƒ ƒ |  _ t  | j d ƒ ƒ |  _ d  S(   Nt   rowt   col(   t   intR'   R    R   (   R   Rv   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt
   start_cellý   s    c         C   s1   | j  d ƒ |  _ t j  | j  d ƒ ƒ |  _ d  S(   NRA   t   align(   R'   t   fmtt	   xml2alignRQ   (   R   Rv   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   start_value  s    c         C   s*   y t  | ƒ |  _ Wn d  |  _ n Xd  S(   N(   R}   Ry   R   (   R   RP   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   end_int  s    c         C   s*   y t  | ƒ |  _ Wn d  |  _ n Xd  S(   N(   t   longRy   R   (   R   RP   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   end_long  s    c         C   s*   y t  | ƒ |  _ Wn d  |  _ n Xd  S(   N(   t   floatRy   R   (   R   RP   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt
   end_double  s    c         C   s*   y t  | ƒ |  _ Wn d  |  _ n Xd  S(   N(   t   complexRy   R   (   R   RP   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   end_complex  s    c         C   s$   y | |  _  Wn d  |  _  n Xd  S(   N(   Ry   R   (   R   RP   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt
   end_string  s    c         C   sŽ   t  |  j t ƒ r! |  j |  _ ni t  |  j t ƒ r` t |  j |  j pH d |  j pT t ƒ |  _ n* t	 |  j |  j pu d |  j p� t
 ƒ |  _ d  S(   Ns   %s(   RJ   Ry   t   BaseCellR   RH   t
   StringCellR€   RQ   R   t   NumericCellR   (   R   RP   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt	   end_value%  s    		c         C   s+   t  | |  j p d |  j p t ƒ |  _ d  S(   Ns   %s(   t   FormulaCellR€   RQ   R   R   (   R   RP   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   end_formula1  s    c         C   s#   |  j  j |  j |  j |  j ƒ d  S(   N(   Rh   R(   R   R    R   (   R   RP   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   end_cell6  s    (   Rf   Rg   R   Rd   Rj   Rn   Rl   R~   R‚   t   start_formulaRƒ   R…   R‡   R‰   RŠ   RŽ   R�   R‘   (    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRc   à   s    														R‹   c           B   s   e  Z d  Z RS(   N(   Rf   Rg   R   R   (    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR‹   9  s   	R�   c           B   sV   e  Z d  e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z	 d „  Z
 RS(	   s   %sc         C   s   | |  _  | |  _ | |  _ d  S(   N(   Ry   R€   RQ   (   R   Ry   R€   RQ   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR   G  s    		c         C   s   |  j  S(   N(   Ry   (   R   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR   N  s    c         C   s:   y |  j  |  j } Wn t |  j ƒ } n X| |  j f S(   N(   R€   Ry   RH   RQ   (   R   RP   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRA   Q  s
    c         C   s=   t  |  d t |  j ƒ j ƒ } d t |  j |  j | ƒ  f S(   Nt   _xml_s(   <value align="%s" format="%s">%s</value>(   Rs   t   typeRy   Rf   t	   align2xmlRQ   R€   (   R   Rw   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRU   X  s
    
c         C   s8   d |  j  k o d k  n r* d |  j  S|  j ƒ  Sd  S(   Ni   i   s   <int>%s</int>I   €    i   €I   €    (   Ry   t	   _xml_long(   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   _xml_int_  s    c         C   s   d |  j  S(   Ns   <long>%s</long>(   Ry   (   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR–   e  s    c         C   s   d t  |  j ƒ S(   Ns   <double>%s</double>(   t   reprRy   (   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt
   _xml_floath  s    c         C   s   d t  |  j ƒ S(   Ns   <complex>%s</double>(   R˜   Ry   (   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   _xml_complexk  s    (   Rf   Rg   R   R   R   RA   RU   R—   R–   R™   Rš   (    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR�   E  s   						RŒ   c           B   s2   e  Z d  e d „ Z d „  Z d „  Z d „  Z RS(   s   %sc         C   s   | |  _  | |  _ | |  _ d  S(   N(   RP   R€   RQ   (   R   RP   R€   RQ   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR   p  s    		c         C   s   |  j  S(   N(   RP   (   R   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR   w  s    c         C   s   |  j  |  j f S(   N(   RP   RQ   (   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRA   z  s    c         C   s-   d } | t  |  j |  j t j |  j ƒ f S(   Ns9   <value align="%s" format="%s"><string>%s</string></value>(   R•   RQ   R€   RV   RW   RP   (   R   t   s(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRU   }  s
    
(   Rf   Rg   R   R   R   RA   RU   (    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRŒ   n  s   		R�   c           B   sD   e  Z d  e d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s   %sc         C   s;   | |  _  t |  j  ƒ |  _ | |  _ | |  _ |  j ƒ  d  S(   N(   t   formulat	   translatet
   translatedR€   RQ   R?   (   R   Rœ   R€   RQ   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR   †  s
    			c         C   s   d  |  _ d  S(   N(   R   Ry   (   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR?   Ž  s    c         C   s”   |  j  d  k r� y4 | j d d t |  j ƒ ƒ | j d ƒ |  _  Wq� t j ƒ  d } t | d ƒ rw | j	 |  _  qŠ t
 | ƒ |  _  q� Xn  |  j  S(   Ns    from __future__ import division
s   __value__ = eval(%s)t	   __value__i    Rf   (   Ry   R   t   r_execR˜   Rž   t   r_evalR.   t   exc_infoR   Rf   RH   (   R   R   t   exc(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR   ‘  s    	c         C   s:   y |  j  |  j } Wn t |  j ƒ } n X| |  j f S(   N(   R€   Ry   RH   RQ   (   R   RP   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRA      s
    c         C   s   d t  |  j |  j |  j f S(   Ns,   <formula align="%s" format="%s">%s</formula>(   R•   RQ   R€   Rœ   (   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRU   §  s    
c         C   sï   g  } xÇ t  j d |  j ƒ D]° } t  j d | ƒ }	 |	 d  k	 r¿ |	 j ƒ  \ }
 } t |
 ƒ } t | ƒ } | | k o� | k n r¿ | | k o� | k n r¿ t | | | | ƒ } q¿ n  | j	 | ƒ q Wt
 d j | ƒ |  j |  j ƒ S(   Ns   (\w+)s   ^([A-Z]+)([1-9][0-9]*)$RB   (   t   ret   splitRœ   t   matchR   t   groupst   colname2numR}   t   cellnameR"   R�   RX   R€   RQ   (   R   R#   R$   R%   R&   R3   R4   RY   t   partR   t   sxt   syR   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR2   ­  s    8(	   Rf   Rg   R   R   R?   R   RA   RU   R2   (    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR�   „  s   				c   	      C   sÐ   g  } xº t  j d |  ƒ D]¦ } t  j d | ƒ } | d k rM | j | ƒ q | j ƒ  \ } } } } t | ƒ } | d k r� d | | f } n" t | ƒ } d | | | | f } | j | ƒ q Wd j | ƒ S(   sš   Translate a formula containing fancy cell names to valid Python code.

    Examples:
        B4 -> cell(2, 4)
        B4:Z100 -> cells(2, 4, 26, 100)
    s   (\w+(?::\w+)?)s2   ^([A-Z]+)([1-9][0-9]*)(?::([A-Z]+)([1-9][0-9]*))?$s   cell(%s, %s)s   cells(%s, %s, %s, %s)RB   N(   R¤   R¥   R¦   R   R"   R§   R¨   RX   (	   Rœ   RY   Rª   R   R#   R$   R%   R&   R›   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR�   º  s    c         C   s   t  |  ƒ t | ƒ S(   sE   Translate a cell coordinate to a fancy cell name (e.g. (1, 1)->'A1').(   RF   RH   (   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR©   Ñ  s    c         C   sI   |  j  ƒ  }  d } x0 |  D]( } | d t | ƒ t d ƒ d } q W| S(   sC   Translate a column name to number (e.g. 'A'->1, 'Z'->26, 'AA'->27).i    i   t   Ai   (   t   uppert   ord(   R›   R   t   c(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR¨   Ö  s
    &c         C   sJ   d } x= |  rE t  |  d d ƒ \ }  } t | t d ƒ ƒ | } q	 W| S(   s6   Translate a column number to name (e.g. 1->'A', etc.).RB   i   i   R­   (   t   divmodt   chrR¯   (   R   R›   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRF   ß  s
    	t   SheetGUIc           B   sõ   e  Z d  Z d d d d „ Z d „  Z d „  Z d „  Z d „  Z d	 „  Z d
 „  Z	 d „  Z
 d „  Z d „  Z d „  Z d „  Z 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 RS(   s7  Beginnings of a GUI for a spreadsheet.

    TO DO:
    - clear multiple cells
    - Insert, clear, remove rows or columns
    - Show new contents while typing
    - Scroll bars
    - Grow grid when window is grown
    - Proper menus
    - Undo, redo
    - Cut, copy and paste
    - Formatting and alignment
    s
   sheet1.xmli
   i   c         C   s*  | |  _  t ƒ  |  _ t j j | ƒ r: |  j j | ƒ n  |  j j ƒ  \ } } t | | ƒ } t | | ƒ } t	 j	 ƒ  |  _
 |  j
 j d |  j  ƒ t	 j |  j
 d d d d ƒ|  _ t	 j |  j
 ƒ |  _ t	 j |  j
 d d d	 |  j ƒ|  _ t	 j |  j
 ƒ |  _ |  j j d
 d d d d d ƒ |  j j d
 d ƒ |  j j d
 d ƒ |  j j d
 d d d d d ƒ |  j j d |  j ƒ |  j j d |  j ƒ |  j j d |  j ƒ |  j j d |  j ƒ |  j j d |  j ƒ |  j j d |  j ƒ |  j | | ƒ d |  _ d |  _  |  j! d d ƒ |  j" ƒ  d S(   sl   Constructor.

        Load the sheet from the filename argument.
        Set up the Tk widget tree.
        s   Spreadsheet: %sRP   t   A1t   fontt	   helveticai   t   boldt   Savet   commandt   sidet   bottomt   expandi   t   fillt   bothR	   R
   R   s   <Return>s   <Shift-Return>s   <Tab>s   <Shift-Tab>s   <Delete>s   <Escape>N(   R¶   i   R·   (#   R_   R   Rh   t   ost   patht   isfileRe   R>   R;   t   Tkt   roott   wm_titlet   Labelt   beacont   Entryt   entryt   ButtonRa   t
   savebuttont   Framet   cellgridt   packt   bindt   return_eventt   shift_return_eventt	   tab_eventt   shift_tab_eventt   delete_eventt   escape_eventt   makegridR   t	   currentxyt   cornerxyt
   setcurrentt   sync(   R   R_   t   rowst   columnsR<   R=   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR   ú  s<    			c         C   sr   |  j  |  j k r> |  j  d  k	 r> |  j j |  j |  j  Œ  n |  j j |  j Œ  |  j ƒ  |  j j d d ƒ d S(   Ni    t   endt   break(	   R×   RÖ   R   Rh   R-   R*   RÙ   RÈ   t   delete(   R   t   event(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRÓ   '  s    !
c         C   s#   |  j  \ } } |  j | | ƒ d  S(   N(   RÖ   t
   load_entry(   R   Rß   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRÔ   0  s    c         C   s˜   |  j  j | | ƒ } | d  k r* d } n1 t | t ƒ rI d | j } n | j ƒ  \ } } |  j j d d ƒ |  j j	 d | ƒ |  j j
 d d ƒ d  S(   NRB   t   =i    RÜ   (   Rh   R   R   RJ   R�   Rœ   RA   RÈ   RÞ   t   insertt   selection_range(   R   R   R    R   RP   RQ   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRà   4  s    	c      
   C   s  | |  _  | |  _ i  |  _ t j |  j d d ƒ} | j d d d d d d ƒ | j d |  j ƒ xâ t	 d	 | d	 ƒ D]Í } |  j j
 | d
 d ƒt j |  j d t | ƒ d d ƒ} | j d | d d d d ƒ | |  j | d f <| | _ d | _ | j d |  j ƒ | j d |  j ƒ | j d |  j ƒ | j d |  j ƒ qv WxÌ t	 d	 | d	 ƒ D]· } t j |  j d t | ƒ d d ƒ} | j d d d | d d ƒ | |  j d | f <d | _ | | _ | j d |  j ƒ | j d |  j ƒ | j d |  j ƒ | j d |  j ƒ q[Wxê t	 d	 | d	 ƒ D]Õ } xÌ t	 d	 | d	 ƒ D]· } t j |  j d d d d d d ƒ} | j d | d | d d ƒ | |  j | | f <| | _ | | _ | j d |  j ƒ | j d |  j ƒ | j d |  j ƒ | j d |  j ƒ qDWq*Wd S(   s€   Helper to create the grid of GUI cells.

        The edge (x==0 or y==0) is filled with labels; the rest is real cells.
        t   relieft   raisedt   columni    R{   t   stickyt   NSWEs   <ButtonPress-1>i   t   minsizei@   RP   t   WEs   <B1-Motion>s   <ButtonRelease-1>s   <Shift-Button-1>t   sunkent   bgt   whitet   fgt   blackN(   RÚ   RÛ   t	   gridcellsRÂ   RÅ   RÌ   t   grid_configureRÎ   t	   selectallR!   t   grid_columnconfigureRF   t   _SheetGUI__xt   _SheetGUI__yt   selectcolumnt   extendcolumnRH   t	   selectrowt	   extendrowt   presst   motiont   release(   R   RÚ   RÛ   R   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRÕ   @  sN    			$		$				c         C   s*   |  j  d d ƒ |  j t j t j ƒ d  S(   Ni   (   RØ   t	   setcornerR.   R/   (   R   Rß   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRò   r  s    c         C   s<   |  j  | ƒ \ } } |  j | d ƒ |  j | t j ƒ d  S(   Ni   (   t   whichxyRØ   Rý   R.   R/   (   R   Rß   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRö   v  s    c         C   sR   |  j  | ƒ \ } } | d k rN |  j |  j d d ƒ |  j | t j ƒ n  d  S(   Ni    i   (   Rþ   RØ   RÖ   Rý   R.   R/   (   R   Rß   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR÷   {  s    c         C   s<   |  j  | ƒ \ } } |  j d | ƒ |  j t j | ƒ d  S(   Ni   (   Rþ   RØ   Rý   R.   R/   (   R   Rß   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRø   �  s    c         C   sR   |  j  | ƒ \ } } | d k rN |  j d |  j d ƒ |  j t j | ƒ n  d  S(   Ni    i   (   Rþ   RØ   RÖ   Rý   R.   R/   (   R   Rß   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRù   †  s    c         C   sD   |  j  | ƒ \ } } | d k r@ | d k r@ |  j | | ƒ n  d  S(   Ni    (   Rþ   RØ   (   R   Rß   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRú   Œ  s    c         C   sD   |  j  | ƒ \ } } | d k r@ | d k r@ |  j | | ƒ n  d  S(   Ni    (   Rþ   Rý   (   R   Rß   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRû   ‘  s    c         C   sh   |  j  j | j | j ƒ } | d  k	 rd t | t j ƒ rd y | j | j	 f SWqd t
 k
 r` qd Xn  d S(   Ni    (   i    i    (   RÌ   t   winfo_containingt   x_roott   y_rootR   RJ   RÂ   RÅ   Rô   Rõ   t   AttributeError(   R   Rß   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRþ   ˜  s    c         C   s   |  j  j |  j ƒ d  S(   N(   Rh   Ra   R_   (   R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRa   ¡  s    c         C   s£   |  j  d k	 r |  j ƒ  n  |  j ƒ  t | | ƒ |  j d <|  j | | ƒ |  j j ƒ  | | f |  _  d |  _	 |  j
 j |  j  ƒ } | d k	 rŸ d | d <n  d S(   s   Make (x, y) the current cell.RP   t   yellowRì   N(   RÖ   R   t   change_cellt
   clearfocusR©   RÆ   Rà   RÈ   t	   focus_setR×   Rð   R'   (   R   R   R    t   gridcell(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRØ   ¤  s    
	c   	      C   sc  |  j  d  k s$ |  j  | | f k r8 |  j | | ƒ d  S|  j ƒ  | | f |  _ |  j  \ } } |  j po |  j  \ } } | | k r” | | } } n  | | k r° | | } } n  xh |  j j ƒ  D]W \ \ } } } | | k oé | k n rÀ | | k o| k n rÀ d | d <qÀ qÀ W|  j j |  j  ƒ } | d  k	 rId | d <n  |  j | | | | ƒ d  S(   Nt	   lightBlueRì   R  (	   RÖ   R   RØ   R  R×   Rð   RI   R'   t	   setbeacon(	   R   R   R    R#   R$   R%   R&   R   R  (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRý   ²  s$    $
"8c         C   s#  | | k o d k n rD | | k o6 t  j k n rD d } nÎ | | f d t  j f k r‹ | | k rx d | } qd | | f } n‡ | | f d t  j f k rä | | k rÅ d t | ƒ } qd t | ƒ t | ƒ f } n. t |  j Œ  } t |  j Œ  } d | | f } | |  j d <d  S(   Ni   t   :s   %ds   %d:%ds   %ss   %s:%sRP   (   R.   R/   RF   R©   RÖ   R×   RÆ   (   R   R#   R$   R%   R&   t   namet   name1t   name2(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR	  Æ  s    ;	c         C   sà   |  j  d  k	 rÜ |  j  \ } } |  j p- |  j  \ } } | | k rR | | } } n  | | k rn | | } } n  xk |  j j ƒ  D]W \ \ } } } | | k o§ | k n r~ | | k oÃ | k n r~ d | d <q~ q~ Wn  d  S(   NRí   Rì   (   RÖ   R   R×   Rð   RI   (   R   R#   R$   R%   R&   R   R    R   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR  Ú  s    "8c         C   s1   |  j  ƒ  |  j \ } } |  j | | d ƒ d S(   s   Callback for the Return key.i   RÝ   (   R  RÖ   RØ   (   R   Rß   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRÏ   æ  s    
c         C   s:   |  j  ƒ  |  j \ } } |  j | t d | d ƒ ƒ d S(   s0   Callback for the Return key with Shift modifier.i   RÝ   (   R  RÖ   RØ   R;   (   R   Rß   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRÐ   í  s    
c         C   s1   |  j  ƒ  |  j \ } } |  j | d | ƒ d S(   s   Callback for the Tab key.i   RÝ   (   R  RÖ   RØ   (   R   Rß   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRÑ   ô  s    
c         C   s:   |  j  ƒ  |  j \ } } |  j t d | d ƒ | ƒ d S(   s-   Callback for the Tab key with Shift modifier.i   RÝ   (   R  RÖ   RØ   R;   (   R   Rß   R   R    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRÒ   û  s    
c         C   sô   |  j  \ } } |  j j ƒ  } d } | j d ƒ rF t | d ƒ } nG xD t t t t	 f D]0 } y | | ƒ } Wn
 qY qY Xt
 | ƒ } PqY W| d k r® | r® t | ƒ } n  | d k rÐ |  j j | | ƒ n |  j j | | | ƒ |  j ƒ  d S(   s+   Set the current cell from the entry widget.Rá   i   N(   RÖ   RÈ   R'   R   t
   startswithR�   R}   R„   R†   Rˆ   R�   RŒ   Rh   R*   R(   RÙ   (   R   R   R    RP   R   t   clsRy   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR    s$    c         C   sÒ   |  j  j ƒ  x¾ |  j j ƒ  D]­ \ \ } } } | d k s | d k rM q n  |  j  j | | ƒ } | d k r{ d | d <q t | d ƒ rŸ | j ƒ  \ } } n t | ƒ t	 } } | | d <t
 | | d <q Wd S(   s(   Fill the GUI cells from the sheet cells.i    RB   RP   RA   t   anchorN(   Rh   R   Rð   RI   R   R   R   RA   RH   R   t   align2anchor(   R   R   R    R  R   RP   RQ   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyRÙ     s    "
(   Rf   Rg   t   __doc__R   RÓ   RÔ   Rà   RÕ   Rò   Rö   R÷   Rø   Rù   Rú   Rû   Rü   Rþ   Ra   RØ   Rý   R	  R  RÏ   RÐ   RÑ   RÒ   R  RÙ   (    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyR³   ê  s4   -					2																			c          C   sç   d d l  }  t ƒ  } x´ t d d ƒ D]£ } xš t d d ƒ D]‰ } | d k r\ t | ƒ } nU | d k rw t | ƒ } n: t | d ƒ } t d | ƒ } d | | f } t | ƒ } | j | | | ƒ q; Wq% W| j ƒ  | j d ƒ d S(   s   Basic non-gui self-test.iÿÿÿÿNi   i   s   %s*%ss
   sheet1.xml(	   R¿   R   R!   R�   R©   R�   R(   RT   Ra   (   R¿   t   aR   R    R   t   c1t   c2Rœ   (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt
   test_basic,  s    	
c          C   s@   t  j d r t  j d }  n d }  t |  ƒ } | j j ƒ  d S(   s	   GUI test.i   s
   sheet1.xmlN(   R.   t   argvR³   RÃ   t   mainloop(   R_   t   g(    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   test_guiB  s
    R   (#   R  R¿   R¤   R.   RV   R   t   xml.parsersR    R   R   R   R   R   R   RK   R•   R�   R  R   R   Rc   R‹   R�   RŒ   R�   R�   R©   R¨   RF   t   TkinterRÂ   R³   R  R  Rf   (    (    (    s.   /usr/lib64/python2.7/Demo/tkinter/guido/ss1.pyt   <module>   s@   				ÀY)6						ÿ C			