Your IP : 216.73.216.213


Current Path : /opt/alt/python35/lib64/python3.5/Tools/demo/__pycache__/
Upload File :
Current File : //opt/alt/python35/lib64/python3.5/Tools/demo/__pycache__/ss1.cpython-35.opt-1.pyc



��Yf"d�@s�dZddlZddlZddlZddlmZddlmZdddf\ZZ	Z
dd	�Zd
d�Zdd
�Z
eee	ee
e
iZede	de
diZdede	de
iZede	de
diZdd�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!�dS)/z(
SS1 -- a spreadsheet-like application.
�N)�expat)�escape�LEFT�CENTER�RIGHTcCs
|j|�S)N)�ljust)�x�n�r
�3/opt/alt/python35/lib64/python3.5/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�ecCs1d}x$|D]}|dk	r
||7}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||}}||kr2||}}g}xRt||d�D]=}x4t||d�D]}|j|j||��qfWqLW|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.clearcolumnscsU��kr������kr2��������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||kr5||}}||krN||}}i}x�|jD]�\}}	|j||	f}
t|
d�r�|
j||||||�}
||ko�|knr�||	ko�|knr�||7}|	|7}	|
|||	f<q^W||_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||}}|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||}}|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.getsizecCs7x0|jj�D]}t|d�r|j�qWdS)N�reset)r�valuesrrA)rrr
r
rrA�szSheet.resetcCsG|j�x6|jj�D]%}t|d�r|j|j�qWdS)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|
dkr1qt	|d�rP|j
|j�t	|d�rt|j�\}}	n*t|�}t
|t�r�t}	nt}	||	f|||
f<t||t|��||<qWd}x6t|�D](}|r�|d7}|d||7}q�Wx�t|�D]�}
d}
xlt|�D]^}|j||
f�p^dtf\}}	t|	|||�}|
r�|
d7}
|
|7}
q:Wt|
�|
dkr!t|�q!WdS)	Nr!rr�format��+�-�|)r@r"�colnum2namerr=�len�strr�itemsrrrrC�
isinstancerr(�align2action�print)rr>r?�widthZheightZcolwidthZfullr�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>�
)rrKrrUrr#�join)r�outrr rZcellxmlr
r
rrU�s	"	
z	Sheet.xmlc	Cs_|j�}t|ddd��7}|j|�|rT|jd�rT|jd�WdQRXdS)Nr�encodingzutf-8rV)rU�open�write�endswith)r�filenamerP�fr
r
r�save�s

z
Sheet.savec	Cs0t|d��}t|�j|�WdQRXdS)N�rb)rZ�SheetParser�	parsefile)rr]r^r
r
r�load�sz
Sheet.loadN)�__name__�
__module__�__qualname__rrrrr)r+r-r0r1r,r8r9r:r;r<r@rArrTrUr_rcr
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)racCs
||_dS)N)�sheet)rrgr
r
rr�szSheetParser.__init__cCsAtj�}|j|_|j|_|j|_|j|�dS)N)	rZParserCreate�startelementZStartElementHandler�
endelementZEndElementHandler�dataZCharacterDataHandlerZ	ParseFile)rr^�parserr
r
rrb�s
zSheetParser.parsefilecCs3t|d|d�}|r&||�g|_dS)NZstart_)�getattr�texts)r�tag�attrs�methodr
r
rrh�s
zSheetParser.startelementcCs|jj|�dS)N)rmr#)rrPr
r
rrj�szSheetParser.datacCs6t|d|d�}|r2|dj|j��dS)NZend_rD)rlrWrm)rrnrpr
r
rri�szSheetParser.endelementcCs4t|jd��|_t|jd��|_dS)N�row�col)�intr(r r)rror
r
r�
start_cell�szSheetParser.start_cellcCs1|jd�|_tj|jd��|_dS)NrCZalign)r(�fmt�	xml2alignrQ)rror
r
r�start_value�szSheetParser.start_valuecCs;yt|�|_Wn!ttfk
r6d|_YnXdS)N)rs�value�	TypeError�
ValueError)rrPr
r
r�end_intszSheetParser.end_intcCs;yt|�|_Wn!ttfk
r6d|_YnXdS)N)�floatrxryrz)rrPr
r
r�
end_double
szSheetParser.end_doublecCs;yt|�|_Wn!ttfk
r6d|_YnXdS)N)�complexrxryrz)rrPr
r
r�end_complexszSheetParser.end_complexcCs
||_dS)N)rx)rrPr
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)rLrx�BaseCellrrJ�
StringCellrurQr�NumericCellr)rrPr
r
r�	end_values		zSheetParser.end_valuecCs+t||jpd|jpt�|_dS)Nz%s)�FormulaCellrurQrr)rrPr
r
r�end_formula(szSheetParser.end_formulacCs#|jj|j|j|j�dS)N)rgr)rr r)rrPr
r
r�end_cell-szSheetParser.end_cellN)rdrerfrrbrhrjrirtrwZ
start_formular{Zend_longr}rr�r�r�r�r
r
r
rra�s rac@seZdZdZdS)r�N)rdrerfrr
r
r
rr�0s	r�c@sjeZdZdedd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)r�z%scCs||_||_||_dS)N)rxrurQ)rrxrurQr
r
rr>s		zNumericCell.__init__cCs|jS)N)rx)rrr
r
rrEszNumericCell.recalcc	Cs;y|j|j}Wnt|j�}YnX||jfS)N)rurxrJrQ)rrPr
r
rrCHs
zNumericCell.formatcCs=t|dt|j�j�}dt|j|j|�fS)NZ_xml_z(<value align="%s" format="%s">%s</value>)rl�typerxrd�	align2xmlrQru)rrpr
r
rrUOs

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

zStringCell.xmlN)rdrerfrrrrCrUr
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�
translatedrurQrA)rr�rurQr
r
rrzs
			zFormulaCell.__init__cCs
d|_dS)N)rx)rr
r
rrA�szFormulaCell.resetc	Csw|jdkrpyt|j|�|_WnEtj�d}t|d�r\|j|_nt|�|_YnX|jS)Nrrd)rx�evalr�r.�exc_inforrdrJ)rr�excr
r
rr�szFormulaCell.recalcc	Cs;y|j|j}Wnt|j�}YnX||jfS)N)rurxrJrQ)rrPr
r
rrC�s
zFormulaCell.formatcCs$dt|j|jt|j�fS)Nz,<formula align="%s" format="%s">%s</formula>)r�rQrurr�)rr
r
rrU�s
zFormulaCell.xmlcCs�g}x�tjd|j�D]�}tjd|�}	|	dk	r�|	j�\}
}t|
�}t|�}
||ko�|knr�||
ko�|knr�t|||
|�}|j|�qWt	dj
|�|j|j�S)Nz(\w+)z^([A-Z]+)([1-9][0-9]*)$rD)
�re�splitr��match�groups�colname2numrs�cellnamer#r�rWrurQ)rr$r%r&r'r5r6rX�part�mZsxZsyrr r
r
rr4�s8zFormulaCell.renumberN)
rdrerfrrrArrCrUr4r
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�rW)	r�rXr�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|�r7|jj|�|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: %srPZA1Zfont�	helvetica��boldZSaveZcommandZsideZbottom�expandr!ZfillZbothrrrz<Return>z<Shift-Return>z<Tab>z<Shift-Tab>z<Delete>z<Escape>N)r�r�r�)"r]rrg�os�path�isfilercr@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�rgr-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�)
rgrrLr�r�rCr�r��insertZselection_range)rrr rrPrQr
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�columnrrqZstickyZNSWEz<ButtonPress-1>r!Zminsize�@rPZWEz<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.selectcolumncCsO|j|�\}}|dkrK|j|jdd�|j|tj�dS)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.selectrowcCsO|j|�\}}|dkrK|jd|jd�|jtj|�dS)Nrr!)r�r�r�r�r.r/)rr�rr r
r
rr�wszSheetGUI.extendrowcCsA|j|�\}}|dkr=|dkr=|j||�dS)Nr)r�r�)rr�rr r
r
rr�}szSheetGUI.presscCsA|j|�\}}|dkr=|dkr=|j||�dS)Nr)r�r�)rr�rr r
r
rr��szSheetGUI.motioncCsf|jj|j|j�}|dk	rbt|tj�rby|j|jfSWnt	k
raYnXdS)Nr)rr)
r�Zwinfo_containingZx_rootZy_rootrLr�r�r�r��AttributeError)rr�rr
r
rr��s
zSheetGUI.whichxycCs|jj|j�dS)N)rgr_r])rr
r
rr_�sz
SheetGUI.savecCs�|jdk	r|j�|j�t||�|jd<|j||�|jj�||f|_d|_|j	j
|j�}|dk	r�d|d<dS)zMake (x, y) the current cell.NrP�yellowr�)r��change_cell�
clearfocusr�r�r�r�Z	focus_setr�r�r()rrr �gridcellr
r
rr��s


	zSheetGUI.setcurrentc	CsW|jdks$|j||fkr8|j||�dS|j�||f|_|j\}}|jpo|j\}}||kr�||}}||kr�||}}xe|jj�D]T\\}}}||ko�|knr�||ko�|knr�d|d<q�W|jj|j�}|dk	r=d|d<|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:%srP)r.r/rHr�r�r�r�)rr$r%r&r'�nameZname1Zname2r
r
rr��s;	
zSheetGUI.setbeaconcCs�|jdk	r�|j\}}|jp-|j\}}||krO||}}||krh||}}xe|jj�D]T\\}}}||ko�|knrx||ko�|knrxd|d<qxWdS)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��}nUxRtttfD]A}y||�}Wntt	fk
r�w\Yq\Xt
|�}Pq\W|dkr�|r�t|�}|dkr�|jj
||�n|jj|||�|j�dS)z+Set the current cell from the entry widget.Nr�r!)r�r�r(�
startswithr�rsr|r~ryrzr�r�rgr+r)r�)rrr rPr�clsrxr
r
rr��s$zSheetGUI.change_cellcCs�|jj�x�|jj�D]�\\}}}|dks|dkrJq|jj||�}|dkrxd|d<qt|d�r�|j�\}}nt|�t}}||d<t	||d<qWdS)z(Fill the GUI cells from the sheet cells.rNrDrPrCZanchor)
rgrr�rKrrrCrJr�align2anchor)rrr r�rrPrQr
r
rr�s
"

z
SheetGUI.syncN)rdrerf�__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)rTr_)�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�rvr�rrrar�r�r�r�r�r�r�rHZtkinterr�r�r�r�rdr
r
r
r�<module>s>�O&3		�C