Sindbad~EG File Manager

Current Path : /lib64/python3.6/__pycache__/
Upload File :
Current File : //lib64/python3.6/__pycache__/turtle.cpython-36.opt-2.pyc

3


 \1�O@s4dZddlZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZddlm
Z
ddlmZdddd	d
ddd
dg	Zdddddddddddddddddd d!d"d#d$d%d&d'd(d)d*d+d,d-gZd.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzd{d|gOZd}d~gZeeeedgZdd/d2d?dLdPdTdZd\dadbdddedpdudxdygZd�d�d�d�ddd�d�d�d�d�d�d�d�d�d�d�d�d�d�d��Zd�d��Zd�d��Zyee�Wnek
�red��YnXGd�d�de�Zd�d��Zd�d��Zd�Zffd�d��ZGd�d�dej �Z!ee!ej"d��Gd�d��d�ej#�Z$ej"Z"Gd�d��d�e%�Z&Gd�d�de�Z'Gd�d��d�e�Z(Gd�d
�d
e%�Z)Gd�d��d�e%�Z*Gd�d�de&�Z+Gd�d��d�e%�Z,Gd�d��d�e%�Z-Gd�d��d�e%�Z.Gd�d	�d	e-e,�Z/e/Z0d�d�Z1Gd�d��d�e+�Z2Gd�d
�d
e/�Z3e3Z4d�d�d}�Z5d�d��Z6ed�Z7ye7d�k�rpe6e7�Wn@e8k
�r�ed�e7�Yn"ek
�r�ed�e7�YnXd�d��Z9d�d„Z:d�dĄZ;d�Z<d�dDŽZ=e=ee2d�d�e;�e=ee3d�d�e:�e>Z?e@d�k�r0d�d΄ZAd�dЄZBd�d҄ZCeB�eC�eD�dS)�z-turtle 1.1b- - for Python 3.1   -  4. 5. 2009�N)�isfile�split�join)�deepcopy)�simpledialog�ScrolledCanvas�TurtleScreen�Screen�	RawTurtle�Turtle�RawPen�Pen�Shape�Vec2D�addshape�bgcolor�bgpic�bye�clearscreen�	colormode�delay�exitonclick�	getcanvas�	getshapes�listen�mainloop�mode�numinput�onkey�
onkeypress�onkeyrelease�
onscreenclick�ontimer�register_shape�resetscreen�
screensize�setup�setworldcoordinates�	textinput�title�tracer�turtles�update�
window_height�window_width�back�backward�
begin_fill�
begin_poly�bk�circle�clear�
clearstamp�clearstamps�clone�color�degrees�distance�dot�down�end_fill�end_poly�fd�	fillcolor�filling�forward�get_poly�getpen�	getscreen�
get_shapepoly�	getturtle�goto�heading�
hideturtle�home�ht�isdown�	isvisible�left�lt�onclick�ondrag�	onrelease�pd�pen�pencolor�pendown�pensize�penup�pos�position�pu�radians�right�reset�
resizemode�rt�seth�
setheading�setpos�setposition�settiltangle�
setundobuffer�setx�sety�shape�	shapesize�shapetransform�shearfactor�
showturtle�speed�st�stamp�tilt�	tiltangle�towards�
turtlesize�undo�undobufferentries�up�width�write�xcor�ycor�write_docstringdict�done�
Terminatorg�?g�?i�i,�standardg�?�
i��classic�black�noresizeTZenglish�turtle�screenzPython Turtle GraphicsF)rz�height�	canvwidth�
canvheight�	leftright�	topbottomrrr�undobuffersizerkrWrAra�visible�language�
exampleturtle�
examplescreenr)�
using_IDLEcCs�t|d��}|j�}WdQRXi}x�|D]�}|j�}|s(|jd�rFq(y|jd�\}}Wn&tk
r~td||f�w(YnX|j�}|j�}|dkr�t|�}n4yd
|kr�t|�}nt	|�}Wntk
r�YnX|||<q(W|S)N�r�#�=zBad line in config-file %s:
%s�True�False�None�''�""�.)r�r�r�r�r�)
�open�	readlines�strip�
startswithr�
ValueError�print�eval�float�int)�filename�fZcfglines�cfgdict�line�key�value�r��/usr/lib64/python3.6/turtle.py�config_dict�s0


r�cCs�d}i}i}t|�rt|�}d|kr0d|d}ytt�\}}t||�}Wntk
rbd}YnXt|�rtt|�}tj|�tj|�dS)Nz
turtle.cfgZimportconfigz
turtle_%s.cfg�)rr�r�__file__r�	Exception�_CFGr,)r�Zdefault_cfgZcfgdict1Zcfgdict2�head�tailZ	cfg_file2r�r�r��
readconfig�s 


r�z"No configfile read, reason unknownc@s\eZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�ZdS)rcCstj|||f�S)N)�tuple�__new__)�cls�x�yr�r�r�r��sz
Vec2D.__new__cCs"t|d|d|d|d�S)Nr�)r)�self�otherr�r�r��__add__�sz
Vec2D.__add__cCsDt|t�r*|d|d|d|dSt|d||d|�S)Nrr�)�
isinstancer)r�r�r�r�r��__mul__�s
 z
Vec2D.__mul__cCs2t|t�st|t�r.t|d||d|�SdS)Nrr�)r�r�r�r)r�r�r�r�r��__rmul__szVec2D.__rmul__cCs"t|d|d|d|d�S)Nrr�)r)r�r�r�r�r��__sub__sz
Vec2D.__sub__cCst|d|d�S)Nrr�)r)r�r�r�r��__neg__sz
Vec2D.__neg__cCs|dd|dddS)Nr�r�g�?r�)r�r�r�r��__abs__	sz
Vec2D.__abs__cCsjt|d|d�}|tjd}tj|�tj|�}}t|d||d||d||d|�S)Nr�rg�f@)r�math�pi�cos�sin)r��angleZperp�c�sr�r�r��rotateszVec2D.rotatecCs|d|dfS)Nrr�r�)r�r�r�r��__getnewargs__szVec2D.__getnewargs__cCsd|S)Nz(%.2f,%.2f)r�)r�r�r�r��__repr__szVec2D.__repr__N)
�__name__�
__module__�__qualname__r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�scCs\t|j�}|j�x|D]}t||�qWx,|jj�D]\}}t|�tjkr6|||<q6WdS)N)	�list�	__bases__�reverse�__methodDict�__dict__�items�type�types�FunctionType)r��_dictZbaseListZ_superr�r�r�r�r�r� s

r�cCsi}t||�|j�S)N)r��keys)r�r�r�r�r��	__methods*s
r�z*def %(method)s(self, *args, **kw): return z*self.%(attribute)s.%(method)s(*args, **kw)cCs�i}t||�i}t|�}xN|j�D]B}|dd�dksf|dd�dksf||ksf||krZq$||||<q$WxP|j�D]D\}}	||	d�}
t|t�r�t||d�}t||
�t|||
|�qtWdS)Nr��_)�method�func)r�Z	attribute���)	r�r�r�r�r��str�__stringBody�exec�setattr)Z	fromClassZtoClassZtoPartZexcludeZ_dict_1r�ZmfcZexr�r��dZ
execStringr�r�r��__forwardmethods4s
0


r�c@s`eZdZddd�Zddd�Zd	d
�Zdd�Zd
d�Zdd�Zdd�Z	dd�Z
dd�Zdd�ZdS)r���^�Xc
Cs0tjj||||d�|j�|_|||_|_|||_|_d|_	tj
||||j	tjdd�|_tj
||jjtjd�|_tj
||jjd�|_|jj|jj|jjd�|jdd	dd
�|jdd	dd
�|jjd	|d	ddd	d	dd�|jjd	|d	dd	d	d	dd�|jjd	|d	d	dd	d	dd�|j�|jjd
|j�dS)N)rzr��whiter�)rzr��bgZreliefZborderwidth)�commandZorient)r�)ZxscrollcommandZyscrollcommandrr�)ZweightZminsize�news)�padx�in_�pady�row�column�rowspan�
columnspan�stickyz<Configure>)�TK�Frame�__init__�winfo_toplevelZ_rootwindowrzr�r�r�r��CanvasZSUNKEN�_canvasZ	ScrollbarZxviewZ
HORIZONTAL�hscrollZyview�vscrollZ	configure�setZrowconfigureZcolumnconfigure�gridr`�bind�onResize)r�Zmasterrzr�r�r�r�r�r�r�Os,

zScrolledCanvas.__init__NcCs�|r
||_|r||_|r||_|jj||jd|jd|jd|jdfd�|jjd|j|jd|j�|jjd|j|jd|j�|j	�dS)Nr�)r��scrollregiong�?�)
r�r�r�r��config�xview_movetorz�yview_movetor��
adjustScrolls)r�r�r�r�r�r�r�r`hs

zScrolledCanvas.resetc
Cs�|jj�}|jj�}|jjd|j||j�|jjd|j||j�||jks`||jkr�|jjd|ddddddd�|j	jd|ddddddd�n|jj
�|j	j
�dS)Ng�?r�rr�)r�r�r�r�r�r�r�r�)r��winfo_width�winfo_heightrr�rr�r�rr�Zgrid_forget)r��cwidth�cheightr�r�r�rzs


zScrolledCanvas.adjustScrollscCs|j�dS)N)r)r��eventr�r�r�r�szScrolledCanvas.onResizecGs|jj|�S)N)r��bbox)r��argsr�r�r�r�szScrolledCanvas.bboxcOs|jj||�S)N)r��cget)r�r�kwargsr�r�r�r�szScrolledCanvas.cgetcOs|jj||�dS)N)r�r)r�rrr�r�r�r�szScrolledCanvas.configcOs|jj||�dS)N)r�r)r�rrr�r�r�r�szScrolledCanvas.bindcOs|jj||�dS)N)r��unbind)r�rrr�r�r�r�szScrolledCanvas.unbindcCs|jj�dS)N)r��focus_force)r�r�r�r�r�szScrolledCanvas.focus_force)r�r�r�r�)NNN)
r�r�r�r�r`rrrrrrrrr�r�r�r�rIs

r�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dS)�_RootcCstjj|�dS)N)r��Tkr�)r�r�r�r�r��sz_Root.__init__cCs&t|||||�|_|jjddd�dS)Nr�Zboth)�expand�fill)rr�Zpack)r�rzr�rrr�r�r��setupcanvas�sz_Root.setupcanvascCs|jS)N)r�)r�r�r�r��
_getcanvas�sz_Root._getcanvascCs|jd||||f�dS)Nz%dx%d%+d%+d)Zgeometry)r�rzr��startx�startyr�r�r��set_geometry�sz_Root.set_geometrycCs|jd|�dS)NZWM_DELETE_WINDOW)Zwm_protocol)r��destroyr�r�r��	ondestroy�sz_Root.ondestroycCs|j�S)N)Zwinfo_screenwidth)r�r�r�r��	win_width�sz_Root.win_widthcCs|j�S)N)Zwinfo_screenheight)r�r�r�r��
win_height�sz_Root.win_heightN)
r�r�r�r�rrrrrr r�r�r�r�r�src@s0eZdZedd��Zedd��Zdd�Zdd�ZdFdd�Zd
d�Z	dGdd�Z
dd�Zdd�Zdd�Z
dd�ZdHdd�Zdd�ZdIdd�ZdJd d!�ZdKd"d#�ZdLd$d%�Zd&d'�ZdMd(d)�Zd*d+�Zd,d-�Zd.d/�Zd0d1�Zd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�ZdNd<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dOdDdE�Z$d	S)P�TurtleScreenBasecCstjddd�}|j�|S)Nr�)rzr�)r��
PhotoImage�blank)Zimgr�r�r��_blankimage�szTurtleScreenBase._blankimagecCstj|d�S)N)�file)r�r")r�r�r�r��_image�szTurtleScreenBase._imagecCs�||_t|t�r"|jj}|jj}nJt|jjd��}t|jjd��}|jj|d|d|d|dfd�||_||_d|_|_	dS)Nrzr�r�)rg�?)
�cvr�rr�r�r�rr�xscale�yscale)r�r'�w�hr�r�r�r��s

*zTurtleScreenBase.__init__cCs|jjdddd�S)Nrr�)r�outline)rrrrrr)r'Zcreate_polygon)r�r�r�r��_createpoly�szTurtleScreenBase._createpolyNFc
Cs�g}x2|D]*\}}	|j||j�|j|	|j�q
W|jj|f|��|dk	rb|jj||d�|dk	rz|jj||d�|dk	r�|jj||d�|r�|jj|�dS)N)r)r,)rz)�appendr(r)r'�coords�
itemconfigure�	tag_raise)
r�Zpolyitem�	coordlistrr,rz�top�clr�r�r�r�r��	_drawpoly�szTurtleScreenBase._drawpolyc	Cs|jjddddddtjd�S)Nrr�r�)rrzZcapstyle)r'Zcreate_liner�ZROUND)r�r�r�r��_createlineszTurtleScreenBase._createlinec	Cs�|dk	rRg}x2|D]*\}}|j||j�|j||j�qW|jj|f|��|dk	rj|jj||d�|dk	r�|jj||d�|r�|jj|�dS)N)r)rz)r.r(r)r'r/r0r1)	r�Zlineitemr2rrzr3r4r�r�r�r�r��	_drawlines
zTurtleScreenBase._drawlinecCs|jj|�dS)N)r'�delete)r��itemr�r�r��_delete)szTurtleScreenBase._deletecCs|jj�dS)N)r'r,)r�r�r�r��_update/szTurtleScreenBase._updatecCs|jj|�dS)N)r'�after)r�rr�r�r��_delay4szTurtleScreenBase._delaycCs4y|jj|�}d}Wntjk
r.d}YnX|S)NTF)r'Z	winfo_rgbr�ZTclError)r�r9Zrgb�okr�r�r��_iscolorstring8s
zTurtleScreenBase._iscolorstringcCs0|dk	r |jj|d�|j�n|jjd�SdS)N)r�r�)r'rr;r)r�r9r�r�r��_bgcolorBs
zTurtleScreenBase._bgcolorcCst|\}}||j}||j}dddd�}|jj|d||||||d�}	|jj|	�\}
}}}
|jj�|	|dfS)N�swr�Zse)rP�centerr_r�)�text�anchorr�font)r(r)r'Zcreate_textrr,)r�r[�txt�alignrErWr�r�rDr9Zx0Zy0Zx1Zy1r�r�r��_writeKs



zTurtleScreenBase._writer�csD�dkr�jj|d|�n$��fdd�}�jj|d|||�dS)Nz<Button-%s>cs:�jj|j��j�jj|j��j}}�||�dS)N)r'�canvasxr�r(�canvasyr�r))r
r�r�)�funr�r�r��eventfunfsz+TurtleScreenBase._onclick.<locals>.eventfun)r'�
tag_unbind�tag_bind)r�r9rK�num�addrLr�)rKr�r��_onclick]szTurtleScreenBase._onclickcsD�dkr�jj|d|�n$��fdd�}�jj|d|||�dS)Nz<Button%s-ButtonRelease>cs:�jj|j��j�jj|j��j}}�||�dS)N)r'rIr�r(rJr�r))r
r�r�)rKr�r�r�rLxsz-TurtleScreenBase._onrelease.<locals>.eventfun)r'rMrN)r�r9rKrOrPrLr�)rKr�r��
_onreleasels
	zTurtleScreenBase._onreleasecsD�dkr�jj|d|�n$��fdd�}�jj|d|||�dS)Nz<Button%s-Motion>csTy:�jj|j��j�jj|j��j}}�||�Wntk
rNYnXdS)N)r'rIr�r(rJr�r)r�)r
r�r�)rKr�r�r�rL�sz*TurtleScreenBase._ondrag.<locals>.eventfun)r'rMrN)r�r9rKrOrPrLr�)rKr�r��_ondrags	zTurtleScreenBase._ondragcs@�dkr�jjd|�n"��fdd�}�jjd|||�dS)Nz<Button-%s>cs:�jj|j��j�jj|j��j}}�||�dS)N)r'rIr�r(rJr�r))r
r�r�)rKr�r�r�rL�sz1TurtleScreenBase._onscreenclick.<locals>.eventfun)r'rr)r�rKrOrPrLr�)rKr�r��_onscreenclick�s	zTurtleScreenBase._onscreenclickcs>�dkr|jjd|d�n�fdd�}|jjd||�dS)Nz<KeyRelease-%s>cs
��dS)Nr�)r
)rKr�r�rL�sz0TurtleScreenBase._onkeyrelease.<locals>.eventfun)r'rr)r�rKr�rLr�)rKr��
_onkeyrelease�szTurtleScreenBase._onkeyreleasecsn�dkr4|dkr |jjdd�qj|jjd|d�n6�fdd�}|dkrX|jjd|�n|jjd||�dS)Nz
<KeyPress>z
<KeyPress-%s>cs
��dS)Nr�)r
)rKr�r�rL�sz.TurtleScreenBase._onkeypress.<locals>.eventfun)r'rr)r�rKr�rLr�)rKr��_onkeypress�szTurtleScreenBase._onkeypresscCs|jj�dS)N)r'r)r�r�r�r��_listen�szTurtleScreenBase._listencCs(|dkr|jj|�n|jj||�dS)Nr)r'Z
after_idler<)r�rK�tr�r�r��_ontimer�szTurtleScreenBase._ontimercCs|jjdd|d�S)Nr)�image)r'Zcreate_image)r�rZr�r�r��_createimage�szTurtleScreenBase._createimagecCs<|\}}|jj|||j||jf�|jj||d�dS)N)rZ)r'r/r(r)�
itemconfig)r�r9r[rZr�r�r�r�r��
_drawimage�s zTurtleScreenBase._drawimagecCs |jj||d�|jj|�dS)N)rZ)r'r\Z	tag_lower)r�r9rZr�r�r��	_setbgpic�szTurtleScreenBase._setbgpiccCs|jj|�S)N)r'r�)r�r9r�r�r��_type�szTurtleScreenBase._typecs.|jj|���fdd�tdt��d�D�}|S)Ncs"g|]}�|�|df�qS)r�r�)�.0�i)r4r�r��
<listcomp>�sz/TurtleScreenBase._pointlist.<locals>.<listcomp>rr�)r'r/�range�len)r�r9�plr�)r4r��
_pointlist�szTurtleScreenBase._pointlistcCs|jj||||fd�dS)N)r)r'r)r��srx1�sry1�srx2�sry2r�r�r��_setscrollregion�sz!TurtleScreenBase._setscrollregionc	Cs�|jj�}xt|D]l}t|jj|��}g}x@|rh|dd�\}}|j||�|j||�|dd�}q*W|jj|f|��qWdS)Nr�)r'Zfind_allr�r/r.)	r�ZxscalefactorZyscalefactorr�r9ZcoordinatesZnewcoordlistr�r�r�r�r��_rescale�s

zTurtleScreenBase._rescalecCszt|jt�s|j|jfS||ko4|ko4dknrJ|jj|jjfS|dk	rX||_|dk	rf||_|jj|||�dS)N)r�r'rr�r�r`)r�r�r�r�r�r�r��_resizes"zTurtleScreenBase._resizecCs@|jj�}|dkr|jd}|jj�}|dkr8|jd}||fS)Nr�rzr�)r'r	r
)r�rzr�r�r�r��_window_sizes



zTurtleScreenBase._window_sizecCstj�dS)N)r�r)r�r�r�r�r s
zTurtleScreenBase.mainloopcCstj||�S)N)rZ	askstring)r�r)�promptr�r�r�r(/s
zTurtleScreenBase.textinputcCstj|||||d�S)N)ZinitialvalueZminvalueZmaxvalue)rZaskfloat)r�r)ro�defaultZminvalZmaxvalr�r�r�r>s
zTurtleScreenBase.numinput)NNNF)NNNF)N)r�N)r�N)r�N)r�N)N)NNN)NNN)%r�r�r��staticmethodr$r&r�r-r5r6r7r:r;r=r?r@rHrQrRrSrTrUrVrWrYr[r]r^r_rfrkrlrmrnrr(rr�r�r�r�r!�sF




	





r!c@seZdZdS)r�N)r�r�r�r�r�r�r�r�Ysc@seZdZdS)�TurtleGraphicsErrorN)r�r�r�r�r�r�r�rrbsrrc@s eZdZddd�Zddd�ZdS)rNcCsz||_|dkr"t|t�rpt|�}nN|dkrVt|t�rp|j�jd�rpt|�rptj	|�}n|dkrdg}nt
d|��||_dS)N�polygonrZz.gif�compoundzThere is no shape type %s)r_r�r�r�r��lower�endswithrrr&rr�_data)r�Ztype_�datar�r�r�r�ns


zShape.__init__cCs:|jdkrtd|j��|dkr$|}|jj|||g�dS)Nrtz Cannot add component to %s Shape)r_rrrwr.)r��polyrr,r�r�r��addcomponent~s

zShape.addcomponent)N)N)r�r�r�r�rzr�r�r�r�rgs
c@s@eZdZddd�Zddd�Zdd�Zd	d
�Zdd�Zd
d�ZdS)�Tbufferr�cCs$||_dgg||_d|_d|_dS)Nr�Fr�)�bufsize�buffer�ptr�cumulate)r�r|r�r�r�r��szTbuffer.__init__NcCsH|dkr*x4t|j�D]}dg|j|<qWn||_dgg||_d|_dS)Nr�r�)rcr|r}r~)r�r|rar�r�r�r`�sz
Tbuffer.resetcCsF|jdkrB|js0|jd|j|_||j|j<n|j|jj|�dS)Nrr�)r|rr~r}r.)r�r9r�r�r��push�s

zTbuffer.pushcCsJ|jdkrF|j|j}|dkr"dSdg|j|j<|jd|j|_|SdS)Nrr�)r|r}r~)r�r9r�r�r��pop�s
zTbuffer.popcCs|j|jjdg�S)N)r|r}�count)r�r�r�r��nr_of_items�szTbuffer.nr_of_itemscCst|j�dt|j�S)N� )r�r}r~)r�r�r�r�r��szTbuffer.__repr__)r�)N)	r�r�r�r�r`r�r�r�r�r�r�r�r�r{�s

	r{c@seZdZdZedededfdd�Zdd�Zd<d
d�Zdd
�Zd=dd�Z	dd�Z
dd�Zd>dd�Zdd�Z
dd�Zdd�Zd?dd�Zd@dd�Zd d!�Zd"d#�Zd$d%�Zd&d'�Zd(d)�Zd*d+�ZdAd-d.�Zd/d0�ZdBd1d2�ZdCd3d4�ZdDd6d7�ZdEd8d9�ZdFd:d;�ZeZe
Z eZ!e	Z"eZ#d	S)GrTrrrcCs�tdd'�tddT�tdd|�tdd��tdd��tdd��td|j��d�|_ddi|_tj||�||_||_td|_	g|_
|j�tj
dk�r�|j�}|jdddd d!�|jdddd d"�dS)�Nrsr�r�r��r����	������Q�#@���Q�@�G�z. @��Q��@gg$@g�G�z@皙���'@rZ)Zarrowr�r4ZsquareZtriangler�r#�nopicr�r�darwinZwmZ
attributesr�z-topmost�1�0����r�r�r�r�rr�)r�r�r��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�����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�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��r�r��r�r��r�r��rr����Q���r�r���Q����r�r��G�z. ��r�r���Q�#��r�r�����r�r��Q�#����Q���r�r��G�z. ���Q����r�r���Q����G�z. ��r�r����Q����Q�#��r�r����$��r�r���Q�#��r�r��G�z. ��r�r���Q����r�r����Q���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�����r�r��������r�r�)r�r�r�r���G�z��r�r��rr������G�z��r�r�)r�r�r��rrr�����r�r�����rr�����r�r�)r�r�r�r�)rr$�_shapes�_bgpicsr!r��_mode�_delayvaluer��
_colormode�_keysr5�sys�platformr�Zcall)r�r'rrrZ
rootwindowr�r�r�r��s:

zTurtleScreen.__init__cCs�td|_td|_|jd�|jd�|_d|_d|_d|_g|_	|j
d�xdD]}|jd|�qRW|jd�x.|j
dd�D]}|jd|�|jd|�q�Wdt_dS)Nrr�allr�r�r�rr�r�r�)r�r�r�)r�rrr:r[�_bgpic�
_bgpicname�_tracing�_updatecounter�_turtlesrrRrrrr�_pen)r��btnr�r�r�r�r5�s 





zTurtleScreen.clearNcCs||dkr|jS|j�}|dkr*td|��||_|dkrp|j|jd|jd|jd|jd�d|_|_|j�dS)	Nr��logo�worldzNo turtle-graphics-mode %sr�g�?)r�rr)r�r)	rrurrrkr�r�r(r)r`)r�rr�r�r�r
szTurtleScreen.modecCs�|j�dkr|jd�t||�}t||�}|j�\}}|j|d|d�|j|j}	}
|j||_|j||_||j}||j}|j|}
|j|}|j|||
|�|j	|j|	|j|
�|j
�dS)Nr�)rr�rnr%r(r)r�r�rkrlr,)r�ZllxZllyZurxZuryZxspanZyspanZwxZwyZ	oldxscaleZ	oldyscalergrhrirjr�r�r�r',s 



z TurtleScreen.setworldcoordinatescCsT|dkr2|j�jd�r(td|j|��}qFtd��nt|t�rFtd|�}||j|<dS)Nz.gifrZz"Bad arguments for register_shape.
zUse  help(register_shape)rsz;Bad arguments for register_shape.
Use  help(register_shape))rurvrr&rrr�r�r�)r��namerkr�r�r�r#Ss

zTurtleScreen.register_shapecCst|�dkr|d}t|t�rD|j|�s0|dkr4|Stdt|���y|\}}}Wn(ttfk
rztdt|���YnX|jdkr�dd�|||fD�\}}}d|ko�d	kno�d|ko�d	kno�d|ko�d	kns�td
t|���d|||fS)Nr�rr�zbad color string: %szbad color arguments: %sg�?cSsg|]}td|��qS)g�o@)�round)r`r�r�r�r�rb�sz*TurtleScreen._colorstr.<locals>.<listcomp>�zbad color sequence: %sz
#%02x%02x%02x)rdr�r�r?rr�	TypeErrorr�r)r�r9r��g�br�r�r��	_colorstrvs


HzTurtleScreen._colorstrcsx�jd�s�St��dkr.�fdd�dD�}n4t��dkrV�fd	d��dd�D�}ntd
���t�fdd�|D��S)
Nr�r�cs"g|]}t�||d�d��qS)r�r�)r�)r`ra)�cstrr�r�rb�sz'TurtleScreen._color.<locals>.<listcomp>r�r�r�r�csg|]}dt�|d��qS)r�)r�)r`r+)rr�r�rb�szbad colorstring: %scsg|]}|�jd�qS)r)r)r`r�)r�r�r�rb�s)r�r�r�)r�rdrrr�)r�rr4r�)rr�r��_color�s
zTurtleScreen._colorcCs8|dkr|jS|dkr"t|�|_n|dkr4t|�|_dS)Ng�?r)rr�r�)r�Zcmoder�r�r�r�szTurtleScreen.colormodecCs(x"|jD]}|j|j�|j�qWdS)N)r�_setmoderr`)r�r�r�r�r�r`�szTurtleScreen.resetcCs|jS)N)r)r�r�r�r�r+�szTurtleScreen.turtlescGs4|r|j|�}nd}|j|�}|dk	r0|j|�}|S)N)rr@r)r�rr9r�r�r�r�s

zTurtleScreen.bgcolorcCsB|dkr|jSt|�|_d|_|dk	r0t|�|_|jr>|j�dS)Nr)r	r�r
rr,)r��nrr�r�r�r*�s

zTurtleScreen.tracercCs|dkr|jSt|�|_dS)N)rr�)r�rr�r�r�r�szTurtleScreen.delaycCs<tjsdt_t�|jdkr8|jd7_|j|j;_dS)NTrr�)r�_RUNNINGr�r	r
)r�r�r�r��
_incrementudcs
zTurtleScreen._incrementudccCs@|j}d|_x |j�D]}|j�|j�qW||_|j�dS)NT)r	r+�_update_data�_drawturtler;)r��tracingrXr�r�r�r,szTurtleScreen.updatecCs|j�dS)Nr)rn)r�r�r�r�r.szTurtleScreen.window_widthcCs|j�dS)Nr�)rn)r�r�r�r�r-%szTurtleScreen.window_heightcCs|jS)N)r')r�r�r�r�r.s
zTurtleScreen.getcanvascCst|jj��S)N)�sortedr�r�)r�r�r�r�r:s	zTurtleScreen.getshapesr�cCs|j|||�dS)N)rT)r�rKr
rPr�r�r�rREszTurtleScreen.onclickcCsF|dkr ||jkr6|jj|�n||jkr6|jj|�|j||�dS)N)r�remover.rU)r�rKr�r�r�r�rVs

zTurtleScreen.onkeycCsN|dkr ||jkr>|jj|�n|dk	r>||jkr>|jj|�|j||�dS)N)rr"r.rV)r�rKr�r�r�r�rts
zTurtleScreen.onkeypresscCs|j�dS)N)rW)r��xdummy�ydummyr�r�r�r�s
zTurtleScreen.listenrcCs|j||�dS)N)rY)r�rKrXr�r�r�r"�szTurtleScreen.ontimercCsF|dkr|jS||jkr(|j|�|j|<|j|j|j|�||_dS)N)rr�r&r^r)r�Zpicnamer�r�r�r�s
zTurtleScreen.bgpiccCs|j|||�S)N)rm)r�r�r�r�r�r�r�r%�szTurtleScreen.screensize)N)N)N)NN)N)r�N)N)NN)r)N)NNN)$r�r�r�rr�r�r5rr'r#rrrr`r+rr*rrr,r.r-rrrRrrrr"rr%r!r$rrr r�r�r�r�r�sB&
"'
#
	

			

 



c@sPeZdZedd�edd�edd�d�ZdZdZdZefdd�Zd	d
�Z	dAdd
�Z
dd�ZdBdd�Zdd�Z
dd�Zdd�Zdd�Zdd�Zdd�Zdd �Zd!d"�Zd#d$�Zd%d&�Zd'd(�ZdCd)d*�Zd+d,�Zd-d.�Zd/d0�ZdDd1d2�ZdEd3d4�Zd5d6�Zd7d8�ZdFd9d:�Z dGd;d<�Z!dHd=d>�Z"dId?d@�Z#eZ$eZ%eZ&eZ'eZ(eZ)eZ*eZ+eZ,dS)J�
TNavigatorg�?g)r�rrr�rr�cCsB|j|_|j|_||_d|_|j�d|_|j|�tj	|�dS)N)
�DEFAULT_ANGLEOFFSET�_angleOffset�DEFAULT_ANGLEORIENT�_angleOrientr�
undobufferr:rr%r`)r�rr�r�r�r��s
zTNavigator.__init__cCstdd�|_tj|j|_dS)Ng)r�	_positionr%�START_ORIENTATIONr�_orient)r�r�r�r�r`�szTNavigator.resetNcCsL|dkr|jS|dkrdS||_|dkr6d|_d|_n|jd|_d	|_dS)
Nr�rrrr�g@)r�rr)r�rr�)rr'r)�_fullcircle)r�rr�r�r�rszTNavigator._setmodecCs0||_d||_|jdkr"d|_n
|d|_dS)Nihr�rg@)r.�
_degreesPerAUrr')r��
fullcircler�r�r��_setDegreesPerAUs


zTNavigator._setDegreesPerAU��v@cCs|j|�dS)N)r1)r�r0r�r�r�r:szTNavigator.degreescCs|jdtj�dS)Nr�)r1r�r�)r�r�r�r�r^4szTNavigator.radianscCs|j|j|}|j|�dS)N)r+r-�_goto)r�r;Zender�r�r��_goBszTNavigator._gocCs||j9}|jj|�|_dS)N)r/r-r�)r�r�r�r�r��_rotateGs
zTNavigator._rotatecCs
||_dS)N)r+)r��endr�r�r�r3LszTNavigator._gotocCs|j|�dS)N)r4)r�r;r�r�r�rCPszTNavigator.forwardcCs|j|�dS)N)r4)r�r;r�r�r�r/gszTNavigator.backcCs|j|�dS)N)r5)r�r�r�r�r�r_{szTNavigator.rightcCs|j|�dS)N)r5)r�r�r�r�r�rP�szTNavigator.leftcCs|jS)N)r+)r�r�r�r�r[�szTNavigator.poscCs
|jdS)Nr)r+)r�r�r�r�r|�szTNavigator.xcorcCs
|jdS)Nr�)r+)r�r�r�r�r}�szTNavigator.ycorcCs,|dkr|jt|��n|jt||��dS)N)r3r)r�r�r�r�r�r�rI�szTNavigator.gotocCs|jdd�|jd�dS)Nr)rIrd)r�r�r�r�rL�szTNavigator.homecCs|jt||jd��dS)Nr�)r3rr+)r�r�r�r�r�riszTNavigator.setxcCs|jt|jd|��dS)Nr)r3rr+)r�r�r�r�r�rjszTNavigator.setycCsT|dk	rt||�}t|t�r"|}n$t|t�r6t|�}nt|t�rF|j}t||j�S)N)rr�r�r%r+�abs)r�r�r�r[r�r�r�r;$s




zTNavigator.distancecCs�|dk	rt||�}t|t�r"|}n$t|t�r6t|�}nt|t�rF|j}||j\}}ttj||�dtjd�d}||j	}|j
|j||jS)Ng�f@r�g�v@)
rr�r�r%r+rr��atan2r�r/r'r)r.)r�r�r�r[�resultr�r�r�ruDs




 
zTNavigator.towardscCsJ|j\}}ttj||�dtjd�d}||j}|j|j||jS)Ng�f@r�g�v@)	r-rr�r8r�r/r'r)r.)r�r�r�r9r�r�r�rJgs

 
zTNavigator.headingcCs>||j�|j}|j}||d||d}|j|�dS)Ng@)rJr)r.r5)r�Zto_angler�Zfullr�r�r�rdvszTNavigator.setheadingcCst|jr|jjdg�d|j_|j�}|dkr2|j}|dkrjt|�|j}dttdt|�dd�|�}d||}d|}d	|tj	|tj
d
|j�}|dkr�|||}}}|j�}	|j
�}
|dkr�|jdd�n
|jd�|j|�x:t|�D].}|j|�|j|�|jd�|j|��qW|j|�|dk�rV|j|	|
�|j|�|j�rpd|j_dS)
N�seqTr��g@g�M@g�?g�?g@g�f@rF)r*r�rrpr.r7r��minr�r�r�r/�_tracerr=r5rcr4)r��radiusZextent�stepsrpZfracr*Zw2�lZtrZdlrar�r�r�r4�s>""






zTNavigator.circlecCsdS)Nr�)r�r�r�r�r�rp�szTNavigator.speedcCsdS)Nr�)r��arr�r�r�r=�szTNavigator._tracercCsdS)Nr�)r�rr�r�r�r=�szTNavigator._delay)N)r2)N)N)N)NN)r)NN)N)-r�r�r�rr,ZDEFAULT_MODEr&r(r�r`rr1r:r^r4r5r3rCr/r_rPr[r|r}rIrLrirjr;rurJrdr4rpr=r=r@r3r0rbrQr\rerfrcr�r�r�r�r%�sV

	


#
 
#
A


r%c@s�eZdZedfdd�Zededfdd�Zd-d	d
�Zd.dd�Zd
d�Zdd�Z	dd�Z
d/dd�Zdd�Zdd�Z
dd�Zdd�Zdd�Zdd �Zd0d!d"�Zd1d$d%�Zd2d'd(�Zd)d*�Zd+d,�ZeZeZeZe	Ze	ZeZeZdS)3�TPenracCs||_d|_tj|�dS)N)�_resizemoder*rB�_reset)r�rar�r�r�r��sz
TPen.__init__rWrAcCsFd|_d|_||_||_d|_d|_d|_d|_d|_d|_	d|_
dS)Nr�Tr���?�)rErE)rErFrFrE)�_pensize�_shown�	_pencolor�
_fillcolor�_drawing�_speed�_stretchfactor�_shearfactor�_tilt�_shapetrafo�
_outlinewidth)r�rWrAr�r�r�rD�szTPen._resetNcCs.|dkr|jS|j�}|dkr*|j|d�dS)N�auto�userr�)ra)rRrSr�)rCrurV)r�Zrmoder�r�r�ra�s
zTPen.resizemodecCs|dkr|jS|j|d�dS)N)rY)rGrV)r�rzr�r�r�rYszTPen.pensizecCs|js
dS|jdd�dS)NF)rX)rKrV)r�r�r�r�rZ/s
z
TPen.penupcCs|jr
dS|jdd�dS)NT)rX)rKrV)r�r�r�r�rX=s
zTPen.pendowncCs|jS)N)rK)r�r�r�r�rNKs
zTPen.isdowncCsjdddddd�}|dkr|jS||kr0||}n*d|koBdknrVtt|��}nd}|j|d	�dS)
Nrr�r�r�r�)ZfastestZfast�normalZslowZslowestg�?g%@)rp)rLr�rrV)r�rpZspeedsr�r�r�rpZs
z
TPen.speedcGs�|rht|�}|dkr"|d}}n"|dkr4|\}}n|dkrD|}}|j|�}|j|�}|j||d�n|j|j�|j|j�fSdS)Nr�rr�r�)rWrA)rdrrVrrIrJ)r�rr@ZpcolorZfcolorr�r�r�r9�s 


z
TPen.colorcGs:|r*|j|�}||jkrdS|j|d�n|j|j�SdS)N)rW)rrIrVr)r�rr9r�r�r�rW�s

z
TPen.pencolorcGs:|r*|j|�}||jkrdS|j|d�n|j|j�SdS)N)rA)rrJrVr)r�rr9r�r�r�rA�s

zTPen.fillcolorcCs|jdd�dS)NT)�shown)rV)r�r�r�r�ro�szTPen.showturtlecCs|jdd�dS)NF)rU)rV)r�r�r�r�rK	szTPen.hideturtlecCs|jS)N)rH)r�r�r�r�rO	s
zTPen.isvisiblecKs�|j|j|j|j|j|j|j|j|j|j	|j
d�}|p8|s>|St|t�rN|}ni}|j
|�i}x|D]}||||<qfW|jr�|jjd|f�d}d|kr�|j|dkr�d}d|kr�t|dt�r�|j|df�|d<|j|dkr�d}d|k�r|j|dk�rd}|�r|j�d|k�r*|d|_d|k�r>|d|_d|k�rR|d|_d|k�r�t|dt��r�|j|df�|d<|d|_d	|k�r�|d	|_d
|k�r�|d
|_d|k�r�|d}t|ttf��r�||f}||_d|k�r�|d|_d
|k�r
|d
|_	d|k�r|d|_d|k�r2|d|_
d|k�sPd|k�sPd|k�r�|j\}	}
|j}tj|j
�tj|j
�}}
|	|
|
||
||	||
|
||f|_|j�dS)N)rUrXrWrArYrpra�
stretchfactorrnr,rsrVFrXTrWrYrArprarVrnr,rUrs)rHrKrIrJrGrLrCrMrNrQrOr��dictr,r*r�r�r�_newLiner�r�r�r�r�rPr;)r�rVZpendictZ_pd�pZ_p_bufr�ZnewLineZsfZscxZscyZshf�sa�car�r�r�rV 	s�/


























zTPen.penTcCsdS)Nr�)r��usePosr�r�r�rX�	sz
TPen._newLineFcCsdS)Nr�)r�r�Zforcedr�r�r�r;�	szTPen._updatecCsdS)Nr�)r�rr�r�r�r�	szTPen._colorcCsdS)Nr�)r�rr�r�r�r�	szTPen._colorstr)N)N)N)N)T)TF)r�r�r�r�r�rDrarYrZrXrNrpr9rWrArorKrOrVrXr;rrrzryr]rUr=rqrMr�r�r�r�rB�s6


&.%$



rBc@seZdZdd�Zdd�ZdS)�_TurtleImagecCs||_d|_|j|�dS)N)r�r_�	_setshape)r�r��
shapeIndexr�r�r�r��	sz_TurtleImage.__init__cs|j�||_|jdko(�j|jknr2dS|jdkoN�j|jknrXdS|jdkrp�j|j�n$|jdkr�x|jD]}�j|�q�W�j|j|_|jdkr��j�|_nH|jdkr؈j�jdj�|_n(|jdk�r�fdd��j|jD�|_dS)NrsrZrtr#csg|]}�j��qSr�)r-)r`r9)r�r�r�rb�	sz*_TurtleImage._setshape.<locals>.<listcomp>)rZrs)	r�r_r_r�r:�_itemr-r[rw)r�r_r9r�)r�r�r^�	s&""




z_TurtleImage._setshapeN)r�r�r�r�r^r�r�r�r�r]�	sr]c@s�eZdZgZdedededfdd�Zdd�Zd	d
�Zdd�Zd
d�Z	dd�Z
dd�Zdd�Zdndd�Z
dd�Zdd�Zdd�Zdd�Zdodd �Zdpd!d"�Zdqd#d$�Zd%d&�Zdrd'd(�Zd)d*�Zdsd+d,�Zd-d.�Zd/d0�Zdtd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zdud<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dvdEdF�Z$dGdH�Z%dIdJ�Z&dKdL�Z'dwdMdN�Z(dOdP�Z)dydUdV�Z*dWdX�Z+dYdZ�Z,d[d\�Z-d]d^�Z.d_d`�Z/e/Z0dzdadb�Z1d{ddde�Z2d|dfdg�Z3d}dhdi�Z4djdk�Z5dldm�Z6eZ7dS)~r
Nrkr�r�cCs6t|t�r||_n~t|t�r:|tjkr2tjj|�||_nVt|ttf�r�xFtjD]}|j	|krP||_PqPWt|�|_tjj|j�nt
d|��|j}tj||j
��tj|�|jj|�|j�|_t||�|_d|_d|_d|_|_||_d|_|j�|_|jg|_|jg|_g|_||_t |�|_!|j"�dS)Nzbad canvas argument %sF)#r��_Screenr�rr
�screensr.rr�r'rrr%r�rrBrr6�drawingLineItemr]r��_poly�
_creatingPoly�	_fillitem�	_fillpathrH�_hidden_from_screen�currentLineItemr+�currentLiner��
stampItems�_undobuffersizer{r*r;)r�Zcanvasrkr�r�r�r�r�r�r��	s@










zRawTurtle.__init__cCs0tj|�tj|�|j�|j�|j�dS)N)r%r`rBrD�_clearrr;)r�r�r�r�r`�	s


zRawTurtle.resetcCs&|dks|dkrd|_n
t|�|_dS)Nr)r*r{)r��sizer�r�r�rh
szRawTurtle.setundobuffercCs|jdkrdS|jj�S)Nr)r*r�)r�r�r�r�rx+
s	
zRawTurtle.undobufferentriescCspd|_|_x|jD]}|jj|�qW|jj�|_g|_|jrN|jj	|j
�|jg|_|j�|j|j
�dS)N)rfrgr�r�r:r6rirjrKr.r+r7rhrl)r�r9r�r�r�rm8
s
zRawTurtle._clearcCs|j�|j�dS)N)rmr;)r�r�r�r�r5F
szRawTurtle.clearcCsF|jj�|jjdkrdSt|j�dkrB|jj|j|j|j|j�dS)Nrr�)	r�rr
rdrjr7rirIrG)r�r�r�r�rU
s
zRawTurtle._update_datacCs||j}|jdkrdS|jdkrD|j�|j�|j�|j|j�n4|j�|jdkrxx|j�D]}|j�q`W|j�dS)Nrr�)	r�r	rrr;r=rr
r+)r�r�rXr�r�r�r;]
s


zRawTurtle._updatecCs|jj||�S)N)r�r*)r��flagrr�r�r�r=o
szRawTurtle._tracercCs|jj|�S)N)r�r)r�rr�r�r�r�
szRawTurtle._colorcCs|jj|�S)N)r�r)r�rr�r�r�r�
szRawTurtle._colorstrcCs�t|t�r|Sy|\}}}Wn(ttfk
rDtdt|���YnX|jjdkrldd�|||fD�\}}}d|ko~dkno�d|ko�dkno�d|ko�dkns�tdt|���d|||fS)	Nzbad color arguments: %sg�?cSsg|]}td|��qS)g�o@)r)r`r�r�r�r�rb�
sz!RawTurtle._cc.<locals>.<listcomp>rrzbad color sequence: %sz
#%02x%02x%02x)r�r�rr�rrr�r)r�rr�rrr�r�r��_cc�
s
Hz
RawTurtle._cccs�|j�|j|j�|j}d|_d|_t|�}�|_||_�|_t�|jj�|_�jj|��j	|jjj
}|dkr��j�|j_nJ|dkr��j
�j	dj�|j_n*|dkrʇfdd��j	|jjjD�|j_�j�|_|j�|S)NrsrZr#rtcsg|]}�j��qSr�)r-)r`r9)r�r�r�rb�
sz#RawTurtle.clone.<locals>.<listcomp>)r�rXrKr�rr]r_rr.r�r_r-r`r[rwr6rir;)r�r��q�ttyper�)r�r�r8�
s,

zRawTurtle.clonecCsB|dkr|jjS||jj�kr*td|��|jj|�|j�dS)NzThere is no shape named %s)r�r_r�rrrr^r;)r�rr�r�r�rk�
szRawTurtle.shapecCs�||ko|kodknr8|j\}}|||jfS|dksH|dkrPtd��|dk	rt|dkrj||f}q�||f}n|dk	r�|jd|f}n|j}|dkr�|j}|jd||d�dS)Nrz(stretch_wid/stretch_len must not be zerorS)rarVr,)rMrQrrrV)r�Zstretch_widZstretch_lenr,rVr�r�r�rl�
s "


zRawTurtle.shapesizecCs |dkr|jS|jd|d�dS)NrS)rarn)rNrV)r�Zshearr�r�r�rnszRawTurtle.shearfactorcCs<||j|j}|tjddtj}|jd|d�dS)Ng�f@r�rS)rars)r/r)r�r�rV)r�r�rsr�r�r�rgszRawTurtle.settiltanglecCs>|dkr0|jdtj|j}||j|jS|j|�dS)Ng�f@)rOr�r�r)r/r.rg)r�r�rsr�r�r�rt3szRawTurtle.tiltanglecCs|j||j��dS)N)rgrt)r�r�r�r�r�rsMszRawTurtle.tiltcCs6||ko&|ko&|ko&dknr2|jS|j\}}}}|dk	rL|}|dk	rX|}|dk	rd|}|dk	rp|}||||dkr�td��||||f|_tj||�dtj}	tj|	�tj|	�}
}|||
||||
||
||||
|||f\}}
}}||f|_|
||_|	|_	|j
dd�dS)Nrz0Bad shape transform matrix: must not be singularr�rS)ra)rPrrr�r8r�r�r�rMrNrOrV)r��t11�t12�t21�t22Zm11Zm12Zm21Zm22ZalfarZr[Za11Za12Za21Za22r�r�r�rm`s,,(

zRawTurtle.shapetransformcs^|j�|j\��|j\��t���j�j�}dt|�|\�������fdd�|D�S)Ng�?csFg|]>\}}��|�|�j��|�|�jf�qSr�)r(r))r`r�r�)�e0�e1�p0�p1r�r�r�rb�sz(RawTurtle._polytrafo.<locals>.<listcomp>)r�r+r-rr)r(r7)r�ry�er�)rwrxryrzr�r��
_polytrafo�s

zRawTurtle._polytrafocCs2|jj|jj}|jdkr.|j|j|jdk�SdS)Nrsrt)r�r�r�r_r_�
_getshapepolyrw)r�rkr�r�r�rG�s
zRawTurtle.get_shapepolyFcsx|jdks|r|j\����n>|jdkrNtd|jd�}|dd|f\����n|jdkr\|St����fdd�|D��S)	NrSrRr�g@rr�cs0g|](\}}�|�|�|�|f�qSr�r�)r`r�r�)rsrtrurvr�r�rb�sz+RawTurtle._getshapepoly.<locals>.<listcomp>)rCrP�maxrGr�)r�rsrtr@r�)rsrtrurvr�r}�s

zRawTurtle._getshapepolyc	Cs�|j}|j|jj}|j}|jj}|jo:|jdko:|jdk�r*d|_	|j
}|dkr�|jdkrbd}n|jdkrt|j}n|j
}|j|j|��}|j|j}}|j|||||dd�nx|d	kr�|j||j|�n^|d
k�r�x�t||�D]D\}	\}
}}|j|j|
d��}
|j|	|
|j|�|j|�|j
dd�q�Wn||j	�r6dS|dk�rR|j|ddd�nN|d	k�rv|j||j|jdj
�n*|d
k�r�x|D]}	|j|	ddd��q�Wd|_	dS)NrFrsr�r�rRT)rr,rzr3rZrtr�r#�rr�rr�rr)rr�r��rr�rr�rr)r�r�r�)r�r�r�r_r_r`rHr
r	rhrwrCrGrQr|r}rJrIr5r]r+�ziprp)r�r�rkrrZtitem�tshaper*�fc�ocr9ryr�r�r�r�sF







zRawTurtle._drawturtlec	Cs\|j}|j|jj}|j}|j}|dkr�|j�}|jdkr@d}n|jdkrR|j}n|j	}|j
|j|��}|j|j
}}|j|||||dd�n�|dkr�|jd�}|j||j|�n�|d	k�r<g}x|D]}	|j�}
|j|
�q�Wt|�}xRt||�D]D\}
\}}}|j
|j|d��}|j|
||j|�|j|�|j	dd�q�W|jj|�|jjd
|f�|S)Nrsr�r�rRT)rr,rzr3rZr�rtrr)r�r�r�r_r_rwr-rCrGrQr|r}rJrIr5r[r]r+r.r�r�rprkr*r�)r�r�rkrrr��stitemr*r�r��elementr9ryr�r�r�rr�s>




zRawTurtle.stampcCs�||jkrHt|t�r0x&|D]}|jj|�qWn|jj|�|jj|�d|f}|j}||jkrddS|jj|�}|jj|�||j	kr�|j	d|j
|_	|jj|j	d|j
dg�dS)Nrrr�)rkr�r�r�r:r"r*r}�indexr~r|�insert)r��stampidZsubitemr9Zbufr�r�r�r��_clearstamps




zRawTurtle._clearstampcCs|j|�|j�dS)N)r�r;)r�r�r�r�r�r6s
zRawTurtle.clearstampcCsb|dkr|jdd�}n&|dkr0|jd|�}n|j|d�}x|D]}|j|�qDW|j�dS)Nr)rkr�r;)r�rZtoDeleter9r�r�r�r7,s
zRawTurtle.clearstampsc
Cs�|j|j|jt|jt�f}|j}d|j|||j|j	dd�|j
|j�|jdd�ff}|jrh|jj
|�|j}|jo||jdk�r\||}|d|jd|d|jd}dt|ddd|j|j�}|d|}	x`td|�D]R}
|
dkr�d	}nd
}||	|
|_|j�r2|j|j||jf|j|j|�|j�q�W|j�r\|j|jdd|jd�|j�rp|j	j|�t|jt��r�|jj|�||_|j�r�|jj|�t|j	�d
k�r�|j�|j�dS)N�gor�rr�g�?r�g�������?g�?TFr�)rrz�*�rr�rr)r�r�)rKrIrGr�rgr�r�r+rirjrfr�r*r�rLr	r(r)r�rcr7rcr;r.rerdrdrX)r�r6�go_modesr�Z
undo_entry�start�diff�diffsq�nhops�deltarr3r�r�r�r3HsR

$$
zRawTurtle._gotocs"|\}}}}|\}}}}	|\}
}}�|j�t|j|�dkrDtd�|
|_||_|ddgkrbd}
n|}
�j|
||
|d���fdd�|jD�}x"|D]}�j|�|jj	|�q�W|}|j
oĈjdk�r�||}|d�jd	|d�j
d	}dt|dd
d|j
|j
�}|d|}x^td|�D]P}|dk�rDd
}nd}||||_|�rv�j|j||jf|||�|j��q0W|�r��j|jdd|d�||_|j�r�t|j�dk�r�|jj�|jgk�r�d|_d|_|	�r|jgk�rd|_td�n|jdk	�r|jj�|j�dS)Ng�?z$undogoto: HALLO-DA-STIMMT-WAS-NICHT!rr�)rrzcs&g|]}|�kr�j|�dkr|�qS)r�)r_)r`ra)r�r�r�r�rb�s
z'RawTurtle._undogoto.<locals>.<listcomp>r�r�r�g�������?g�?TFzUnwahrscheinlich in _undogoto!)rr)rr�rr�rr)r�r�)r�r7r+r�rirjr7r�r:r"rLr	r(r)r�rcrcr;rerdrdr�rg)r��entry�old�newr�ZcoodataZdrawingZpcZpsrBZcLIZcLreZusepcZtodeleterar�r�r�r�r�rr3r�)r�r�r��	_undogoto}sb

$$






zRawTurtle._undogotocCs�|jr|jjd||jf�||j9}|jj|�}|jj}|dkr�|jdkr�d|j}dtt	|�|�}d||}x&t
|�D]}|jj|�|_|j�q~W||_|j�dS)N�rotr�rg@g�?)r*r�r/r-r�r�r	rLr�r7rcr;)r�r�Z	neworientr Zanglevelr?r�r�r�r�r�r5�s

zRawTurtle._rotateTcCsnt|j�dkrD|jj|j|j|j|j�|jj�|_|jj	|j�n|jj|jdd�g|_|rj|j
g|_dS)Nr�T)r3)rdrjr�r7rirIrGr6r�r.r+)r�r\r�r�r�rX�szRawTurtle._newLinecCst|jt�S)N)r�rgr�)r�r�r�r�rB�szRawTurtle.fillingcCsX|j�s"|jj�|_|jj|j�|jg|_|j�|j	rL|j	j
d|jf�|j�dS)N�	beginfill)rBr�r-rfr�r.r+rgrXr*r�r;)r�r�r�r�r1�s
zRawTurtle.begin_fillcCs^|j�rZt|j�dkrF|jj|j|j|jd�|jrF|jjd|jf�d|_|_|j	�dS)Nr�)r�dofill)
rBrdrgr�r5rfrJr*r�r;)r�r�r�r�r>
s
zRawTurtle.end_fillcGs8|sNt|ttf�r0|j|�}|jt|jd�}qr|j}|sr|jt|jd�}n$|dkrh|jt|jd�}|j|�}t|jd�r�|jj	|j
||�}|jj|�|j
r�|j
jd|f�n�|j�}|j
r�|j
jdg�d|j
_z>|j�dkr�|j�|j�|j|�|j|�|jd�Wd|j|�X|j
�r4d|j
_dS)	Nr��_dotr<r:TrRrF)r�r�r�rrGr~rI�hasattrr�r�r+r�r.r*r�rVrrarMrXrYrWrC)r�rnr9r9rVr�r�r�r<
s:



z
RawTurtle.dotcCsB|jj|j||||j�\}}|jj|�|jr>|jjd|f�|S)N�wri)r�rHr+rIr�r.r*r�)r�rFrGrEr9r6r�r�r�rHG
szRawTurtle._writerP�Arialr�rTcCs`|jr|jjdg�d|j_|jt|�|j�|�}|rN|j�\}}|j||�|jr\d|j_dS)Nr:TF)r*r�rrHr�rur[re)r��argZmoverGrEr6r�r�r�r�r�r{Q
szRawTurtle.writecCs|jg|_d|_dS)NT)r+rdre)r�r�r�r�r2n
s
zRawTurtle.begin_polycCs
d|_dS)NF)re)r�r�r�r�r?|
szRawTurtle.end_polycCs|jdk	rt|j�SdS)N)rdr�)r�r�r�r�rD�
s

zRawTurtle.get_polycCs|jS)N)r�)r�r�r�r�rF�
szRawTurtle.getscreencCs|S)Nr�)r�r�r�r�rH�
szRawTurtle.getturtlecCs|jj|�S)N)r�r)r�rr�r�r�r=�
szRawTurtle._delayr�cCs"|jj|jj|||�|j�dS)N)r�rQr�r`r;)r�rKr
rPr�r�r�rR�
szRawTurtle.onclickcCs"|jj|jj|||�|j�dS)N)r�rRr�r`r;)r�rKr
rPr�r�r�rT�
szRawTurtle.onreleasecCs|jj|jj|||�dS)N)r�rSr�r`)r�rKr
rPr�r�r�rS�
szRawTurtle.ondragcCs,|jdkrdS|dkr@|\}}|j|||j�|jj�}n�|dkr\|d}|j|�n�|dkrp|j|�n�|dkr�|d}|jj|�|jj	|�n�|dkr�|d}|jj
|dddd	�nh|d
k�r|d}d|_|_||jk�r(|jj|�|jj	|�n$|dk�r(t
j||d�|jj�dS)Nr�rrrr�r�r<r�r�)rr,r�rV)r�r<�rr�rr�rr)r�r�r�)r*r5r/r�r6r�r�r:r�r"r5rfrgrBrV)r��actionrxr�ZdegPAUZdummyr�r9r�r�r��_undos8



zRawTurtle._undocCsp|jdkrdS|jj�}|d}|dd�}|dkr`x6|r\|j�}|j|d|dd��q6Wn|j||�dS)Nrr�r:)r*r�r�)r�r9r�rxr�r�r�rw&s

zRawTurtle.undo)NN)N)NNN)N)N)NNNN)F)N)T)N�r�r�rT)FrPr�)N)r�N)r�N)r�N)8r�r�r�rbr�r�r`rhrxrmr5rr;r=rrrpr8rkrlrnrgrtrsrmr|rGr}rrrr�r6r7r3r�r5rXrBr1r>r<rHr{r2r?rDrFrHrEr=rRrTrSr�rwrvr�r�r�r�r
�	sn%

(

(


(

(-
5A

0







 cCstjdkrt�t_tjS)N)r�_screenrar�r�r�r�r	Is
c@sfeZdZdZdZedZdd�Zededededfd	d
�Zdd�Z	d
d�Z
dd�Zdd�ZdS)raNr)cCs�tjdkr4t�t_|_|jjtj�|jj|j�tjdkr�td}td}td}td}td}td}|jj	||||�|jj
�t_tj|tj�|j
||||�dS)Nrzr�r�r�r�r�)ra�_rootrr)�_titler�_destroyr�r�rrrr�r&)r�rzr�r�r�r�r�r�r�r�r�Ws

z_Screen.__init__rzr�r�r�cCs�t|jd�sdS|jj�}|jj�}t|t�rNd|ko@dknrN||}|dkrb||d}t|t�r�d|ko~dknr�||}|dkr�||d}|jj||||�|j�dS)Nrrr�r�)r�r�rr r�r�rr,)r�rzr�rrrAZshr�r�r�r&ms

""z
_Screen.setupcCs tjdk	rtjj|�|t_dS)N)rar�r)r�)r�Ztitlestringr�r�r�r)�s
z
_Screen.titlecCs:|j}|tjkr(dt_dt_dt_dt_dt_|j�dS)NF)	r�rarrr�r�rrr)r��rootr�r�r�r��s
z_Screen._destroycCs|j�dS)N)r�)r�r�r�r�r�sz_Screen.byecsN�fdd�}�j|�tdr"dSy
t�Wntk
rHtd�YnXdS)Ncs�j�dS)N)r)r�r�)r�r�r��exitGracefully�sz+_Screen.exitonclick.<locals>.exitGracefullyr�r)rRr�r�AttributeError�exit)r�r�r�)r�r�r�s

z_Screen.exitonclick)
r�r�r�r�r�r�r�r�r&r)r�rrr�r�r�r�raQs'
rac@s0eZdZdZdZedededfdd�ZdS)rNrkr�r�cCs,tjdkrt�t_tj|tj|||d�dS)N)rkr�r�)rr�r	r
r�)r�rkr�r�r�r�r�r��s

zTurtle.__init__)r�r�r�rr�r�r�r�r�r�r�r�s
�turtle_docstringdictcCsi}x"tD]}d|}t|�j||<q
Wx"tD]}d|}t|�j||<q.Wtd|d���}tdd�|j�D��}|jd�x8|dd
�D](}|jd	t|��|jd
||�q�W|d}|jd	t|��|jd||�|jd�|j	�WdQRXdS)Nz_Screen.zTurtle.z%s.pyr*cSs"g|]}|jd�dtkr|�qS)r�r�)r�_alias_list)r`r�r�r�r�rbsz'write_docstringdict.<locals>.<listcomp>zdocsdict = {

r�z%s :
z        """%s
""",

z        """%s
"""

z}
r�r�)
�_tg_screen_functionsr��__doc__�_tg_turtle_functionsr�r!r�r{�repr�close)r��docsdict�
methodnamer�r�r�r�r�r�r~�s$



cCsddd|j�i}t|�}|j}x@|D]8}y||t|�_Wq$tk
rZtd|�Yq$Xq$WdS)Nz!turtle_docstringdict_%(language)sr�zBad docstring-entry: %s)ru�
__import__r�r�r�r�r�)Zlang�modname�moduler�r�r�r�r��read_docstringss
r�r�zCannot find docsdict forz;Unknown Error when trying to import %s-docstring-dictionaryc
Cs�d}}tj|j�\}}}|dd�}|dd�}|jp:g}dd�|D�}dgt|�t|�|}dd�t||�D�}	|dk	r�|	jd|�|jd|�|dk	r�|	jd|�|jd|�dj|	�}d	|}dj|�}d	|}||fS)
Nr�r�cSsg|]}d|f�qS)z=%rr�)r`r�r�r�r�rb;sz"getmethparlist.<locals>.<listcomp>cSsg|]\}}||�qSr�r�)r`r�Zdfltr�r�r�rb=s�*z**z, z(%s))�inspectZgetargs�__code__�__defaults__rdr�r.r)
�obZdefTextZcallTextrZvarargsZvarkwZitems2ZrealArgsZdefaultsZitems1r�r�r��getmethparlist+s&


r�cCsJddl}|dkrdStd}|jd|d�}|jd|�}|jd|�}|S)Nrr�z%s.r�z \(.+ %s\):�:)�rer��replace�compile�sub)�docstrr�Z
turtlename�	newdocstr�parexpr�r�r��_turtle_docreviseJsr�cCsJddl}|dkrdStd}|jd|d�}|jd|�}|jd|�}|S)Nrr�z%s.r�z \(.+ %s\):r�)r�r�r�r�r�)r�r�Z
screennamer�r�r�r�r��_screen_docreviseVsr�ardef {name}{paramslist}:
    if {obj} is None:
        if not TurtleScreen._RUNNING:
            TurtleScreen._RUNNING = True
            raise Terminator
        {obj} = {init}
    try:
        return {obj}.{name}{argslist}
    except TK.TclError:
        if not TurtleScreen._RUNNING:
            TurtleScreen._RUNNING = True
            raise Terminator
        raise
c
Cspxj|D]b}t||�}t|�\}}|dkr6td||�qtj|||||d�}	t|	t��||j�t�|_qWdS)Nr�z>>>>>>)�obj�initrZ
paramslistZargslist)�getattrr�r��__func_body�formatr��globalsr�)
Z	functionsr�r�r�Z	docreviser�r�Zpl1Zpl2Zdefstrr�r�r��_make_global_funcsvs



r�zTurtle._screenzScreen()zTurtle._penzTurtle()�__main__cCst�rt�nt�dS)N)rNr]rUr�r�r�r��	switchpen�sr�cCs~t�td�t�td�t�td�xjtd�D]^}|dkrFt�x td�D]}td�t	d�qPW|dkr~t
d�t�t�td	�t�q4Wtd
�t
d�td�t�td�td�td�td�td
�t�t
dd
�t
dd
�t
d�x2td�D]&}td�t	d�td�td��qWtd�t�x2td�D]&}td�t	d�td�td��qJWt�dS)NT�dr�r�r�r�ZZmaroonrr�r�F�Z
startstartr��redr�)r`r*ryr0r=rzrcr1rCrPr9r>r_r{)rar�r�r�r��demo1�sX


r�cCs^td�t�td�ttdd��tdd�d}td�x td�D]}t�t	|d�qDWt
d�xt�rtt�qfWt
�td�td	�d}td
�td�td�x�td,d
�D]t}|dkr�t�td	d|dd|�x td�D]}t|�td�q�Wt�|d7}td�tt�dd�q�Wtd�t�td�td�t�tdd�td�t�x4td�D](}t	dd�td�td�td��qrWt�td�t�td�t�td�t�}|jd�t�}|jd�|jd�|j
�|jd�|jd�|j�|jdd�|jd�|j�|jd�|jdd�|jd�|jd�tt|��d}xp|j|�dk�r�|jd�|jd�|j|j|��|jd�|d dk�r�|j �|j �t�|d7}�qpW|j
d!d-d$d%�|jd&�|jd�d'd(�}t!j"d�xt��r4|j�|j��qW|jd�|j
d)d.d+�|j#|d�dS)/Nr�r�rg@r��r�zwait a moment...rZgreenr�r�r���x��Frr�Zyellowr��2r�rRi�(r�ZblueZorangeg@g333333�?rzCAUGHT! r��boldr_)rErGr�cSst�t�dS)N)rr)r#r$r�r�r��babaszdemo2.<locals>.babaz  Click me!�Courier)rEr�)r�r�r�)r�r�r�)$rprqrYrdrur;rbrcr�r4r{rxrwr`rQrrWr1rAr@r>r]rUr9rkrHrarrPryrIr=rr�timeZsleeprR)r>r�ZlaengeraZtrir�r�r�r�r�r��demo2�s�



















r�zTdef %(method)s(self, *args, **kw): return self.%(attribute)s.%(method)s(*args, **kw))r�)EZ_verZtkinterr�r�r�r�r�rZos.pathrrr�copyrrZ_tg_classesr�r�Z
_tg_utilities�__all__r�r�r�r�r�r�r�rr�r�r�r�r�rr�rr�objectr!r�rrrr{rr%rBr]r
rr	rarr
r~r�Z	_LANGUAGE�ImportErrorr�r�r�r�r�rrr�r�r�r�rr�r�r�r��<module>gs







4
c	/&.O}
"



5c

Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists