Your IP : 216.73.216.196


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.opt-1.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.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�	clearcellGszSheet.clearcellcCs&x |�||||�D]}|j|=qWdS)N)�selectcellsr)rr$r%r&r'Zxyr
r
r�
clearcellsMszSheet.clearcellscCs|�d|tj|�dS)Nr)r-�sys�maxsize)rr%r'r
r
r�	clearrowsQszSheet.clearrowscCs|�|d|tj�dS)Nr)r-r.r/)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||}}i}x�|jD]�\}}	|j||	f}
t|
d�rx|
�||||||�}
||kr�|kr�nn(||	kr�|kr�nn||7}|	|7}	|
|||	f<qDW||_dS)Nr�renumber)rrr4)rr$r%r&r'�dx�dy�newrr rr
r
r�	movecells_s 


0zSheet.movecellscCs|�d|tjtjd|�dS)Nr)r8r.r/)rr r	r
r
r�
insertrowsrszSheet.insertrowsc	CsF||kr||}}|�||�|�d|dtjtjd||d�dS)Nrr!)r0r8r.r/)rr%r'r
r
r�
deleterowsvs
zSheet.deleterowscCs|�|dtjtj|d�dS)Nr)r8r.r/)rrr	r
r
r�
insertcolumns|szSheet.insertcolumnscCsF||kr||}}|�||�|�|ddtjtj||dd�dS)Nr!r)r-r8r.r/)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�valuesrrA)rrr
r
rrA�s
zSheet.resetcCs6|��x(|j��D]}t|d�r|�|j�qWdS)Nr)rArrBrrr)rrr
r
rr�s
zSheet.recalccCs|��\}}|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��r|��\}}	nt|�}t
|t��r,t}	nt}	||	f|||
f<t||t|��||<q�Wd}x0t|�D]$}|�rz|d7}|d||7}�qhWx�t|�D]|}
d}
xVt|�D]J}|�||
f��p�dtf\}}	t|	|||�}|
�r�|
d7}
|
|7}
�q�Wt|
�|
dk�r�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.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>�
)rrKrrUrr#�join)r�outrr rZcellxmlr
r
rrU�s


z	Sheet.xmlc	CsH|��}t|ddd��(}|�|�|r:|�d�s:|�d�WdQRXdS)Nrzutf-8)�encodingrV)rU�open�write�endswith)r�filenamerP�fr
r
r�save�s

z
Sheet.savec	Cs(t|d��}t|��|�WdQRXdS)N�rb)rZ�SheetParser�	parsefile)rr]r^r
r
r�load�sz
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__cCs.t��}|j|_|j|_|j|_|�|�dS)N)	rZParserCreate�startelementZStartElementHandler�
endelementZEndElementHandler�dataZCharacterDataHandlerZ	ParseFile)rr^�parserr
r
rrb�s
zSheetParser.parsefilecCs&t|d|d�}|r||�g|_dS)NZstart_)�getattr�texts)r�tag�attrs�methodr
r
rrh�szSheetParser.startelementcCs|j�|�dS)N)rmr#)rrPr
r
rrj�szSheetParser.datacCs(t|d|d�}|r$|d�|j��dS)NZend_rD)rlrWrm)rrnrpr
r
rri�szSheetParser.endelementcCs$t|�d��|_t|�d��|_dS)N�row�col)�intr(r r)rror
r
r�
start_cell�szSheetParser.start_cellcCs"|�d�|_t�|�d��|_dS)NrCZalign)r(�fmt�	xml2alignrQ)rror
r
r�start_value�szSheetParser.start_valuec	Cs2yt|�|_Wnttfk
r,d|_YnXdS)N)rs�value�	TypeError�
ValueError)rrPr
r
r�end_intszSheetParser.end_intc	Cs2yt|�|_Wnttfk
r,d|_YnXdS)N)�floatrxryrz)rrPr
r
r�
end_double
szSheetParser.end_doublec	Cs2yt|�|_Wnttfk
r,d|_YnXdS)N)�complexrxryrz)rrPr
r
r�end_complexszSheetParser.end_complexcCs
||_dS)N)rx)rrPr
r
r�
end_stringszSheetParser.end_stringcCs`t|jt�r|j|_nFt|jt�r@t|j|jp0d|jp8t�|_nt	|j|jpNd|jpVt
�|_dS)Nz%s)rLrx�BaseCellrrJ�
StringCellrurQr�NumericCellr)rrPr
r
r�	end_values
zSheetParser.end_valuecCst||jpd|jpt�|_dS)Nz%s)�FormulaCellrurQrr)rrPr
r
r�end_formula(szSheetParser.end_formulacCs|j�|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@sJeZdZdefdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS)r�z%scCs||_||_||_dS)N)rxrurQ)rrxrurQr
r
rr>szNumericCell.__init__cCs|jS)N)rx)rrr
r
rrEszNumericCell.recalccCs2y|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.xmlcCs2d|jkrdkr$nn
d|jSd|jSdS)Ni�lz
<int>%s</int>z<long>%s</long>)rx)rr
r
r�_xml_intVs
zNumericCell._xml_intcCs
d|jS)Nz<double>%r</double>)rx)rr
r
r�
_xml_float\szNumericCell._xml_floatcCs
d|jS)Nz<complex>%r</complex>)rx)rr
r
r�_xml_complex_szNumericCell._xml_complexN)rdrerfrrrrCrUr�r�r�r
r
r
rr�<sr�c@s2eZdZdefdd�Zdd�Zdd�Zdd	�Zd
S)r�z%scCs||_||_||_dS)N)rPrurQ)rrPrurQr
r
rrdszStringCell.__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�bsr�c@sBeZdZdefdd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS)r�z%scCs*||_t|j�|_||_||_|��dS)N)�formula�	translate�
translatedrurQrA)rr�rurQr
r
rrzs
zFormulaCell.__init__cCs
d|_dS)N)rx)rr
r
rrA�szFormulaCell.resetcCsZ|jdkrTyt|j|�|_Wn6t��d}t|d�rD|j|_n
t|�|_YnX|jS)Nrrd)rx�evalr�r.�exc_inforrdrJ)rr�excr
r
rr�s


zFormulaCell.recalccCs2y|j|j}Wnt|j�}YnX||jfS)N)rurxrJrQ)rrPr
r
rrC�s
zFormulaCell.formatcCsdt|j|jt|j�fS)Nz,<formula align="%s" format="%s">%s</formula>)r�rQrurr�)rr
r
rrU�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]*)$rD)
�re�splitr��match�groups�colname2numrs�cellnamer#r�rWrurQ)rr$r%r&r'r5r6rX�part�mZsxZsyrr r
r
rr4�s0zFormulaCell.renumberN)
rdrerfrrrArrCrUr4r
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)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�cCs:|��}d}x(|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�cCs8d}x.|r2t|dd�\}}t|td��|}qW|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@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)rPZfontZSave)rPZcommandZbottomr!Zboth)�side�expandZfillr)r�rrz<Return>z<Shift-Return>z<Tab>z<Shift-Tab>z<Delete>z<Escape>N)"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__cCsT|j|jkr,|jdk	r,|jj|j|j�n|jj|j�|��|j�dd�dS)Nr�end�break)r�r�rgr-r+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)NrD�=rr�)
rgrrLr�r�rCr�r��insertZselection_range)rrr rrPrQr
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)�columnrqZstickyz<ButtonPress-1>r!�@)Zminsize)rPr�ZWEz<B1-Motion>z<ButtonRelease-1>z<Shift-Button-1>Zsunken�whiteZblack)r��bgZfgN)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 |�dd�|�tjtj�dS)Nr!)r��	setcornerr.r/)rr�r
r
rr�cszSheetGUI.selectallcCs,|�|�\}}|�|d�|�|tj�dS)Nr!)�whichxyr�r�r.r/)rr�rr r
r
rr�gszSheetGUI.selectcolumncCs:|�|�\}}|dkr6|�|jdd�|�|tj�dS)Nrr!)r�r�r�r�r.r/)rr�rr r
r
rr�lszSheetGUI.extendcolumncCs,|�|�\}}|�d|�|�tj|�dS)Nr!)r�r�r�r.r/)rr�rr r
r
rr�rszSheetGUI.selectrowcCs:|�|�\}}|dkr6|�d|jd�|�tj|�dS)Nrr!)r�r�r�r�r.r/)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_rootrLr�r�r�r��AttributeError)rr�rr
r
rr��szSheetGUI.whichxycCs|j�|j�dS)N)rgr_r])rr
r
rr_�sz
SheetGUI.savecCsr|jdk	r|��|��t||�|jd<|�||�|j��||f|_d|_|j	�
|j�}|dk	rnd|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	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�rKr(�	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:%srP)r.r/rHr�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�rK)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�rsr|r~ryrzr�r�rgr+r)r�)rrr rPr�clsrxr
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.rNrDrPrCZanchor)
rgrr�rKrrrCrJr�align2anchor)rrr r�rrPrQr
r
rr�s


z
SheetGUI.syncN)r�r�r�)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]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)rTr_)�arr rZc1Zc2r�r
r
r�
test_basics



r�cCs4tjdd�rtjd}nd}t|�}|j��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>sB
?O&3		D