Your IP : 216.73.216.213


Current Path : /opt/alt/python37/lib64/python3.7/Tools/demo/__pycache__/
Upload File :
Current File : //opt/alt/python37/lib64/python3.7/Tools/demo/__pycache__/ss1.cpython-37.pyc

B

� f#d�@sNdZddlZddlZddlZddlmZddlmZd\ZZ	Z
dd�Zdd	�Zd
d�Z
eee	ee
e
iZede	d	e
d
iZee	e
d�Zede	d	e
diZdd�ZGdd�d�ZGdd�d�ZGdd�d�ZGdd�de�ZGdd�de�ZGdd�de�Zdd �Zd!d"�Zd#d$�Zd%d&�ZddlZGd'd(�d(�Zd)d*�Z d+d,�Z!e"d-k�rJe!�dS).z(
SS1 -- a spreadsheet-like application.
�N)�expat)�escape)�LEFT�CENTER�RIGHTcCs
|�|�S)N)�ljust)�x�n�r
�3/opt/alt/python37/lib64/python3.7/Tools/demo/ss1.pyrsrcCs
|�|�S)N)�center)rr	r
r
rrsrcCs
|�|�S)N)�rjust)rr	r
r
rr
sr
�left�right)rrr�w�ecCs&d}x|D]}|dk	r
||7}q
W|S)Nrr
)�seqZtotalrr
r
r�sums

rc@s�eZdZdd�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).�SheetcCsi|_t|j|jtd�|_dS)N)�cell�cellsr)r�dict�	cellvalue�multicellvaluer�ns)�selfr
r
r�__init__%s
zSheet.__init__cCs*|�||�}t|d�r"|�|j�S|SdS)N�recalc)�getcell�hasattrrr)rr�yrr
r
rr-s
zSheet.cellvaluecCsn||kr||}}||kr$||}}g}x@t||d�D].}x(t||d�D]}|�|�||��qLWq8W|S)N�)�range�appendr)r�x1�y1�x2�y2rr rr
r
rr4s

zSheet.multicellvaluecCs|j�||f�S)N)r�get)rrr r
r
rr?sz
Sheet.getcellcCs4|dkr|dkst�t|t�s"t�||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�	clearcellGszSheet.clearcellcCs&x |�||||�D]}|j|=qWdS)N)�selectcellsr)rr$r%r&r'Zxyr
r
r�
clearcellsMszSheet.clearcellscCs|�d|tj|�dS)Nr)r0�sys�maxsize)rr%r'r
r
r�	clearrowsQszSheet.clearrowscCs|�|d|tj�dS)Nr)r0r1r2)rr$r&r
r
r�clearcolumnsTszSheet.clearcolumnscs>��kr������kr$��������fdd�|jD�S)NcsHg|]@\}}�|kr �krnq�|kr8�krnq||f�qSr
r
)�.0rr )r$r&r%r'r
r�
<listcomp>\sz%Sheet.selectcells.<locals>.<listcomp>)r)rr$r%r&r'r
)r$r&r%r'rr/Ws


zSheet.selectcellsc	Cs�|dkr|dkrdS||kr&||}}||kr8||}}||dkrP||dksTt�i}x�|jD]�\}}	|j||	f}
t|
d�r�|
�||||||�}
||kr�|kr�nn(||	kr�|kr�nn||7}|	|7}	|
|||	f<q`W||_dS)Nr�renumber)r)rrr7)rr$r%r&r'�dx�dy�newrr rr
r
r�	movecells_s"


0zSheet.movecellscCs(|dkst�|�d|tjtjd|�dS)Nr)r)r;r1r2)rr r	r
r
r�
insertrowsrszSheet.insertrowsc	CsF||kr||}}|�||�|�d|dtjtjd||d�dS)Nrr!)r3r;r1r2)rr%r'r
r
r�
deleterowsvs
zSheet.deleterowscCs(|dkst�|�|dtjtj|d�dS)Nr)r)r;r1r2)rrr	r
r
r�
insertcolumns|szSheet.insertcolumnscCsF||kr||}}|�||�|�|ddtjtj||dd�dS)Nr!r)r0r;r1r2)rr$r&r
r
r�
deletecolumns�s
zSheet.deletecolumnscCs8d}}x&|jD]\}}t||�}t||�}qW||fS)Nr)r�max)r�maxx�maxyrr r
r
r�getsize�s

z
Sheet.getsizecCs*x$|j��D]}t|d�r|��qWdS)N�reset)r�valuesrrD)rrr
r
rrD�s
zSheet.resetcCs6|��x(|j��D]}t|d�r|�|j�qWdS)Nr)rDrrErrr)rrr
r
rr�s
zSheet.recalccCsB|��\}}|d|d}}dg|}i}xDtd|�D]6}t|�tf||df<\}}	t||t|��||<q8WxDtd|�D]6}
t|
�tf|d|
f<\}}	t|dt|��|d<q~Wx�|j��D]�\\}}
}|dks�|
dkr�q�t	|d�r�|�
|j�t	|d��r6|��\}}	t
|t��s t�|	tttfk�sTt�nt|�}t
|t��rPt}	nt}	||	f|||
f<t||t|��||<q�Wd}x0t|�D]$}|�r�|d7}|d||7}�q�Wx�t|�D]|}
d}
xVt|�D]J}|�||
f��p�dtf\}}	t|	|||�}|
�r|
d7}
|
|7}
�q�Wt|
�|
dk�r�t|��q�WdS)	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.displaycCsjdg}xN|j��D]@\\}}}t|d�r2|��}ndt|�}|�d|||f�qW|�d�d�|�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	CsH|��}t|ddd��(}|�|�|r:|�d�s:|�d�WdQRXdS)Nrzutf-8)�encodingrX)rW�open�write�endswith)r�filenamerR�fr
r
r�save�s

z
Sheet.savec	Cs(t|d��}t|��|�WdQRXdS)N�rb)r\�SheetParser�	parsefile)rr_r`r
r
r�load�sz
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__cCs.t��}|j|_|j|_|j|_|�|�dS)N)	rZParserCreate�startelementZStartElementHandler�
endelementZEndElementHandler�dataZCharacterDataHandlerZ	ParseFile)rr`�parserr
r
rrd�s
zSheetParser.parsefilecCs&t|d|d�}|r||�g|_dS)NZstart_)�getattr�texts)r�tag�attrs�methodr
r
rrj�szSheetParser.startelementcCs|j�|�dS)N)ror#)rrRr
r
rrl�szSheetParser.datacCs(t|d|d�}|r$|d�|j��dS)NZend_rG)rnrYro)rrprrr
r
rrk�szSheetParser.endelementcCs$t|�d��|_t|�d��|_dS)N�row�col)�intr(r r)rrqr
r
r�
start_cell�szSheetParser.start_cellcCs"|�d�|_t�|�d��|_dS)NrFZalign)r(�fmt�	xml2alignrS)rrqr
r
r�start_value�szSheetParser.start_valuec	Cs2yt|�|_Wnttfk
r,d|_YnXdS)N)ru�value�	TypeError�
ValueError)rrRr
r
r�end_intszSheetParser.end_intc	Cs2yt|�|_Wnttfk
r,d|_YnXdS)N)�floatrzr{r|)rrRr
r
r�
end_double
szSheetParser.end_doublec	Cs2yt|�|_Wnttfk
r,d|_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|_nFt|jt�r@t|j|jp0d|jp8t�|_nt	|j|jpNd|jpVt
�|_dS)Nz%s)r*rzr+rrM�
StringCellrwrSr�NumericCellr)rrRr
r
r�	end_values
zSheetParser.end_valuecCst||jpd|jpt�|_dS)Nz%s)�FormulaCellrwrSrr)rrRr
r
r�end_formula(szSheetParser.end_formulacCs|j�|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@sJeZdZdefdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)r�z%scCs<t|tttf�st�|tttfks&t�||_||_	||_
dS)N)r*rur~r�r)rrrrzrwrS)rrzrwrSr
r
rr>s
zNumericCell.__init__cCs|jS)N)rz)rrr
r
rrEszNumericCell.recalccCs2y|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.xmlcCs2d|jkrdkr$nn
d|jSd|jSdS)Ni�lz
<int>%s</int>z<long>%s</long>)rz)rr
r
r�_xml_intVs
zNumericCell._xml_intcCs
d|jS)Nz<double>%r</double>)rz)rr
r
r�
_xml_float\szNumericCell._xml_floatcCs
d|jS)Nz<complex>%r</complex>)rz)rr
r
r�_xml_complex_szNumericCell._xml_complexN)rfrgrhrrrrFrWr�r�r�r
r
r
rr�<sr�c@s2eZdZdefdd�Zdd�Zdd�Zdd	�Zd
S)r�z%scCs6t|t�st�|tttfks t�||_||_||_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�bsr�c@sBeZdZdefdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)r�z%scCs<|tttfkst�||_t|j�|_||_||_|�	�dS)N)
rrrr)�formula�	translate�
translatedrwrSrD)rr�rwrSr
r
rrzszFormulaCell.__init__cCs
d|_dS)N)rz)rr
r
rrD�szFormulaCell.resetcCsZ|jdkrTyt|j|�|_Wn6t��d}t|d�rD|j|_n
t|�|_YnX|jS)Nrrf)rz�evalr�r1�exc_inforrfrM)rr�excr
r
rr�s


zFormulaCell.recalccCs2y|j|j}Wnt|j�}YnX||jfS)N)rwrzrMrS)rrRr
r
rrF�s
zFormulaCell.formatcCsdt|j|jt|j�fS)Nz,<formula align="%s" format="%s">%s</formula>)r�rSrwrr�)rr
r
rrW�szFormulaCell.xmlcCs�g}x�t�d|j�D]�}t�d|�}	|	dk	r�|	��\}
}t|
�}t|�}
||kr\|kr�nn*||
krt|kr�nnt|||
|�}|�|�qWt	d�
|�|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0zFormulaCell.renumberN)
rfrgrhrrrDrrFrWr7r
r
r
rr�xsr�c	Cs�g}x�t�d|�D]t}t�d|�}|dkr6|�|�q|��\}}}}t|�}|dkrdd||f}nt|�}d||||f}|�|�qWd�|�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|dkst�t|�t|�S)zETranslate a cell coordinate to a fancy cell name (e.g. (1, 1)->'A1').r)r)rKrM)rr r
r
rr��sr�cCsT|��}d}xB|D]:}d|kr*dks0nt�|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�cCsD|dkst�d}x.|r>t|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@s�eZdZdZd6dd�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)7�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
    �
sheet1.xml�
�cCsz||_t�|_tj�|�r&|j�|�|j��\}}t||�}t||�}t	�	�|_
|j
�d|j�t	j|j
ddd�|_
t	�|j
�|_t	j|j
d|jd�|_t	�|j
�|_|jjddd	d
�|j
jdd�|jjd
d�|jjdddd
�|j�d|j�|j�d|j�|j�d|j�|j�d|j�|j�d|j�|j�d|j�|�||�d|_d|_|� dd�|�!�dS)zlConstructor.

        Load the sheet from the filename argument.
        Set up the Tk widget tree.
        zSpreadsheet: %sZA1)Z	helvetica�Zbold)rRZfontZSave)rRZcommandZbottomr!Zboth)�side�expandZfillr)r�rrz<Return>z<Shift-Return>z<Tab>z<Shift-Tab>z<Delete>z<Escape>N)"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__cCsT|j|jkr,|jdk	r,|jj|j|j�n|jj|j�|��|j�dd�dS)Nr�end�break)r�r�rir0r.r�r��delete)r�eventr
r
rr�szSheetGUI.delete_eventcCs|j\}}|�||�dS)N)r��
load_entry)rr�rr r
r
rr�!s
zSheetGUI.escape_eventcCsl|j�||�}|dkrd}n"t|t�r2d|j}n|��\}}|j�dd�|j�d|�|j�	dd�dS)NrG�=rr�)
rirr*r�r�rFr�r��insertZselection_range)rrr rrRrSr
r
rr�%s
zSheetGUI.load_entrycCs||_||_i|_tj|jdd�}|jdddd�|�d|j�x�t	d|d�D]�}|jj
|dd	�tj|jt|�dd
�}|j|ddd�||j|df<||_d|_
|�d|j�|�d|j�|�d
|j�|�d|j�qPWx�t	d|d�D]|}tj|jt|�dd
�}|jd|dd�||jd|f<d|_||_
|�d|j�|�d|j�|�d
|j�|�d|j�q�Wx�t	d|d�D]�}x�t	d|d�D]|}tj|jdddd�}|j||dd�||j||f<||_||_
|�d|j�|�d|j�|�d
|j�|�d|j��q�W�q�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.
        Zraised)�reliefrZNSWE)�columnrsZstickyz<ButtonPress-1>r!�@)Zminsize)rRr�ZWEz<B1-Motion>z<ButtonRelease-1>z<Shift-Button-1>Zsunken�whiteZblack)r��bgZfgN)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 |�dd�|�tjtj�dS)Nr!)r��	setcornerr1r2)rr�r
r
rr�cszSheetGUI.selectallcCs,|�|�\}}|�|d�|�|tj�dS)Nr!)�whichxyr�r�r1r2)rr�rr r
r
rr�gszSheetGUI.selectcolumncCs:|�|�\}}|dkr6|�|jdd�|�|tj�dS)Nrr!)r�r�r�r�r1r2)rr�rr r
r
rr�lszSheetGUI.extendcolumncCs,|�|�\}}|�d|�|�tj|�dS)Nr!)r�r�r�r1r2)rr�rr r
r
rr�rszSheetGUI.selectrowcCs:|�|�\}}|dkr6|�d|jd�|�tj|�dS)Nrr!)r�r�r�r�r1r2)rr�rr r
r
rr�wszSheetGUI.extendrowcCs.|�|�\}}|dkr*|dkr*|�||�dS)Nr)r�r�)rr�rr r
r
rr�}szSheetGUI.presscCs.|�|�\}}|dkr*|dkr*|�||�dS)Nr)r�r�)rr�rr r
r
rr��szSheetGUI.motioncCsL|j�|j|j�}|dk	rHt|tj�rHy|j|jfSt	k
rFYnXdS)N)rr)
r�Zwinfo_containingZx_rootZy_rootr*r�r�r�r��AttributeError)rr�rr
r
rr��szSheetGUI.whichxycCs|j�|j�dS)N)rirar_)rr
r
rra�sz
SheetGUI.savecCsr|jdk	r|��|��t||�|jd<|�||�|j��||f|_d|_|j	�
|j�}|dk	rnd|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	Cs�|jdks|j||fkr(|�||�dS|��||f|_|j\}}|jpN|j\}}||krf||}}||krx||}}xR|j��D]D\\}}}||kr�|kr�nq�||kr�|kr�nq�d|d<q�W|j�|j�}|dk	r�d|d<|�||||�dS)NZ	lightBluer�r�)r�r�r�r�r�rNr(�	setbeacon)	rrr r$r%r&r'rr�r
r
rr��s$



0zSheetGUI.setcornercCs�||krdkr8nn ||kr.tjkr8nnd}n�||fdtjfkrj||kr\d|}q�d||f}n^||fdtjfkr�||kr�dt|�}q�dt|�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��s2


zSheetGUI.setbeaconcCs�|jdk	r�|j\}}|jp|j\}}||kr6||}}||krH||}}xR|j��D]D\\}}}||krt|krTnqT||kr�|krTnqTd|d<qTWdS)Nr�r�)r�r�r�rN)rr$r%r&r'rr rr
r
rr��s



0zSheetGUI.clearfocuscCs&|��|j\}}|�||d�dS)zCallback for the Return key.r!r�)r�r�r�)rr�rr r
r
rr��s
zSheetGUI.return_eventcCs,|��|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_eventcCs&|��|j\}}|�|d|�dS)zCallback for the Tab key.r!r�)r�r�r�)rr�rr r
r
rr��s
zSheetGUI.tab_eventcCs,|��|j\}}|�td|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\}}|j��}d}|�d�r4t|dd��}nFxDtttfD]6}y||�}Wntt	fk
rjw@Yq@Xt
|�}Pq@W|dkr�|r�t|�}|dkr�|j�
||�n|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�|j��x�|j��D]x\\}}}|dks|dkr4q|j�||�}|dkrTd|d<qt|d�rl|��\}}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)r�r�r�)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]r}xltdd�D]^}|dkr8t|�}n:|dkrJt|�}n(t|d�}td|�}d||f}t|�}|�|||�q"WqW|��|�d�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�cCs4tjdd�rtjd}nd}t|�}|j��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>sB
?O&3		D