Your IP : 216.73.216.213


Current Path : /opt/alt/python34/lib64/python3.4/Tools/demo/__pycache__/
Upload File :
Current File : //opt/alt/python34/lib64/python3.4/Tools/demo/__pycache__/ss1.cpython-34.pyo

�
e f�c�@s�dZddlZddlZddlZddlmZddlmZdddf\ZZ	Z
dd	�Zd
d�Zdd
�Z
iee6ee	6e
e
6Zide6de	6de
6Zied6e	d6e
d6Zide6de	6de
6Zdd�ZGdd�d�ZGdd�d�ZGdd�d�ZGdd�de�ZGdd�de�ZGdd�de�Zd d!�Zd"d#�Zd$d%�Zd&d'�ZddlZGd(d)�d)�Zd*d+�Z d,d-�Z!e"d.kr�e!�ndS)/z(
SS1 -- a spreadsheet-like application.
�N)�expat)�escape�LEFT�CENTER�RIGHTcCs
|j|�S)N)�ljust)�x�n�r
�3/opt/alt/python34/lib64/python3.4/Tools/demo/ss1.pyrsrcCs
|j|�S)N)�center)rr	r
r
rrsrcCs
|j|�S)N)�rjust)rr	r
r
rr
sr
�left�right�w�ecCs4d}x'|D]}|dk	r
||7}q
q
W|S)Nrr
)�seqZtotalrr
r
r�sums

rc@seZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-S).�SheetcCs1i|_td|jd|jdt�|_dS)N�cell�cellsr)r�dict�	cellvalue�multicellvaluer�ns)�selfr
r
r�__init__%s
			zSheet.__init__cCs9|j||�}t|d�r1|j|j�S|SdS)N�recalc)�getcell�hasattrrr)rr�yrr
r
rr-szSheet.cellvaluecCs�||kr||}}n||kr8||}}ng}xRt||d�D]=}x4t||d�D]}|j|j||��qlWqRW|S)N�)�range�appendr)r�x1�y1�x2�y2rr rr
r
rr4s!zSheet.multicellvaluecCs|jj||f�S)N)r�get)rrr r
r
rr?sz
Sheet.getcellcCs||j||f<dS)N)r)rrr rr
r
r�setcellBsz
Sheet.setcellcCs-y|j||f=Wntk
r(YnXdS)N)r�KeyError)rrr r
r
r�	clearcellGs
zSheet.clearcellcCs1x*|j||||�D]}|j|=qWdS)N)�selectcellsr)rr$r%r&r'Zxyr
r
r�
clearcellsMszSheet.clearcellscCs|jd|tj|�dS)Nr)r-�sys�maxsize)rr%r'r
r
r�	clearrowsQszSheet.clearrowscCs|j|d|tj�dS)Nr)r-r.r/)rr$r&r
r
r�clearcolumnsTszSheet.clearcolumnscs[��kr����n��kr8����n����fdd�|jD�S)NcsZg|]P\}}�|ko)�knr�|koE�knr||f�qSr
r
)�.0rr )r$r&r%r'r
r�
<listcomp>\s		z%Sheet.selectcells.<locals>.<listcomp>)r)rr$r%r&r'r
)r$r&r%r'rr,Ws
zSheet.selectcellscCs#|dkr|dkrdS||kr8||}}n||krT||}}ni}x�|jD]�\}}	|j||	f}
t|
d�r�|
j||||||�}
n||ko�|knr||	ko�|knr||7}|	|7}	n|
|||	f<qdW||_dS)Nr�renumber)rrr4)rr$r%r&r'�dx�dy�newrr rr
r
r�	movecells_s !8

zSheet.movecellscCs&|jd|tjtjd|�dS)Nr)r8r.r/)rr r	r
r
r�
insertrowsrszSheet.insertrowscCs^||kr||}}n|j||�|jd|dtjtjd||d�dS)Nrr!)r0r8r.r/)rr%r'r
r
r�
deleterowsvszSheet.deleterowscCs&|j|dtjtj|d�dS)Nr)r8r.r/)rrr	r
r
r�
insertcolumns|szSheet.insertcolumnscCs^||kr||}}n|j||�|j|ddtjtj||dd�dS)Nr!r)r-r8r.r/)rr$r&r
r
r�
deletecolumns�szSheet.deletecolumnscCsLd}}x5|jD]*\}}t||�}t||�}qW||fS)Nr)r�max)r�maxx�maxyrr r
r
r�getsize�s

z
Sheet.getsizecCs:x3|jj�D]"}t|d�r|j�qqWdS)N�reset)r�valuesrrA)rrr
r
rrA�szSheet.resetcCsJ|j�x9|jj�D](}t|d�r|j|j�qqWdS)Nr)rArrBrrr)rrr
r
rr�s
zSheet.recalccCs�|j�\}}|d|d}}dg|}i}xZtd|�D]I}t|�tf||df<\}}	t||t|��||<qJWxZtd|�D]I}
t|
�tf|d|
f<\}}	t|dt|��|d<q�Wx�|jj�D]�\\}}
}|dks|
dkr4qnt	|d�rV|j
|j�nt	|d�rz|j�\}}	n*t|�}t
|t�r�t}	nt}	||	f|||
f<t||t|��||<qWd}x9t|�D]+}|r|d7}n|d||7}q�Wx�t|�D]�}
d}
xot|�D]a}|j||
f�pgdtf\}}	t|	|||�}|
r�|
d7}
n|
|7}
qCWt|
�|
dkr*t|�q*q*WdS)	Nr!rr�format��+�-�|)r@r"�colnum2namerr=�len�strr�itemsrrrrC�
isinstancerr(�align2action�print)rr>r?�widthZheightZcolwidth�fullr�text�	alignmentr r�sep�liner
r
r�display�sP
&!&!"	!
'

z
Sheet.displaycCs�dg}xk|jj�D]Z\\}}}t|d�rI|j�}ndt|�}|jd|||f�qW|jd�dj|�S)Nz
<spreadsheet>�xmlz<value>%s</value>z%<cell row="%s" col="%s">
  %s
</cell>z</spreadsheet>�
)rrKrrVrr#�join)r�outrr rZcellxmlr
r
rrV�s	"	
z	Sheet.xmlc	Csa|j�}t|ddd��:}|j|�|rW|jd�rW|jd�nWdQXdS)Nr�encodingzutf-8rW)rV�open�write�endswith)r�filenamerQ�fr
r
r�save�s

z
Sheet.savec	Cs/t|d��}t|�j|�WdQXdS)N�rb)r[�SheetParser�	parsefile)rr^r_r
r
r�load�sz
Sheet.loadN)�__name__�
__module__�__qualname__rrrrr)r+r-r0r1r,r8r9r:r;r<r@rArrUrVr`rdr
r
r
rr#s,2rc@s�eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e	Z
dd�ZeZdd�Z
dd�Zdd�Zdd�Zdd�Zdd�ZdS)rbcCs
||_dS)N)�sheet)rrhr
r
rr�szSheetParser.__init__cCsAtj�}|j|_|j|_|j|_|j|�dS)N)	rZParserCreate�startelementZStartElementHandler�
endelementZEndElementHandler�dataZCharacterDataHandlerZ	ParseFile)rr_�parserr
r
rrc�s
zSheetParser.parsefilecCs6t|d|d�}|r)||�ng|_dS)NZstart_)�getattr�texts)r�tag�attrs�methodr
r
rri�s
zSheetParser.startelementcCs|jj|�dS)N)rnr#)rrQr
r
rrk�szSheetParser.datacCs9t|d|d�}|r5|dj|j��ndS)NZend_rD)rmrXrn)rrorqr
r
rrj�szSheetParser.endelementcCs4t|jd��|_t|jd��|_dS)N�row�col)�intr(r r)rrpr
r
r�
start_cell�szSheetParser.start_cellcCs1|jd�|_tj|jd��|_dS)NrCZalign)r(�fmt�	xml2alignrR)rrpr
r
r�start_value�szSheetParser.start_valuec	Cs+yt|�|_Wnd|_YnXdS)N)rt�value)rrQr
r
r�end_intszSheetParser.end_intc	Cs+yt|�|_Wnd|_YnXdS)N)�floatry)rrQr
r
r�
end_double
szSheetParser.end_doublec	Cs+yt|�|_Wnd|_YnXdS)N)�complexry)rrQr
r
r�end_complexszSheetParser.end_complexcCs
||_dS)N)ry)rrQr
r
r�
end_stringszSheetParser.end_stringcCs�t|jt�r!|j|_nit|jt�r`t|j|jpHd|jpTt�|_n*t	|j|jpud|jp�t
�|_dS)Nz%s)rLry�BaseCellrrJ�
StringCellrvrRr�NumericCellr)rrQr
r
r�	end_values		zSheetParser.end_valuecCs+t||jpd|jpt�|_dS)Nz%s)�FormulaCellrvrRrr)rrQr
r
r�end_formula(szSheetParser.end_formulacCs#|jj|j|j|j�dS)N)rhr)rr r)rrQr
r
r�end_cell-szSheetParser.end_cellN)rerfrgrrcrirkrjrurxZ
start_formularzZend_longr|r~rr�r�r�r
r
r
rrb�s rbc@seZdZdZdS)r�N)rerfrgrr
r
r
rr�0s	r�c@sjeZdZdedd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)r�z%scCs||_||_||_dS)N)ryrvrR)rryrvrRr
r
rr>s		zNumericCell.__init__cCs|jS)N)ry)rrr
r
rrEszNumericCell.recalcc	Cs;y|j|j}Wnt|j�}YnX||jfS)N)rvryrJrR)rrQr
r
rrCHs
zNumericCell.formatcCs=t|dt|j�j�}dt|j|j|�fS)NZ_xml_z(<value align="%s" format="%s">%s</value>)rm�typeryre�	align2xmlrRrv)rrqr
r
rrVOs

zNumericCell.xmlcCs9d|jkodknr*d|jSd|jSdS)N��z
<int>%s</int>z<long>%s</long>li�l)ry)rr
r
r�_xml_intVszNumericCell._xml_intcCsd|jS)Nz<double>%r</double>)ry)rr
r
r�
_xml_float\szNumericCell._xml_floatcCsd|jS)Nz<complex>%r</complex>)ry)rr
r
r�_xml_complex_szNumericCell._xml_complexN)rerfrgrrrrCrVr�r�r�r
r
r
rr�<sr�c@sFeZdZdedd�Zdd�Zdd�Zdd	�Zd
S)r�z%scCs||_||_||_dS)N)rQrvrR)rrQrvrRr
r
rrds		zStringCell.__init__cCs|jS)N)rQ)rrr
r
rrkszStringCell.recalccCs|j|jfS)N)rQrR)rr
r
rrCnszStringCell.formatcCs*d}|t|j|jt|j�fS)Nz9<value align="%s" format="%s"><string>%s</string></value>)r�rRrvrrQ)r�sr
r
rrVqs

zStringCell.xmlN)rerfrgrrrrCrVr
r
r
rr�bsr�c@s^eZdZdedd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)r�z%scCs;||_t|j�|_||_||_|j�dS)N)�formula�	translate�
translatedrvrRrA)rr�rvrRr
r
rrzs
			zFormulaCell.__init__cCs
d|_dS)N)ry)rr
r
rrA�szFormulaCell.resetc	Csz|jdkrsyt|j|�|_Wqstj�d}t|d�r\|j|_nt|�|_YqsXn|jS)Nrre)ry�evalr�r.�exc_inforrerJ)rr�excr
r
rr�szFormulaCell.recalcc	Cs;y|j|j}Wnt|j�}YnX||jfS)N)rvryrJrR)rrQr
r
rrC�s
zFormulaCell.formatcCs$dt|j|jt|j�fS)Nz,<formula align="%s" format="%s">%s</formula>)r�rRrvrr�)rr
r
rrV�s
zFormulaCell.xmlcCs�g}x�tjd|j�D]�}tjd|�}	|	dk	r�|	j�\}
}t|
�}t|�}
||ko�|knr�||
ko�|knr�t|||
|�}q�n|j|�qWt	dj
|�|j|j�S)Nz(\w+)z^([A-Z]+)([1-9][0-9]*)$rD)
�re�splitr��match�groups�colname2numrt�cellnamer#r�rXrvrR)rr$r%r&r'r5r6rY�part�mZsxZsyrr r
r
rr4�s8zFormulaCell.renumberN)
rerfrgrrrArrCrVr4r
r
r
rr�xsr�c	Cs�g}x�tjd|�D]�}tjd|�}|dkrM|j|�q|j�\}}}}t|�}|dkr�d||f}n"t|�}d||||f}|j|�qWdj|�S)z�Translate a formula containing fancy cell names to valid Python code.

    Examples:
        B4 -> cell(2, 4)
        B4:Z100 -> cells(2, 4, 26, 100)
    z(\w+(?::\w+)?)z2^([A-Z]+)([1-9][0-9]*)(?::([A-Z]+)([1-9][0-9]*))?$Nzcell(%s, %s)zcells(%s, %s, %s, %s)rD)r�r�r�r#r�r�rX)	r�rYr�r�r$r%r&r'r�r
r
rr��sr�cCst|�t|�S)zETranslate a cell coordinate to a fancy cell name (e.g. (1, 1)->'A1').)rHrJ)rr r
r
rr��sr�cCsI|j�}d}x0|D](}|dt|�td�d}qW|S)zCTranslate a column name to number (e.g. 'A'->1, 'Z'->26, 'AA'->27).r��Ar!)�upper�ord)r�r	�cr
r
rr��s

&r�cCsJd}x=|rEt|dd�\}}t|td��|}q	W|S)z6Translate a column number to name (e.g. 1->'A', etc.).rDr!r�r�)�divmod�chrr�)r	r�r�r
r
rrH�s
	rHc@sEeZdZdZddddd�Zdd�Zd	d
�Zdd�Zd
d�Zdd�Z	dd�Z
dd�Zdd�Zdd�Z
dd�Zdd�ZeZdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�Zd)d*�Zd+d,�Zd-d.�Zd/d0�Zd1d2�Zd3d4�Zd5S)6�SheetGUIa7Beginnings 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
    z
sheet1.xml�
�cCs*||_t�|_tjj|�r:|jj|�n|jj�\}}t||�}t||�}t	j	�|_
|j
jd|j�t	j|j
dddd�|_
t	j|j
�|_t	j|j
ddd	|j�|_t	j|j
�|_|jjd
ddd
dd�|j
jd
d�|jjd
d�|jjd
ddd
dd�|jjd|j�|jjd|j�|jjd|j�|jjd|j�|jjd|j�|jjd|j�|j||�d|_d|_|j d
d
�|j!�dS)zlConstructor.

        Load the sheet from the filename argument.
        Set up the Tk widget tree.
        zSpreadsheet: %srQZA1Zfont�	helvetica��boldZSaveZcommandZsideZbottom�expandr!ZfillZbothrrrz<Return>z<Shift-Return>z<Tab>z<Shift-Tab>z<Delete>z<Escape>N)r�r�r�)"r^rrh�os�path�isfilerdr@r=�Tk�rootZwm_title�Label�beaconZEntry�entryZButtonr`Z
savebuttonZFrame�cellgridZpack�bind�return_event�shift_return_event�	tab_event�shift_tab_event�delete_event�escape_event�makegrid�	currentxy�cornerxy�
setcurrent�sync)rr^�rows�columnsr>r?r
r
rr�s<			zSheetGUI.__init__cCsr|j|jkr>|jdk	r>|jj|j|j�n|jj|j�|j�|jjdd�dS)Nr�end�break)r�r�rhr-r+r�r��delete)r�eventr
r
rr�s!
zSheetGUI.delete_eventcCs#|j\}}|j||�dS)N)r��
load_entry)rr�rr r
r
rr�!szSheetGUI.escape_eventcCs�|jj||�}|dkr*d}n1t|t�rId|j}n|j�\}}|jjdd�|jjd|�|jj	dd�dS)NrD�=rr�)
rhrrLr�r�rCr�r��insertZselection_range)rrr rrQrRr
r
rr�%s	zSheetGUI.load_entryc
Cs||_||_i|_tj|jdd�}|jdddddd�|jd|j�x�t	d	|d	�D]�}|jj
|d
d�tj|jdt|�dd�}|jd|dddd
�||j|df<||_d|_
|jd|j�|jd|j�|jd|j�|jd|j�qvWx�t	d	|d	�D]�}tj|jdt|�dd�}|jddd|dd
�||jd|f<d|_||_
|jd|j�|jd|j�|jd|j�|jd|j�q[Wx�t	d	|d	�D]�}x�t	d	|d	�D]�}tj|jdddddd�}|jd|d|dd�||j||f<||_||_
|jd|j�|jd|j�|jd|j�|jd|j�qDWq*WdS)z�Helper to create the grid of GUI cells.

        The edge (x==0 or y==0) is filled with labels; the rest is real cells.
        ZreliefZraised�columnrrrZstickyZNSWEz<ButtonPress-1>r!Zminsize�@rQZWEz<B1-Motion>z<ButtonRelease-1>z<Shift-Button-1>Zsunken�bg�whiteZfgZblackN)r�r��	gridcellsr�r�r�Zgrid_configurer��	selectallr"Zgrid_columnconfigurerH�_SheetGUI__x�_SheetGUI__y�selectcolumn�extendcolumnrJ�	selectrow�	extendrow�press�motion�release)rr�r�rrr r
r
rr�1sN			$		$				zSheetGUI.makegridcCs*|jdd�|jtjtj�dS)Nr!)r��	setcornerr.r/)rr�r
r
rr�cszSheetGUI.selectallcCs<|j|�\}}|j|d�|j|tj�dS)Nr!)�whichxyr�r�r.r/)rr�rr r
r
rr�gszSheetGUI.selectcolumncCsR|j|�\}}|dkrN|j|jdd�|j|tj�ndS)Nrr!)r�r�r�r�r.r/)rr�rr r
r
rr�lszSheetGUI.extendcolumncCs<|j|�\}}|jd|�|jtj|�dS)Nr!)r�r�r�r.r/)rr�rr r
r
rr�rszSheetGUI.selectrowcCsR|j|�\}}|dkrN|jd|jd�|jtj|�ndS)Nrr!)r�r�r�r�r.r/)rr�rr r
r
rr�wszSheetGUI.extendrowcCsD|j|�\}}|dkr@|dkr@|j||�ndS)Nr)r�r�)rr�rr r
r
rr�}szSheetGUI.presscCsD|j|�\}}|dkr@|dkr@|j||�ndS)Nr)r�r�)rr�rr r
r
rr��szSheetGUI.motioncCsi|jj|j|j�}|dk	ret|tj�rey|j|jfSWqet	k
raYqeXndS)Nr)rr)
r�Zwinfo_containingZx_rootZy_rootrLr�r�r�r��AttributeError)rr�rr
r
rr��s
zSheetGUI.whichxycCs|jj|j�dS)N)rhr`r^)rr
r
rr`�sz
SheetGUI.savecCs�|jdk	r|j�n|j�t||�|jd<|j||�|jj�||f|_d|_|j	j
|j�}|dk	r�d|d<ndS)zMake (x, y) the current cell.NrQ�yellowr�)r��change_cell�
clearfocusr�r�r�r�Z	focus_setr�r�r()rrr �gridcellr
r
rr��s


	zSheetGUI.setcurrentc	Csc|jdks$|j||fkr8|j||�dS|j�||f|_|j\}}|jpo|j\}}||kr�||}}n||kr�||}}nxh|jj�D]W\\}}}||ko�|knr�||ko|knr�d|d<q�q�W|jj|j�}|dk	rId|d<n|j||||�dS)NZ	lightBluer�r�)r�r�r�r�r�rKr(�	setbeacon)	rrr r$r%r&r'rr�r
r
rr��s$$
"8
zSheetGUI.setcornercCs#||kodknrD||ko6tjknrDd}n�||fdtjfkr�||krxd|}qd||f}n�||fdtjfkr�||kr�dt|�}qdt|�t|�f}n.t|j�}t|j�}d||f}||jd<dS)Nr!�:z%dz%d:%dz%sz%s:%srQ)r.r/rHr�r�r�r�)rr$r%r&r'�nameZname1Zname2r
r
rr��s;	
zSheetGUI.setbeaconcCs�|jdk	r�|j\}}|jp-|j\}}||krR||}}n||krn||}}nxk|jj�D]W\\}}}||ko�|knr~||ko�|knr~d|d<q~q~WndS)Nr�r�)r�r�r�rK)rr$r%r&r'rr rr
r
rr��s"8zSheetGUI.clearfocuscCs1|j�|j\}}|j||d�dS)zCallback for the Return key.r!r�)r�r�r�)rr�rr r
r
rr��s
zSheetGUI.return_eventcCs:|j�|j\}}|j|td|d��dS)z0Callback for the Return key with Shift modifier.r!r�)r�r�r�r=)rr�rr r
r
rr��s
zSheetGUI.shift_return_eventcCs1|j�|j\}}|j|d|�dS)zCallback for the Tab key.r!r�)r�r�r�)rr�rr r
r
rr��s
zSheetGUI.tab_eventcCs:|j�|j\}}|jtd|d�|�dS)z-Callback for the Tab key with Shift modifier.r!r�)r�r�r�r=)rr�rr r
r
rr��s
zSheetGUI.shift_tab_eventc
Cs�|j\}}|jj�}d}|jd�rLt|dd��}nExBtttfD]1}y||�}Wnw\Yq\Xt|�}Pq\W|dkr�|r�t	|�}n|dkr�|j
j||�n|j
j|||�|j
�dS)z+Set the current cell from the entry widget.Nr�r!)r�r�r(�
startswithr�rtr{r}r�r�rhr+r)r�)rrr rQr�clsryr
r
rr��s$zSheetGUI.change_cellcCs�|jj�x�|jj�D]�\\}}}|dks|dkrMqn|jj||�}|dkr{d|d<qt|d�r�|j�\}}nt|�t}}||d<t	||d<qWdS)z(Fill the GUI cells from the sheet cells.rNrDrQrCZanchor)
rhrr�rKrrrCrJr�align2anchor)rrr r�rrQrRr
r
rr�s
"

z
SheetGUI.syncN)rerfrg�__doc__rr�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
rr��s4-	2	r�cCs�t�}x�tdd�D]�}x�tdd�D]�}|dkrPt|�}nU|dkrkt|�}n:t|d�}td|�}d||f}t|�}|j|||�q/WqW|j�|jd�dS)zBasic non-gui self-test.r!�z%s*%sz
sheet1.xmlN)rr"r�r�r�r)rUr`)�arr rZc1Zc2r�r
r
r�
test_basics	
r�cCsFtjdd�r#tjd}nd}t|�}|jj�dS)z	GUI test.r!Nz
sheet1.xml)r.�argvr�r�Zmainloop)r^�gr
r
r�test_gui2s
r��__main__)#r�r�r�r.Zxml.parsersrZxml.sax.saxutilsrrrrrrr
rMr�rwr�rrrbr�r�r�r�r�r�r�rHZtkinterr�r�r�r�rer
r
r
r�<module>s>�O&3		�C