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.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.getcellcCsJ|dkr|dkst�t|t�s3t�||j||f<dS)Nr)�AssertionError�
isinstance�BaseCellr)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)r0�sys�maxsize)rr%r'r
r
r�	clearrowsQszSheet.clearrowscCs|j|d|tj�dS)Nr)r0r1r2)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||}}||dkrn||dkstt�i}x�|jD]�\}}	|j||	f}
t|
d�r�|
j||||||�}
||ko�|knr||	ko|knr||7}|	|7}	|
|||	f<q�W||_dS)Nr�renumber)r)rrr7)rr$r%r&r'�dx�dy�newrr rr
r
r�	movecells_s"

&8

zSheet.movecellscCs8|dkst�|jd|tjtjd|�dS)Nr)r)r;r1r2)rr r	r
r
r�
insertrowsrszSheet.insertrowscCs[||kr||}}|j||�|jd|dtjtjd||d�dS)Nrr!)r3r;r1r2)rr%r'r
r
r�
deleterowsvs
zSheet.deleterowscCs8|dkst�|j|dtjtj|d�dS)Nr)r)r;r1r2)rrr	r
r
r�
insertcolumns|szSheet.insertcolumnscCs[||kr||}}|j||�|j|ddtjtj||dd�dS)Nr!r)r0r;r1r2)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�valuesrrD)rrr
r
rrD�szSheet.resetcCsG|j�x6|jj�D]%}t|d�r|j|j�qWdS)Nr)rDrrErrr)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�r�|j�\}}	t
|t�s�t�|	tttfks�t�n*t|�}t
|t�r�t}	nt}	||	f|||
f<t||t|��||<qWd}x6t|�D](}|r.|d7}|d||7}qWx�t|�D]�}
d}
xlt|�D]^}|j||
f�p�dtf\}}	t|	|||�}|
r�|
d7}
|
|7}
qjWt|
�|
dkrQt|�qQWdS)	Nr!rr�format��+�-�|)rCr"�colnum2namerr@�len�strr�itemsrrrrFr*r)rrr(�align2action�print)rrArB�widthZheightZcolwidthZfullr�text�	alignmentr r�sep�liner
r
r�display�sR
&!&!"	!
'

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>�
)rrNrrWrr#�join)r�outrr rZcellxmlr
r
rrW�s	"	
z	Sheet.xmlc	Cs_|j�}t|ddd��7}|j|�|rT|jd�rT|jd�WdQRXdS)Nr�encodingzutf-8rX)rW�open�write�endswith)r�filenamerR�fr
r
r�save�s

z
Sheet.savec	Cs0t|d��}t|�j|�WdQRXdS)N�rb)r\�SheetParser�	parsefile)rr_r`r
r
r�load�sz
Sheet.loadN)�__name__�
__module__�__qualname__rrrrr,r.r0r3r4r/r;r<r=r>r?rCrDrrVrWrarer
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)rccCs
||_dS)N)�sheet)rrir
r
rr�szSheetParser.__init__cCsAtj�}|j|_|j|_|j|_|j|�dS)N)	rZParserCreate�startelementZStartElementHandler�
endelementZEndElementHandler�dataZCharacterDataHandlerZ	ParseFile)rr`�parserr
r
rrd�s
zSheetParser.parsefilecCs3t|d|d�}|r&||�g|_dS)NZstart_)�getattr�texts)r�tag�attrs�methodr
r
rrj�s
zSheetParser.startelementcCs|jj|�dS)N)ror#)rrRr
r
rrl�szSheetParser.datacCs6t|d|d�}|r2|dj|j��dS)NZend_rG)rnrYro)rrprrr
r
rrk�szSheetParser.endelementcCs4t|jd��|_t|jd��|_dS)N�row�col)�intr(r r)rrqr
r
r�
start_cell�szSheetParser.start_cellcCs1|jd�|_tj|jd��|_dS)NrFZalign)r(�fmt�	xml2alignrS)rrqr
r
r�start_value�szSheetParser.start_valuecCs;yt|�|_Wn!ttfk
r6d|_YnXdS)N)ru�value�	TypeError�
ValueError)rrRr
r
r�end_intszSheetParser.end_intcCs;yt|�|_Wn!ttfk
r6d|_YnXdS)N)�floatrzr{r|)rrRr
r
r�
end_double
szSheetParser.end_doublecCs;yt|�|_Wn!ttfk
r6d|_YnXdS)N)�complexrzr{r|)rrRr
r
r�end_complexszSheetParser.end_complexcCs
||_dS)N)rz)rrRr
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)r*rzr+rrM�
StringCellrwrSr�NumericCellr)rrRr
r
r�	end_values		zSheetParser.end_valuecCs+t||jpd|jpt�|_dS)Nz%s)�FormulaCellrwrSrr)rrRr
r
r�end_formula(szSheetParser.end_formulacCs#|jj|j|j|j�dS)N)rir,rr r)rrRr
r
r�end_cell-szSheetParser.end_cellN)rfrgrhrrdrjrlrkrvryZ
start_formular}Zend_longrr�r�r�r�r�r
r
r
rrc�s rcc@seZdZdZdS)r+N)rfrgrhrr
r
r
rr+0s	r+c@sjeZdZdedd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)r�z%scCsXt|tttf�st�|tttfks9t�||_||_	||_
dS)N)r*rur~r�r)rrrrzrwrS)rrzrwrSr
r
rr>s
		zNumericCell.__init__cCs|jS)N)rz)rrr
r
rrEszNumericCell.recalcc	Cs;y|j|j}Wnt|j�}YnX||jfS)N)rwrzrMrS)rrRr
r
rrFHs
zNumericCell.formatcCs=t|dt|j�j�}dt|j|j|�fS)NZ_xml_z(<value align="%s" format="%s">%s</value>)rn�typerzrf�	align2xmlrSrw)rrrr
r
rrWOs

zNumericCell.xmlcCs9d|jkodknr*d|jSd|jSdS)N��z
<int>%s</int>z<long>%s</long>li�l)rz)rr
r
r�_xml_intVszNumericCell._xml_intcCsd|jS)Nz<double>%r</double>)rz)rr
r
r�
_xml_float\szNumericCell._xml_floatcCsd|jS)Nz<complex>%r</complex>)rz)rr
r
r�_xml_complex_szNumericCell._xml_complexN)rfrgrhrrrrFrWr�r�r�r
r
r
rr�<sr�c@sFeZdZdedd�Zdd�Zdd�Zdd	�Zd
S)r�z%scCsOt|t�st�|tttfks0t�||_||_||_dS)N)	r*rMr)rrrrRrwrS)rrRrwrSr
r
rrds
		zStringCell.__init__cCs|jS)N)rR)rrr
r
rrkszStringCell.recalccCs|j|jfS)N)rRrS)rr
r
rrFnszStringCell.formatcCs*d}|t|j|jt|j�fS)Nz9<value align="%s" format="%s"><string>%s</string></value>)r�rSrwrrR)r�sr
r
rrWqs

zStringCell.xmlN)rfrgrhrrrrFrWr
r
r
rr�bsr�c@s^eZdZdedd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)r�z%scCsV|tttfkst�||_t|j�|_||_||_|j	�dS)N)
rrrr)�formula�	translate�
translatedrwrSrD)rr�rwrSr
r
rrzs			zFormulaCell.__init__cCs
d|_dS)N)rz)rr
r
rrD�szFormulaCell.resetc	Csw|jdkrpyt|j|�|_WnEtj�d}t|d�r\|j|_nt|�|_YnX|jS)Nrrf)rz�evalr�r1�exc_inforrfrM)rr�excr
r
rr�szFormulaCell.recalcc	Cs;y|j|j}Wnt|j�}YnX||jfS)N)rwrzrMrS)rrRr
r
rrF�s
zFormulaCell.formatcCs$dt|j|jt|j�fS)Nz,<formula align="%s" format="%s">%s</formula>)r�rSrwrr�)rr
r
rrW�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]*)$rG)
�re�splitr��match�groups�colname2numru�cellnamer#r�rYrwrS)rr$r%r&r'r8r9rZ�part�mZsxZsyrr r
r
rr7�s8zFormulaCell.renumberN)
rfrgrhrrrDrrFrWr7r
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)rG)r�r�r�r#r�r�rY)	r�rZr�r�r$r%r&r'r�r
r
rr��sr�cCs&|dkst�t|�t|�S)zETranslate a cell coordinate to a fancy cell name (e.g. (1, 1)->'A1').r)r)rKrM)rr r
r
rr��sr�cCsk|j�}d}xR|D]J}d|ko6dknsAt�|dt|�td�d}qW|S)zCTranslate a column name to number (e.g. 'A'->1, 'Z'->26, 'AA'->27).r�A�Z�r!)�upperr)�ord)r�r	�cr
r
rr��s
"&r�cCs\|dkst�d}x=|rWt|dd�\}}t|td��|}qW|S)z6Translate a column number to name (e.g. 1->'A', etc.).rrGr!r�r�)r)�divmod�chrr�)r	r�r�r
r
rrK�s	rKc@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: %srRZA1Zfont�	helvetica��boldZSaveZcommandZsideZbottom�expandr!ZfillZbothrrrz<Return>z<Shift-Return>z<Tab>z<Shift-Tab>z<Delete>z<Escape>N)r�r�r�)"r_rri�os�path�isfilererCr@�Tk�rootZwm_title�Label�beaconZEntry�entryZButtonraZ
savebuttonZFrame�cellgridZpack�bind�return_event�shift_return_event�	tab_event�shift_tab_event�delete_event�escape_event�makegrid�	currentxy�cornerxy�
setcurrent�sync)rr_�rows�columnsrArBr
r
rr�s<			zSheetGUI.__init__cCsr|j|jkr>|jdk	r>|jj|j|j�n|jj|j�|j�|jjdd�dS)Nr�end�break)r�r�rir0r.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)NrG�=rr�)
rirr*r�r�rFr�r��insertZselection_range)rrr rrRrSr
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�columnrrsZstickyZNSWEz<ButtonPress-1>r!Zminsize�@rRZWEz<B1-Motion>z<ButtonRelease-1>z<Shift-Button-1>Zsunken�bg�whiteZfgZblackN)r�r��	gridcellsr�r�r�Zgrid_configurer��	selectallr"Zgrid_columnconfigurerK�_SheetGUI__x�_SheetGUI__y�selectcolumn�extendcolumnrM�	selectrow�	extendrow�press�motion�release)rr�r�rrr r
r
rr�1sN			$		$				zSheetGUI.makegridcCs*|jdd�|jtjtj�dS)Nr!)r��	setcornerr1r2)rr�r
r
rr�cszSheetGUI.selectallcCs<|j|�\}}|j|d�|j|tj�dS)Nr!)�whichxyr�r�r1r2)rr�rr r
r
rr�gszSheetGUI.selectcolumncCsO|j|�\}}|dkrK|j|jdd�|j|tj�dS)Nrr!)r�r�r�r�r1r2)rr�rr r
r
rr�lszSheetGUI.extendcolumncCs<|j|�\}}|jd|�|jtj|�dS)Nr!)r�r�r�r1r2)rr�rr r
r
rr�rszSheetGUI.selectrowcCsO|j|�\}}|dkrK|jd|jd�|jtj|�dS)Nrr!)r�r�r�r�r1r2)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_rootr*r�r�r�r��AttributeError)rr�rr
r
rr��s
zSheetGUI.whichxycCs|jj|j�dS)N)rirar_)rr
r
rra�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.NrR�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�rNr(�	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:%srR)r1r2rKr�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�rN)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�rur~r�r{r|r�r�rir.r,r�)rrr rRr�clsrzr
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.rNrGrRrFZanchor)
rirr�rNrrrFrMr�align2anchor)rrr r�rrRrSr
r
rr�s
"

z
SheetGUI.syncN)rfrgrh�__doc__rr�r�r�r�r�r�r�r�r�r�r�r�r�rar�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,rVra)�arr rZc1Zc2r�r
r
r�
test_basics	
r�cCsFtjdd�r#tjd}nd}t|�}|jj�dS)z	GUI test.r!Nz
sheet1.xml)r1�argvr�r�Zmainloop)r_�gr
r
r�test_gui2s
r��__main__)#r�r�r�r1Zxml.parsersrZxml.sax.saxutilsrrrrrrr
rOr�rxr�rrrcr+r�r�r�r�r�r�rKZtkinterr�r�r�r�rfr
r
r
r�<module>s>�O&3		�C