Your IP : 216.73.216.213


Current Path : /opt/alt/python33/lib64/python3.3/Tools/demo/__pycache__/
Upload File :
Current File : //opt/alt/python33/lib64/python3.3/Tools/demo/__pycache__/ss1.cpython-33.pyo

�
��f�cc@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(/u(
SS1 -- a spreadsheet-like application.
iN(uexpat(uescapeuLEFTuCENTERuRIGHTcCs
|j|�S(N(uljust(uxun((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuljustsuljustcCs
|j|�S(N(ucenter(uxun((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyucentersucentercCs
|j|�S(N(urjust(uxun((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyurjustsurjustulefturightuwuecCs4d}x'|D]}|dk	r
||7}q
q
W|S(Ni(uNone(usequtotalux((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyusums

usumcBs|EeZdZdd�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(.uSheetcCs1i|_td|jd|jdt�|_dS(Nucellucellsusum(ucellsudictu	cellvalueumulticellvalueusumuns(uself((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu__init__%s
			uSheet.__init__cCs9|j||�}t|d�r1|j|j�S|SdS(Nurecalc(ugetcelluhasattrurecalcuns(uselfuxuyucell((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu	cellvalue-suSheet.cellvaluecCs�||kr||}}n||kr8||}}ng}xRt||d�D]=}x4t||d�D]}|j|j||��qlWqRW|S(Ni(urangeuappendu	cellvalue(uselfux1uy1ux2uy2usequyux((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyumulticellvalue4s!uSheet.multicellvaluecCs|jj||f�S(N(ucellsuget(uselfuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyugetcell?su
Sheet.getcellcCs||j||f<dS(N(ucells(uselfuxuyucell((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyusetcellBsu
Sheet.setcellcCs-y|j||f=Wntk
r(YnXdS(N(ucellsuKeyError(uselfuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu	clearcellGs
uSheet.clearcellcCs1x*|j||||�D]}|j|=qWdS(N(uselectcellsucells(uselfux1uy1ux2uy2uxy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
clearcellsMsuSheet.clearcellscCs|jd|tj|�dS(Ni(u
clearcellsusysumaxsize(uselfuy1uy2((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu	clearrowsQsuSheet.clearrowscCs|j|d|tj�dS(Ni(u
clearcellsusysumaxsize(uselfux1ux2((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuclearcolumnsTsuSheet.clearcolumnscs[��kr����n��kr8����n����fdd�|jD�S(NcsZg|]P\}}�|ko)�knr�|koE�knr||f�qS(((u.0uxuy(ux1ux2uy1uy2(u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
<listcomp>\s		u%Sheet.selectcells.<locals>.<listcomp>(ucells(uselfux1uy1ux2uy2((ux1ux2uy1uy2u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuselectcellsWs
uSheet.selectcellsc	Cs#|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(Niurenumber(ucellsuhasattrurenumber(uselfux1uy1ux2uy2udxudyunewuxuyucell((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu	movecells_s !8

uSheet.movecellscCs&|jd|tjtjd|�dS(Ni(u	movecellsusysumaxsize(uselfuyun((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
insertrowsrsuSheet.insertrowscCs^||kr||}}n|j||�|jd|dtjtjd||d�dS(Nii(u	clearrowsu	movecellsusysumaxsize(uselfuy1uy2((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
deleterowsvsuSheet.deleterowscCs&|j|dtjtj|d�dS(Ni(u	movecellsusysumaxsize(uselfuxun((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
insertcolumns|suSheet.insertcolumnscCs^||kr||}}n|j||�|j|ddtjtj||dd�dS(Nii(u
clearcellsu	movecellsusysumaxsize(uselfux1ux2((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
deletecolumns�suSheet.deletecolumnscCsLd}}x5|jD]*\}}t||�}t||�}qW||fS(Ni(ucellsumax(uselfumaxxumaxyuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyugetsize�s

u
Sheet.getsizecCs:x3|jj�D]"}t|d�r|j�qqWdS(Nureset(ucellsuvaluesuhasattrureset(uselfucell((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyureset�suSheet.resetcCsJ|j�x9|jj�D](}t|d�r|j|j�qqWdS(Nurecalc(uresetucellsuvaluesuhasattrurecalcuns(uselfucell((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyurecalc�s
u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(	Niiurecalcuformatuu+u-u|(ugetsizeurangeucolnum2nameuRIGHTumaxulenustrucellsuitemsuhasattrurecalcunsuformatu
isinstanceuLEFTugetualign2actionuprint(uselfumaxxumaxyuwidthuheightucolwidthufulluxutextu	alignmentuyucellusepuline((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyudisplay�sP
&!&!"	!
'

u
Sheet.displaycCs�dg}xk|jj�D]Z\\}}}t|d�rI|j�}ndt|�}|jd|||f�qW|jd�dj|�S(Nu
<spreadsheet>uxmlu<value>%s</value>u%<cell row="%s" col="%s">
  %s
</cell>u</spreadsheet>u
(ucellsuitemsuhasattruxmluescapeuappendujoin(uselfuoutuxuyucellucellxml((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuxml�s	"	
u	Sheet.xmlc
Csa|j�}t|ddd��:}|j|�|rW|jd�rW|jd�nWdQXdS(Nuwuencodinguutf-8u
(uxmluopenuwriteuendswith(uselfufilenameutextuf((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyusave�s

u
Sheet.savec	Cs/t|d��}t|�j|�WdQXdS(Nurb(uopenuSheetParseru	parsefile(uselfufilenameuf((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuload�su
Sheet.loadN(u__name__u
__module__u__qualname__u__init__u	cellvalueumulticellvalueugetcellusetcellu	clearcellu
clearcellsu	clearrowsuclearcolumnsuselectcellsu	movecellsu
insertrowsu
deleterowsu
insertcolumnsu
deletecolumnsugetsizeureseturecalcudisplayuxmlusaveuload(u
__locals__((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuSheet#s,2uSheetcBs�|EeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	e	Z
dd�ZeZdd�Z
dd�Zdd�Zdd�Zdd�Zdd�ZdS(uSheetParsercCs
||_dS(N(usheet(uselfusheet((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu__init__�suSheetParser.__init__cCsAtj�}|j|_|j|_|j|_|j|�dS(N(	uexpatuParserCreateustartelementuStartElementHandleru
endelementuEndElementHandlerudatauCharacterDataHandleru	ParseFile(uselfufuparser((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu	parsefile�s
uSheetParser.parsefilecCs6t|d|d�}|r)||�ng|_dS(Nustart_(ugetattruNoneutexts(uselfutaguattrsumethod((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyustartelement�s
uSheetParser.startelementcCs|jj|�dS(N(utextsuappend(uselfutext((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyudata�suSheetParser.datacCs9t|d|d�}|r5|dj|j��ndS(Nuend_u(ugetattruNoneujoinutexts(uselfutagumethod((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
endelement�suSheetParser.endelementcCs4t|jd��|_t|jd��|_dS(Nurowucol(uintugetuyux(uselfuattrs((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
start_cell�suSheetParser.start_cellcCs1|jd�|_tj|jd��|_dS(Nuformatualign(ugetufmtu	xml2alignu	alignment(uselfuattrs((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyustart_value�suSheetParser.start_valuec	Cs+yt|�|_Wnd|_YnXdS(N(uintuvalueuNone(uselfutext((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuend_intsuSheetParser.end_intc	Cs+yt|�|_Wnd|_YnXdS(N(ufloatuvalueuNone(uselfutext((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
end_double
suSheetParser.end_doublec	Cs+yt|�|_Wnd|_YnXdS(N(ucomplexuvalueuNone(uselfutext((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuend_complexsuSheetParser.end_complexcCs
||_dS(N(uvalue(uselfutext((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
end_stringsuSheetParser.end_stringcCs�t|jt�r!|j|_nit|jt�r`t|j|jpHd|jpTt�|_n*t	|j|jpud|jp�t
�|_dS(Nu%s(u
isinstanceuvalueuBaseCellucellustru
StringCellufmtu	alignmentuLEFTuNumericCelluRIGHT(uselfutext((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu	end_values		uSheetParser.end_valuecCs+t||jpd|jpt�|_dS(Nu%s(uFormulaCellufmtu	alignmentuRIGHTucell(uselfutext((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuend_formula(suSheetParser.end_formulacCs#|jj|j|j|j�dS(N(usheetusetcelluxuyucell(uselfutext((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuend_cell-suSheetParser.end_cellN(u__name__u
__module__u__qualname__u__init__u	parsefileustartelementudatau
endelementu
start_cellustart_valueu
start_formulauend_intuend_longu
end_doubleuend_complexu
end_stringu	end_valueuend_formulauend_cell(u
__locals__((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuSheetParser�s uSheetParsercBs|EeZdZdZdS(uBaseCellN(u__name__u
__module__u__qualname__uNoneu__init__(u
__locals__((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuBaseCell0s	uBaseCellcBsn|EeZdZdedd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dd�Z
dS(uNumericCellu%scCs||_||_||_dS(N(uvalueufmtu	alignment(uselfuvalueufmtu	alignment((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu__init__>s		uNumericCell.__init__cCs|jS(N(uvalue(uselfuns((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyurecalcEsuNumericCell.recalcc	Cs;y|j|j}Wnt|j�}YnX||jfS(N(ufmtuvalueustru	alignment(uselfutext((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuformatHs
uNumericCell.formatcCs=t|dt|j�j�}dt|j|j|�fS(Nu_xml_u(<value align="%s" format="%s">%s</value>(ugetattrutypeuvalueu__name__u	align2xmlu	alignmentufmt(uselfumethod((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuxmlOs

uNumericCell.xmlcCs9d|jkodknr*d|jSd|jSdS(Niiu
<int>%s</int>u<long>%s</long>li�l(uvalue(uself((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu_xml_intVsuNumericCell._xml_intcCsd|jS(Nu<double>%r</double>(uvalue(uself((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
_xml_float\suNumericCell._xml_floatcCsd|jS(Nu<complex>%r</complex>(uvalue(uself((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu_xml_complex_suNumericCell._xml_complexN(u__name__u
__module__u__qualname__uRIGHTu__init__urecalcuformatuxmlu_xml_intu
_xml_floatu_xml_complex(u
__locals__((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuNumericCell<suNumericCellcBsJ|EeZdZdedd�Zdd�Zdd�Zdd	�Zd
S(u
StringCellu%scCs||_||_||_dS(N(utextufmtu	alignment(uselfutextufmtu	alignment((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu__init__ds		uStringCell.__init__cCs|jS(N(utext(uselfuns((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyurecalcksuStringCell.recalccCs|j|jfS(N(utextu	alignment(uself((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuformatnsuStringCell.formatcCs*d}|t|j|jt|j�fS(Nu9<value align="%s" format="%s"><string>%s</string></value>(u	align2xmlu	alignmentufmtuescapeutext(uselfus((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuxmlqs

uStringCell.xmlN(u__name__u
__module__u__qualname__uLEFTu__init__urecalcuformatuxml(u
__locals__((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
StringCellbsu
StringCellcBsb|EeZdZdedd�Zdd�Zdd�Zdd	�Zd
d�Zdd
�Z	dS(uFormulaCellu%scCs;||_t|j�|_||_||_|j�dS(N(uformulau	translateu
translatedufmtu	alignmentureset(uselfuformulaufmtu	alignment((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu__init__zs
			uFormulaCell.__init__cCs
d|_dS(N(uNoneuvalue(uself((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyureset�suFormulaCell.resetc	Csz|jdkrsyt|j|�|_Wqstj�d}t|d�r\|j|_nt|�|_YqsXn|jS(Niu__name__(	uvalueuNoneuevalu
translatedusysuexc_infouhasattru__name__ustr(uselfunsuexc((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyurecalc�suFormulaCell.recalcc	Cs;y|j|j}Wnt|j�}YnX||jfS(N(ufmtuvalueustru	alignment(uselfutext((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuformat�s
uFormulaCell.formatcCs$dt|j|jt|j�fS(Nu,<formula align="%s" format="%s">%s</formula>(u	align2xmlu	alignmentufmtuescapeuformula(uself((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuxml�s
uFormulaCell.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(Nu(\w+)u^([A-Z]+)([1-9][0-9]*)$u(ureusplituformulaumatchuNoneugroupsucolname2numuintucellnameuappenduFormulaCellujoinufmtu	alignment(uselfux1uy1ux2uy2udxudyuoutupartumusxusyuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyurenumber�s8uFormulaCell.renumberN(
u__name__u
__module__u__qualname__uRIGHTu__init__ureseturecalcuformatuxmlurenumber(u
__locals__((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuFormulaCellxsuFormulaCellc	Cs�g}x�tjd|�D]�}tjd|�}|dkrM|j|�q|j�\}}}}t|�}|dkr�d||f}n"t|�}d||||f}|j|�qWdj|�S(u�Translate a formula containing fancy cell names to valid Python code.

    Examples:
        B4 -> cell(2, 4)
        B4:Z100 -> cells(2, 4, 26, 100)
    u(\w+(?::\w+)?)u2^([A-Z]+)([1-9][0-9]*)(?::([A-Z]+)([1-9][0-9]*))?$ucell(%s, %s)ucells(%s, %s, %s, %s)uN(ureusplitumatchuNoneuappendugroupsucolname2numujoin(	uformulauoutupartumux1uy1ux2uy2us((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu	translate�su	translatecCst|�t|�S(uETranslate a cell coordinate to a fancy cell name (e.g. (1, 1)->'A1').(ucolnum2nameustr(uxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyucellname�sucellnamecCsI|j�}d}x0|D](}|dt|�td�d}qW|S(uCTranslate a column name to number (e.g. 'A'->1, 'Z'->26, 'AA'->27).iiuAi(uupperuord(usunuc((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyucolname2num�s

&ucolname2numcCsJd}x=|rEt|dd�\}}t|td��|}q	W|S(u6Translate a column number to name (e.g. 1->'A', etc.).uiiuA(udivmoduchruord(unusum((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyucolnum2name�s
	ucolnum2namecBsI|EeZdZdZddddd�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(6uSheetGUIu7Beginnings 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
    u
sheet1.xmli
icCs*||_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(ulConstructor.

        Load the sheet from the filename argument.
        Set up the Tk widget tree.
        uSpreadsheet: %sutextuA1ufontu	helveticaiubolduSaveucommandusideubottomuexpandiufillubothulefturightuxu<Return>u<Shift-Return>u<Tab>u<Shift-Tab>u<Delete>u<Escape>N(u	helveticaiubold(#ufilenameuSheetusheetuosupathuisfileuloadugetsizeumaxuTkurootuwm_titleuLabelubeaconuEntryuentryuButtonusaveu
savebuttonuFrameucellgridupackubindureturn_eventushift_return_eventu	tab_eventushift_tab_eventudelete_eventuescape_eventumakegriduNoneu	currentxyucornerxyu
setcurrentusync(uselfufilenameurowsucolumnsumaxxumaxy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu__init__�s<			uSheetGUI.__init__cCsr|j|jkr>|jdk	r>|jj|j|j�n|jj|j�|j�|jjdd�dS(Niuendubreak(	ucornerxyu	currentxyuNoneusheetu
clearcellsu	clearcellusyncuentryudelete(uselfuevent((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyudelete_events!
uSheetGUI.delete_eventcCs#|j\}}|j||�dS(N(u	currentxyu
load_entry(uselfueventuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuescape_event!suSheetGUI.escape_eventcCs�|jj||�}|dkr*d}n1t|t�rId|j}n|j�\}}|jjdd�|jj	d|�|jj
dd�dS(Nuu=iuend(usheetugetcelluNoneu
isinstanceuFormulaCelluformulauformatuentryudeleteuinsertuselection_range(uselfuxuyucellutextu	alignment((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
load_entry%s	uSheetGUI.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(u�Helper to create the grid of GUI cells.

        The edge (x==0 or y==0) is filled with labels; the rest is real cells.
        ureliefuraiseducolumniurowustickyuNSWEu<ButtonPress-1>iuminsizei@utextuWEu<B1-Motion>u<ButtonRelease-1>u<Shift-Button-1>usunkenubguwhiteufgublackN(urowsucolumnsu	gridcellsuTkuLabelucellgridugrid_configureubindu	selectallurangeugrid_columnconfigureucolnum2nameu_SheetGUI__xu_SheetGUI__yuselectcolumnuextendcolumnustru	selectrowu	extendrowupressumotionurelease(uselfurowsucolumnsucelluxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyumakegrid1sN			$		$				uSheetGUI.makegridcCs*|jdd�|jtjtj�dS(Ni(u
setcurrentu	setcornerusysumaxsize(uselfuevent((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu	selectallcsuSheetGUI.selectallcCs<|j|�\}}|j|d�|j|tj�dS(Ni(uwhichxyu
setcurrentu	setcornerusysumaxsize(uselfueventuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuselectcolumngsuSheetGUI.selectcolumncCsR|j|�\}}|dkrN|j|jdd�|j|tj�ndS(Nii(uwhichxyu
setcurrentu	currentxyu	setcornerusysumaxsize(uselfueventuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuextendcolumnlsuSheetGUI.extendcolumncCs<|j|�\}}|jd|�|jtj|�dS(Ni(uwhichxyu
setcurrentu	setcornerusysumaxsize(uselfueventuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu	selectrowrsuSheetGUI.selectrowcCsR|j|�\}}|dkrN|jd|jd�|jtj|�ndS(Nii(uwhichxyu
setcurrentu	currentxyu	setcornerusysumaxsize(uselfueventuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu	extendrowwsuSheetGUI.extendrowcCsD|j|�\}}|dkr@|dkr@|j||�ndS(Ni(uwhichxyu
setcurrent(uselfueventuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyupress}suSheetGUI.presscCsD|j|�\}}|dkr@|dkr@|j||�ndS(Ni(uwhichxyu	setcorner(uselfueventuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyumotion�suSheetGUI.motioncCsi|jj|j|j�}|dk	ret|tj�rey|j|j	fSWqet
k
raYqeXndS(Ni(ii(ucellgriduwinfo_containingux_rootuy_rootuNoneu
isinstanceuTkuLabelu_SheetGUI__xu_SheetGUI__yuAttributeError(uselfueventuw((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuwhichxy�s
uSheetGUI.whichxycCs|jj|j�dS(N(usheetusaveufilename(uself((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyusave�su
SheetGUI.savecCs�|jdk	r|j�n|j�t||�|jd<|j||�|jj�||f|_d|_	|j
j|j�}|dk	r�d|d<ndS(uMake (x, y) the current cell.utextuyellowubgN(u	currentxyuNoneuchange_cellu
clearfocusucellnameubeaconu
load_entryuentryu	focus_setucornerxyu	gridcellsuget(uselfuxuyugridcell((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
setcurrent�s


	uSheetGUI.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(Nu	lightBlueubguyellow(	u	currentxyuNoneu
setcurrentu
clearfocusucornerxyu	gridcellsuitemsugetu	setbeacon(	uselfuxuyux1uy1ux2uy2ucellugridcell((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu	setcorner�s$$
"8
uSheetGUI.setcornercCs#||kodknrD||ko6tjknrDd}n�||fdtjfkr�||krxd|}qd||f}n�||fdtjfkr�||kr�dt|�}qdt|�t|�f}n.t|j�}t|j�}d||f}||jd<dS(Niu:u%du%d:%du%su%s:%sutext(usysumaxsizeucolnum2nameucellnameu	currentxyucornerxyubeacon(uselfux1uy1ux2uy2unameuname1uname2((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu	setbeacon�s;	
uSheetGUI.setbeaconcCs�|jdk	r�|j\}}|jp-|j\}}||krR||}}n||krn||}}nxk|jj�D]W\\}}}||ko�|knr~||ko�|knr~d|d<q~q~WndS(Nuwhiteubg(u	currentxyuNoneucornerxyu	gridcellsuitems(uselfux1uy1ux2uy2uxuyucell((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
clearfocus�s"8uSheetGUI.clearfocuscCs1|j�|j\}}|j||d�dS(uCallback for the Return key.iubreak(uchange_cellu	currentxyu
setcurrent(uselfueventuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyureturn_event�s
uSheetGUI.return_eventcCs:|j�|j\}}|j|td|d��dS(u0Callback for the Return key with Shift modifier.iubreak(uchange_cellu	currentxyu
setcurrentumax(uselfueventuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyushift_return_event�s
uSheetGUI.shift_return_eventcCs1|j�|j\}}|j|d|�dS(uCallback for the Tab key.iubreak(uchange_cellu	currentxyu
setcurrent(uselfueventuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu	tab_event�s
uSheetGUI.tab_eventcCs:|j�|j\}}|jtd|d�|�dS(u-Callback for the Tab key with Shift modifier.iubreak(uchange_cellu	currentxyu
setcurrentumax(uselfueventuxuy((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyushift_tab_event�s
uSheetGUI.shift_tab_eventc
Cs�|j\}}|jj�}d}|jd�rLt|dd��}nExBtttfD]1}y||�}Wnw\Yq\Xt	|�}Pq\W|dkr�|r�t
|�}n|dkr�|jj||�n|jj
|||�|j�dS(u+Set the current cell from the entry widget.u=iN(u	currentxyuentryugetuNoneu
startswithuFormulaCelluintufloatucomplexuNumericCellu
StringCellusheetu	clearcellusetcellusync(uselfuxuyutextucelluclsuvalue((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuchange_cell�s$uSheetGUI.change_cellcCs�|jj�x�|jj�D]�\\}}}|dks|dkrMqn|jj||�}|dkr{d|d<qt|d�r�|j�\}}nt|�t	}}||d<t
||d<qWdS(u(Fill the GUI cells from the sheet cells.iuutextuformatuanchorN(usheeturecalcu	gridcellsuitemsugetcelluNoneuhasattruformatustruLEFTualign2anchor(uselfuxuyugridcellucellutextu	alignment((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyusyncs
"

u
SheetGUI.syncN(u__name__u
__module__u__qualname__u__doc__u__init__udelete_eventuescape_eventu
load_entryumakegridu	selectalluselectcolumnuextendcolumnu	selectrowu	extendrowupressumotionureleaseuwhichxyusaveu
setcurrentu	setcorneru	setbeaconu
clearfocusureturn_eventushift_return_eventu	tab_eventushift_tab_eventuchange_cellusync(u
__locals__((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyuSheetGUI�s4-	2	uSheetGUIcCs�t�}x�tdd�D]�}x�tdd�D]�}|dkrPt|�}nU|dkrkt|�}n:t|d�}td|�}d||f}t|�}|j|||�q/WqW|j�|jd�dS(uBasic non-gui self-test.iiu%s*%su
sheet1.xmlN(uSheeturangeuNumericCellucellnameuFormulaCellusetcelludisplayusave(uauxuyucelluc1uc2uformula((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu
test_basics	
u
test_basiccCsFtjdd�r#tjd}nd}t|�}|jj�dS(u	GUI test.iNu
sheet1.xml(usysuargvuSheetGUIurootumainloop(ufilenameug((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyutest_gui2s
utest_guiu__main__(#u__doc__uosureusysuxml.parsersuexpatuxml.sax.saxutilsuescapeuLEFTuCENTERuRIGHTuljustucenterurjustualign2actionu	align2xmlu	xml2alignualign2anchorusumuSheetuSheetParseruBaseCelluNumericCellu
StringCelluFormulaCellu	translateucellnameucolname2numucolnum2nameutkinteruTkuSheetGUIu
test_basicutest_guiu__name__(((u3/opt/alt/python33/lib64/python3.3/Tools/demo/ss1.pyu<module>s>�O&3		�C