IP : 18.225.234.226 Hostname : host45.registrar-servers.com Kernel : Linux host45.registrar-servers.com 4.18.0-513.18.1.lve.2.el8.x86_64 #1 SMP Sat Mar 30 15:36:11 UTC 2024 x86_64 Disable Function : None :) OS : Linux PATH: / home/ ./ ../ lib64/ pgsql/ ../ python3.8/ unittest/ ./ ./ ../ __pycache__/ ./ turtle.cpython-38.opt-2.pyc/ /

U

e5dd1�O@s2dZddlZddlZddlZddlZddlZddlZddlm Z m
Z
m Z ddl m
Z
ddlmZdddd d
d d 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��Zz ee�Wnek
�red��YnXGd�d�de�Zd�d��Zd�d��Zd�Zd�d�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�Z7ze7d�k�rne6e7�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�r.d�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�
Terminator��?g�?i�i,�standard��?�
i��classic�black�noresizeTZenglish�turtle�screenzPython Turtle GraphicsF)rz�height� canvwidth�
canvheight� leftright� topbottomrrr�undobuffersizerkrWrAra�visible�language�
exampleturtle�
examplescreenr)�
using_IDLEc Cs�t|d��}|��}W5QRXi}|D]�}|��}|r&|�d�rBq&z|�d�\}}Wn(tk
r|td||f�Yq&YnX|��}|��}|dkr�t|�}n4zd|kr�t|�}nt |�}Wntk
r�YnX|||<q&|S)N�r�#�=zBad line in config-file %s:
%s)�True�False�Nonez''z""�.)
�open� readlines�strip�
startswithr�
ValueError�print�eval�float�int)�filename�fZcfglines�cfgdict�line�key�value�r��/usr/lib64/python3.8/turtle.py� config_dict�s0 


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

r�z"No configfile read, reason unknownc@s\eZdZdd�Zdd�Zdd�Zdd�Zd d
�Zd d �Zd
d�Z dd�Z
dd�Z dd�Z dS)rcCst�|||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|�Sr�)�
isinstancerr�r�r�r��__mul__�s
 z
Vec2D.__mul__cCs2t|t�st|t�r.t|d||d|�StSr�)r�r�r�r�NotImplementedr�r�r�r��__rmul__szVec2D.__rmul__cCs"t|d|d|d|d�Sr�r�r�r�r�r��__sub__sz
Vec2D.__sub__cCst|d |d �Sr�r��r�r�r�r��__neg__sz
Vec2D.__neg__cCs|dd|dddS)Nr�r�r�r�r�r�r�r��__abs__
sz
Vec2D.__abs__cCsjt|d |d�}|tjd}t�|�t�|�}}t|d||d||d||d|�S)Nr�r��f@)r�math�pi�cos�sin)r��angleZperp�c�sr�r�r��rotate sz Vec2D.rotatecCs|d|dfSr�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�scCsTt|j�}|��|D]}t||�q|j��D]\}}t|�tjkr0|||<q0dSr�) �list� __bases__�reverse� __methodDict�__dict__�items�type�types� FunctionType)r��_dictZbaseListZ_superr�r�r�r�r�r�!s
 r�cCsi}t||�|��Sr�)r��keys)r�r�r�r�r�� __methods+s
r�zTdef %(method)s(self, *args, **kw): return self.%(attribute)s.%(method)s(*args, **kw)r�c Cs�i}t||�i}t|�}|��D]B}|dd�dksd|dd�dksd||ksd||krXq"||||<q"|��D]D\}} || d�}
t|t�r�t||d�} t| |
�t|||
|�qndS)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��__forwardmethods5s
 0

 �
r�c@s`eZdZddd�Zddd�Zd d
�Zd d �Zd
d�Zdd�Zdd�Z dd�Z
dd�Z dd�Z dS)r���^�Xc
Cs0tjj||||d�|��|_|||_|_|||_|_d|_ tj
||||j tj dd�|_ tj
||j jtjd�|_tj
||j jd�|_|j j|jj|jjd�|jdd dd
�|jdd dd
�|j jd |d ddd d d d �|jjd |d dd d d d d �|jjd |d d dd d d d �|��|j�d
|j�dS)N)rzr��whiter�)rzr��bgZreliefZ borderwidth)�commandZorient)r�)ZxscrollcommandZyscrollcommandrr�)ZweightZminsize�news�ZpadxZin_Zpady�row�columnZrowspanZ
columnspanZstickyz <Configure>)�TK�Frame�__init__�winfo_toplevelZ _rootwindowrzr�r�r�r��CanvasZSUNKEN�_canvasZ ScrollbarZxviewZ
HORIZONTAL�hscrollZyview�vscrollZ configure�setZ rowconfigureZcolumnconfigure�gridr`�bind�onResize)r��masterrzr�r�r�r�r�r�r�PsN

� � ����zScrolledCanvas.__init__NcCs�|r
||_|r||_|r||_|jj||j d|j d|jd|jdfd�|j�d|j|jd|j�|j�d|j|jd|j�|� �dS)Nr�)r�� scrollregionr��)
r�r�r�r��config� xview_movetorz� yview_movetor��
adjustScrolls�r�r�r�r�r�r�r�r`is&����zScrolledCanvas.resetc
Cs�|j��}|j��}|j�d|j||j�|j�d|j||j�||jks`||jkr�|jjd|ddddddd�|j jd|ddddddd�n|j�
�|j �
�dS)Nr�r�rr�r�) r�� winfo_width� winfo_heightr r�r
r�r�rrZ grid_forget)r��cwidth�cheightr�r�r�r {s&

��
zScrolledCanvas.adjustScrollscCs |��dSr�)r )r��eventr�r�r�r�szScrolledCanvas.onResizecGs |jj|�Sr�)r��bbox�r��argsr�r�r�r�szScrolledCanvas.bboxcOs|jj||�Sr�)r��cget�r�r�kwargsr�r�r�r�szScrolledCanvas.cgetcOs|jj||�dSr�)r�rrr�r�r�r�szScrolledCanvas.configcOs|jj||�dSr�)r�rrr�r�r�r�szScrolledCanvas.bindcOs|jj||�dSr�)r��unbindrr�r�r�r�szScrolledCanvas.unbindcCs|j��dSr�)r�� focus_forcer�r�r�r�r�szScrolledCanvas.focus_force)r�r�r�r�)NNN)
r�r�r�r�r`r rrrrrrrr�r�r�r�rJs�

r�c@sDeZdZdd�Zdd�Zdd�Zdd�Zd d
�Zd d �Zd
d�Z dS)�_RootcCstj�|�dSr�)r��Tkr�r�r�r�r�r��sz_Root.__init__cCs&t|||||�|_|jjddd�dS)Nr�Zboth)�expand�fill)rr�Zpack)r�rzr�rrr�r�r�� setupcanvas�sz_Root.setupcanvascCs|jSr�)r�r�r�r�r��
_getcanvas�sz_Root._getcanvascCs|�d||||f�dS)Nz %dx%d%+d%+d)Zgeometry)r�rzr��startx�startyr�r�r�� set_geometry�sz_Root.set_geometrycCs|�d|�dS)NZWM_DELETE_WINDOW)Z wm_protocol)r��destroyr�r�r�� ondestroy�sz_Root.ondestroycCs|��Sr�)Zwinfo_screenwidthr�r�r�r�� win_width�sz_Root.win_widthcCs|��Sr�)Zwinfo_screenheightr�r�r�r��
win_height�sz_Root.win_heightN)
r�r�r�r�rrr"r$r%r&r�r�r�r�r�src@s(eZdZdd�Zdd�Zdd�Zdd�ZdFd d �Zd
d�ZdGdd�Z dd�Z
dd�Z dd�Z dd�Z
dHdd�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=�Zd>d?�Z d@dA�Z!dBdC�Z"dOdDdE�Z#d S)P�TurtleScreenBasecCstjdd|jd�}|��|S)Nr�)rzr�r)r��
PhotoImage�cv�blank)r�Zimgr�r�r�� _blankimage�szTurtleScreenBase._blankimagecCstj||jd�S)N)�filer)r�r(r))r�r�r�r�r��_image�szTurtleScreenBase._imagecCs�||_t|t�r"|jj}|jj}nJt|j�d��}t|j�d��}|jj| d| d|d|dfd�||_||_d|_|_ dS)Nrzr�r��rr�)
r)r�rr�r�r�rr�xscale�yscale)r�r)�w�hr�r�r�r��s

*zTurtleScreenBase.__init__cCs|jjdddd�S)N)rrrrrrr��r�outline)r)Zcreate_polygonr�r�r�r�� _createpoly�szTurtleScreenBase._createpolyNFc
Cs�g}|D]*\}} |�||j�|�| |j�q|jj|f|��|dk r^|jj||d�|dk rv|jj||d�|dk r�|jj||d�|r�|j�|�dS)N�r)r4�rz��appendr/r0r)�coordsZ
itemconfigureZ tag_raise)
r�Zpolyitem� coordlistrr4rz�top�clr�r�r�r�r�� _drawpoly�s  zTurtleScreenBase._drawpolyc Cs|jjddddddtjd�S)Nrr�r�)rrzZcapstyle)r)Z create_liner�ZROUNDr�r�r�r�� _createline s�zTurtleScreenBase._createlinec Cs�|dk rNg}|D]*\}}|�||j�|�| |j�q|jj|f|��|dk rf|jj||d�|dk r~|jj||d�|r�|j�|�dS)Nr6r7r8) r�Zlineitemr;rrzr<r=r�r�r�r�r�� _drawlines
 zTurtleScreenBase._drawlinecCs|j�|�dSr�)r)�delete�r��itemr�r�r��_delete(szTurtleScreenBase._deletecCs|j��dSr�)r)r,r�r�r�r��_update.szTurtleScreenBase._updatecCs|j�|�dSr�)r)�after�r�rr�r�r��_delay3szTurtleScreenBase._delaycCs4z|j�|�}d}Wntjk
r.d}YnX|S)NTF)r)Z winfo_rgbr�ZTclError)r�r9Zrgb�okr�r�r��_iscolorstring7s  
zTurtleScreenBase._iscolorstringcCs0|dk r |jj|d�|��n |j�d�SdS)N)r�r�)r)rrEr)r�r9r�r�r��_bgcolorAs
zTurtleScreenBase._bgcolorcCst|\}}||j}||j}dddd�}|jj|d| |||||d�} |j�| �\}
} } }
|j��| | dfS)N�swr�Zse)rP�centerr_r�)�text�anchorr�font)r/r0r)Z create_textrr,)r�r[�txt�alignrPrWr�r�rOrCZx0Zy0Zx1Zy1r�r�r��_writeJs

 �
zTurtleScreenBase._writer�csD�dkr�j�|d|�n$��fdd�}�j�|d|||�dS)N� <Button-%s>cs:�j�|j��j�j�|j� �j}}�||�dSr��r)�canvasxr�r/�canvasyr�r0�rr�r���funr�r�r��eventfunes�z+TurtleScreenBase._onclick.<locals>.eventfun�r)Z
tag_unbindZtag_bind�r�rCrZ�num�addr[r�rYr��_onclick\szTurtleScreenBase._onclickcsD�dkr�j�|d|�n$��fdd�}�j�|d|||�dS)Nz<Button%s-ButtonRelease>cs:�j�|j��j�j�|j� �j}}�||�dSr�rUrXrYr�r�r[ws�z-TurtleScreenBase._onrelease.<locals>.eventfunr\r]r�rYr��
_onreleaseks �zTurtleScreenBase._onreleasecsD�dkr�j�|d|�n$��fdd�}�j�|d|||�dS)Nz<Button%s-Motion>csTz:�j�|j��j�j�|j� �j}}�||�Wntk
rNYnXdSr�)r)rVr�r/rWr�r0r�rXrYr�r�r[�s�z*TurtleScreenBase._ondrag.<locals>.eventfunr\r]r�rYr��_ondrag~s zTurtleScreenBase._ondragcs@�dkr�j�d|�n"��fdd�}�j�d|||�dS)NrTcs:�j�|j��j�j�|j� �j}}�||�dSr�rUrXrYr�r�r[�s�z1TurtleScreenBase._onscreenclick.<locals>.eventfun�r)rr)r�rZr^r_r[r�rYr��_onscreenclick�s zTurtleScreenBase._onscreenclickcs>�dkr|j�d|d�n�fdd�}|j�d||�dS)Nz<KeyRelease-%s>cs
��dSr�r��r�rZr�r�r[�sz0TurtleScreenBase._onkeyrelease.<locals>.eventfunrc�r�rZr�r[r�rfr��
_onkeyrelease�s zTurtleScreenBase._onkeyreleasecsn�dkr4|dkr |j�dd�qj|j�d|d�n6�fdd�}|dkrX|j�d|�n|j�d||�dS)Nz
<KeyPress>z
<KeyPress-%s>cs
��dSr�r�rerfr�r�r[�sz.TurtleScreenBase._onkeypress.<locals>.eventfunrcrgr�rfr�� _onkeypress�s zTurtleScreenBase._onkeypresscCs|j��dSr�)r)rr�r�r�r��_listen�szTurtleScreenBase._listencCs(|dkr|j�|�n|j�||�dS�Nr)r)Z
after_idlerF�r�rZ�tr�r�r��_ontimer�szTurtleScreenBase._ontimercCs|jjdd|d�S)Nr��image)r)Z create_image)r�rpr�r�r�� _createimage�szTurtleScreenBase._createimagecCs<|\}}|j�|||j| |jf�|jj||d�dS�Nro)r)r:r/r0�
itemconfig)r�rCr[rpr�r�r�r�r��
_drawimage�s zTurtleScreenBase._drawimagecCs |jj||d�|j�|�dSrr)r)rsZ tag_lower)r�rCrpr�r�r�� _setbgpic�szTurtleScreenBase._setbgpiccCs |j�|�Sr�)r)r�rBr�r�r��_type�szTurtleScreenBase._typecs.|j�|���fdd�tdt��d�D�}|S)Ncs"g|]}�|�|d f�qS)r�r���.0�i�r=r�r��
<listcomp>�sz/TurtleScreenBase._pointlist.<locals>.<listcomp>rr�)r)r:�range�len)r�rC�plr�rzr��
_pointlist�s zTurtleScreenBase._pointlistcCs|jj||||fd�dS)Nr.)r)r)r��srx1�sry1�srx2�sry2r�r�r��_setscrollregion�sz!TurtleScreenBase._setscrollregionc Cs||j��}|D]h}t|j�|��}g}|rd|dd�\}}|�||�|�||�|dd�}q&|jj|f|��qdS�Nr�)r)Zfind_allr�r:r9) r�Z xscalefactorZ yscalefactorr�rCZ coordinatesZ newcoordlistr�r�r�r�r��_rescale�s
zTurtleScreenBase._rescalecCszt|jt�s|j|jfS||kr6|kr6dkrJnn|jj|jjfS|dk rX||_|dk rf||_|j�|||�dSr�)r�r)rr�r�r`r r�r�r��_resizes  "zTurtleScreenBase._resizecCs@|j��}|dkr|jd}|j��}|dkr8|jd}||fS)Nr�rzr�)r)r
r)r�rzr�r�r�r�� _window_sizes



zTurtleScreenBase._window_sizecCs|jj��dSr�)r)Ztkrr�r�r�r�rs
zTurtleScreenBase.mainloopcCstj|||jd�S)N)�parent)rZ askstringr))r�r)�promptr�r�r�r(.s
zTurtleScreenBase.textinputcCstj||||||jd�S)N)Z initialvalueZminvalueZmaxvaluer�)rZaskfloatr))r�r)r��defaultZminvalZmaxvalr�r�r�r=s

�zTurtleScreenBase.numinput)NNNF)NNNF)N)r�N)r�N)r�N)r�N)N)NNN)NNN)$r�r�r�r+r-r�r5r>r?r@rDrErHrJrKrSr`rarbrdrhrirjrnrqrtrurvrr�r�r�r�rr(rr�r�r�r�r'�sR
�
�







 
 r'c@s eZdZdS)r�N�r�r�r�r�r�r�r�r�Ysc@s eZdZdS)�TurtleGraphicsErrorNr�r�r�r�r�r�bsr�c@s eZdZddd�Zddd�ZdS)rNcCsz||_|dkr"t|t�rpt|�}nN|dkrVt|t�rp|���d�rpt|�rpt� |�}n|dkrdg}n t
d|��||_ dS)N�polygonrp�.gif�compoundzThere is no shape type %s) rvr�r�r�r��lower�endswithrrr-r��_data)r�Ztype_�datar�r�r�r�ns


  zShape.__init__cCs:|jdkrtd|j��|dkr$|}|j�|||g�dS)Nr�z Cannot add component to %s Shape)rvr�r�r9)r��polyrr4r�r�r�� addcomponent~s
�zShape.addcomponent)N)N)r�r�r�r�r�r�r�r�r�rgs
c@s@eZdZddd�Zddd�Zdd�Zd d
�Zd d �Zd
d�ZdS)�Tbufferr�cCs$||_dgg||_d|_d|_dS)Nr�F)�bufsize�buffer�ptr�cumulate)r�r�r�r�r�r��szTbuffer.__init__NcCsD|dkr&t|j�D]}dg|j|<qn||_dgg||_d|_dS)Nr�)r|r�r�r�)r�r�ryr�r�r�r`�s z
Tbuffer.resetcCsF|jdkrB|js0|jd|j|_||j|j<n|j|j�|�dSr�)r�r�r�r�r9rBr�r�r��push�s

z Tbuffer.pushcCsJ|jdkrF|j|j}|dkr"dSdg|j|j<|jd|j|_|SdSr�)r�r�r�rBr�r�r��pop�s
 z Tbuffer.popcCs|j|j�dg�Sr�)r�r��countr�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�Z d>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)GrTrrrc
Cs�t�||�tdd�tdd�tdd�tdd�tdd�tdd�td|���d �|_d
d i|_||_||_td |_ g|_
|� �t j
d
kr�|��}|�ddddd�|�ddddd�dS)Nr�)����r�r�r�rr�))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�)��Q�#@���Q�@)�G�z. @��Q��@)r�r�)r�r�r�)���Q��r�)��Q���r�)�G�z. �r�)��Q�#�r�r�)r�r�)r�r�)r�r�)r�r�)g�g$�)r�r�)r�r�)r�r�)r�r�))r�r�)r�r�)r�r�)r�r�))r���G�z�)rg�����'@)r�r�)�rr)r�r�r�)r�r�rp)Zarrowr�r4ZsquareZtriangler�r*�nopicr�r�darwinZwmZ
attributesr�z-topmost�1�0)r'r�rr+�_shapes�_bgpics�_mode� _delayvaluer��
_colormode�_keysr5�sys�platformr�Zcall)r�r)rrrZ
rootwindowr�r�r�r��s&  �


zTurtleScreen.__init__cCs�td|_td|_|�d�|�d�|_d|_d|_d|_g|_ |�
d�d D]}|� d|�qP|� d�|j
dd�D]}|�d|�|� d|�qzdt_dS)
Nrr�allr�r�r�rr�)r�r��)r�r�r�rDrq�_bgpic�
_bgpicname�_tracing�_updatecounter�_turtlesrrRrr�rr �_pen)r��btnr�r�r�r�r5�s


 

 zTurtleScreen.clearNcCs||dkr|jS|��}|dkr*td|��||_|dkrp|�|j d|j d|jd|jd�d|_|_|��dS)N�r��logo�worldzNo turtle-graphics-mode %s)r�r�r�r�) r�r�r�r�r�r�r/r0r`�r�rr�r�r�r s � zTurtleScreen.modecCs�|��dkr|�d�t||�}t||�}|��\}}|�|d|d�|j|j} }
|j||_|j||_||j} | |j} |j| }
|j| }|�| | |
|�|� |j| |j|
�|�
�dS)Nr��) rr�r�r%r/r0r�r�r�r�r,)r�ZllxZllyZurxZuryZxspanZyspanZwxZwyZ oldxscaleZ oldyscaler�r�r�r�r�r�r�r'-s  
     
 

z TurtleScreen.setworldcoordinatescCsT|dkr2|���d�r(td|�|��}qFtd��nt|t�rFtd|�}||j|<dS)Nr�rpz;Bad arguments for register_shape.
Use help(register_shape)r�)r�r�rr-r�r�r�r�)r��namerkr�r�r�r#Ts


zTurtleScreen.register_shapec Cst|�dkr|d}t|t�rD|�|�s0|dkr4|Stdt|���z|\}}}Wn(ttfk
rztdt|���YnX|jdkr�dd�|||fD�\}}}d|kr�d kr�nn.d|kr�d kr�nnd|kr�d ks�ntd
t|���d |||fS) Nr�rr�zbad color string: %s�bad color arguments: %sr�cSsg|]}td|��qS�g�o@��round�rxr�r�r�r�r{�sz*TurtleScreen._colorstr.<locals>.<listcomp>��bad color sequence: %s�
#%02x%02x%02x)r}r�r�rJr�� TypeErrorr�r�)r�r9r��g�br�r�r�� _colorstrws


FzTurtleScreen._colorstrcsx��d�s�St��dkr.�fdd�dD�}n4t��dkrV�fdd��dd�D�}n td ���t�fd
d �|D��S) Nr�r�cs"g|]}t�||d�d��qS)r�r��r�rw��cstrr�r�r{�sz'TurtleScreen._color.<locals>.<listcomp>)r�r�r�r�csg|]}dt�|d��qS)r�r�)rxr2r�r�r�r{�sr�zbad colorstring: %sc3s|]}|�jdVqdS)r�N)r�)rxr�r�r�r�� <genexpr>�sz&TurtleScreen._color.<locals>.<genexpr>)r�r}r�r�)r�r�r=r�)r�r�r��_color�s
   zTurtleScreen._colorcCs8|dkr|jS|dkr"t|�|_n|dkr4t|�|_dS)Nr�r�)r�r�r�)r�Zcmoder�r�r�r�s  zTurtleScreen.colormodecCs$|jD]}|�|j�|��qdSr�)r��_setmoder�r`)r�r�r�r�r�r`�s
 zTurtleScreen.resetcCs|jSr�)r�r�r�r�r�r+�szTurtleScreen.turtlescGs4|r|�|�}nd}|�|�}|dk r0|�|�}|Sr�)r�rKr��r�rr9r�r�r�r�s 

zTurtleScreen.bgcolorcCsB|dkr|jSt|�|_d|_|dk r0t|�|_|jr>|��dSrk)r�r�r�r�r,)r��nrr�r�r�r*�s

zTurtleScreen.tracercCs|dkr|jSt|�|_dSr�)r�r�rGr�r�r�r�s zTurtleScreen.delaycCs<tjsdt_t�|jdkr8|jd7_|j|j;_dS)NTrr�)r�_RUNNINGr�r�r�r�r�r�r��
_incrementudc s 
zTurtleScreen._incrementudccCs<|j}d|_|��D]}|��|��q||_|��dS�NT)r�r+� _update_data� _drawturtlerE)r��tracingrmr�r�r�r,s 
zTurtleScreen.updatecCs |��dSrk�r�r�r�r�r�r.szTurtleScreen.window_widthcCs |��dS�Nr�r�r�r�r�r�r-&szTurtleScreen.window_heightcCs|jSr�)r)r�r�r�r�r/s
zTurtleScreen.getcanvascCst|j���Sr�)�sortedr�r�r�r�r�r�r;s zTurtleScreen.getshapesr�cCs|�|||�dSr�)rd�r�rZr�r_r�r�r�rRFszTurtleScreen.onclickcCsF|dkr ||jkr6|j�|�n||jkr6|j�|�|�||�dSr�)r��remover9rh�r�rZr�r�r�r�rWs 

 zTurtleScreen.onkeycCsN|dkr ||jkr>|j�|�n|dk r>||jkr>|j�|�|�||�dSr�)r�r�r9rir�r�r�r�rus 
 zTurtleScreen.onkeypresscCs |��dSr�)rj)r��xdummy�ydummyr�r�r�r�s
zTurtleScreen.listenrcCs|�||�dSr�)rnrlr�r�r�r"�szTurtleScreen.ontimercCsF|dkr|jS||jkr(|�|�|j|<|�|j|j|�||_dSr�)r�r�r-rur�)r�Zpicnamer�r�r�r�s 
zTurtleScreen.bgpiccCs|�|||�Sr�)r�r r�r�r�r%�szTurtleScreen.screensize)N)N)N)NN)N)r�N)N)NN)r)N)NNN)$r�r�r�r�r�r�r5rr'r#r�r�rr`r+rr*rr�r,r.r-rrrRrrrr"rr%r!r$rrr r�r�r�r�r�sF�
(
"'
#
  

     





c@sPeZdZedd�edd�edd�d�ZdZdZdZefdd�Zd d
�Z dAd d
�Z
dd�Z dBdd�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,d S)J�
TNavigatorr��)r�r�r�r�rr�cCsB|j|_|j|_||_d|_|��d|_|�|�t� |�dSr�)
�DEFAULT_ANGLEOFFSET� _angleOffset�DEFAULT_ANGLEORIENT� _angleOrientr��
undobufferr:r�r�r`r�r�r�r�r��s
zTNavigator.__init__cCstdd�|_tj|j|_dS)Nr�)r� _positionr��START_ORIENTATIONr��_orientr�r�r�r�r`�s zTNavigator.resetNcCsL|dkr|jS|dkrdS||_|dkr6d|_d|_n|jd|_d|_dS)Nr�)r�r�rr��@r�)r�rr� _fullcircler�r�r�r�r�s zTNavigator._setmodecCs0||_d||_|jdkr"d|_n
|d|_dS)Nihr�rr)r�
_degreesPerAUr�r�r�Z
fullcircler�r�r��_setDegreesPerAUs


zTNavigator._setDegreesPerAU��v@cCs|�|�dSr�)r r
r�r�r�r:szTNavigator.degreescCs|�dtj�dSr�)r r�r�r�r�r�r�r^5s zTNavigator.radianscCs|j|j|}|�|�dSr�)rr�_goto)r�r;Zender�r�r��_goCszTNavigator._gocCs||j9}|j�|�|_dSr�)r rr��r�r�r�r�r��_rotateHs
zTNavigator._rotatecCs
||_dSr��r)r��endr�r�r�r
MszTNavigator._gotocCs|�|�dSr��r�r�r;r�r�r�rCQszTNavigator.forwardcCs|�| �dSr�rrr�r�r�r/hszTNavigator.backcCs|�| �dSr��rrr�r�r�r_|szTNavigator.rightcCs|�|�dSr�rrr�r�r�rP�szTNavigator.leftcCs|jSr�rr�r�r�r�r[�s zTNavigator.poscCs
|jdSrkrr�r�r�r�r|�s zTNavigator.xcorcCs
|jdSr�rr�r�r�r�r}�s zTNavigator.ycorcCs,|dkr|�t|��n|�t||��dSr�)r
r)r�r�r�r�r�r�rI�szTNavigator.gotocCs|�dd�|�d�dSrk)rIrdr�r�r�r�rL�s zTNavigator.homecCs|�t||jd��dSr��r
rr)r�r�r�r�r�riszTNavigator.setxcCs|�t|jd|��dSrkr)r�r�r�r�r�rjszTNavigator.setycCsT|dk rt||�}t|t�r"|}n$t|t�r6t|�}nt|t�rF|j}t||j�Sr�)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\}}tt�||�dtjd�d}||j }|j
|j ||j S�Nr�r�r )
rr�r�r�rr�r��atan2r�r rrr)r�r�r�r[�resultr�r�r�ruEs




 
zTNavigator.towardscCsJ|j\}}tt�||�dtjd�d}||j}|j|j||jSr) rr�r�rr�r rrr)r�r�r�rr�r�r�rJhs

 
zTNavigator.headingcCs>||��|j}|j}||d||d}|�|�dS)N�@)rJrrr)r�Zto_angler�Zfullr�r�r�rdwszTNavigator.setheadingc Csp|jr|j�dg�d|j_|��}|dkr2|j}|dkrjt|�|j}dttdt|�dd�|�}d||}d|}d |t� |tj
d
|j �}|d kr�| | | }}}|� �} |�
�}
|d kr�|� d d �n
|�d �|�|�t|�D].} |�|�|�|�|�d �|�|��q|�| �|d k�rR|� | |
�|�|�|j�rld |j_dS)
N�seqTr�� g@g�M@r�r�rr�rF)rr�r�rprrr��minr�r�r�r �_tracerrHrr|r) r��radiusZextent�stepsrpZfracr1Zw2�lZtrZdlryr�r�r�r4�s>" "

 


 
 
zTNavigator.circlecCsdSr�r�)r�r�r�r�r�rp�szTNavigator.speedcCsdSr�r�)r��ar�r�r�r�r�szTNavigator._tracercCsdSr�r�)r�r�r�r�r�rH�szTNavigator._delay)N)r )N)N)N)NN)r)NN)N)-r�r�r�rrZ DEFAULT_MODEr�rr�r`r�r r:r^rrr
rCr/r_rPr[r|r}rIrLrirjr;rurJrdr4rprrHr@r3r0rbrQr\rerfrcr�r�r�r�r��sX�




#

#
A


r�c@s�eZdZedfdd�Zededfdd�Zd-d d
�Zd.d d �Zd
d�Zdd�Z dd�Z
d/dd�Z dd�Z dd�Z
dd�Zdd�Zdd�Zdd �Zd0d!d"�Zd1d$d%�Zd2d'd(�Zd)d*�Zd+d,�ZeZeZeZe Ze ZeZeZdS)3�TPenracCs||_d|_t�|�dSr�)� _resizemoderr$�_reset)r�rar�r�r�r��sz
TPen.__init__rWrAcCsFd|_d|_||_||_d|_d|_d|_d|_d|_d|_ d|_
dS)Nr�Tr�)r�r�r�)r�r�r�r�) �_pensize�_shown� _pencolor�
_fillcolor�_drawing�_speed�_stretchfactor� _shearfactor�_tilt� _shapetrafo�
_outlinewidth)r�rWrAr�r�r�r&�sz TPen._resetNcCs.|dkr|jS|��}|dkr*|j|d�dS)N)�auto�userr��ra)r%r�rV)r�Zrmoder�r�r�ra�s
zTPen.resizemodecCs|dkr|jS|j|d�dS)N)rY)r'rV)r�rzr�r�r�rYsz TPen.pensizecCs|js
dS|jdd�dS)NF�rX�r+rVr�r�r�r�rZ0s
z
TPen.penupcCs|jr
dS|jdd�dS)NTr5r6r�r�r�r�rX>s
z TPen.pendowncCs|jSr�)r+r�r�r�r�rNLs
z TPen.isdowncCsjdddddd�}|dkr|jS||kr0||}n*d|krDdkrVnntt|��}nd}|j|d �dS)
Nrr�r�r�r�)ZfastestZfast�normalZslowZslowestr�g%@)rp)r,r�r�rV)r�rpZspeedsr�r�r�rp[s
z
TPen.speedcGs�|rht|�}|dkr"|d}}n"|dkr4|\}}n|dkrD|}}|�|�}|�|�}|j||d�n|�|j�|�|j�fSdS)Nr�rr�r�)rWrA)r}r�rVr�r)r*)r�rr"ZpcolorZfcolorr�r�r�r9�s 


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

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

zTPen.fillcolorcCs|jdd�dS)NT��shown�rVr�r�r�r�ro�s zTPen.showturtlecCs|jdd�dS)NFr8r:r�r�r�r�rK szTPen.hideturtlecCs|jSr�)r(r�r�r�r�rO s
zTPen.isvisiblec Ks�|j|j|j|j|j|j|j|j|j|j |j
d� }|s>|s>|St |t �rN|}ni}|�
|�i}|D]}||||<qd|jr�|j�d|f�d}d|kr�|j|dkr�d}d|kr�t |dt�r�|�|df�|d<|j|dkr�d}d|k�r|j|dk�rd}|�r|��d|k�r&|d|_d|k�r:|d|_d|k�rN|d|_d|k�r�t |dt��r||�|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�r.|d|_
d |k�sLd|k�sLd |k�r�|j\} }
|j} t�|j
�t�|j
�} }
| |
|
| |
| | | |
|
| | f|_|��dS)N) r9rXrWrArYrpra�
stretchfactorrnr4rsrVFrXTrWrYrArprar;rnr4r9rs)r(r+r)r*r'r,r%r-r.r1r/r��dictr,rr�r�r��_newLiner�r�r�r�r�r0rE)r�rVZpendictZ_pd�pZ_p_bufr�ZnewLineZsfZscxZscyZshf�sa�car�r�r�rV! s�/�

























�zTPen.penTcCsdSr�r��r�ZusePosr�r�r�r=� sz
TPen._newLineFcCsdSr�r�)r�r�Zforcedr�r�r�rE� sz TPen._updatecCsdSr�r�rr�r�r�r�� sz TPen._colorcCsdSr�r�rr�r�r�r�� szTPen._colorstr)N)N)N)N)T)TF)r�r�r�r�r�r&rarYrZrXrNrpr9rWrArorKrOrVr=rEr�r�rzryr]rUr=rqrMr�r�r�r�r$�s8�



&.%$



r$c@seZdZdd�Zdd�ZdS)� _TurtleImagecCs||_d|_|�|�dSr�)r�rv� _setshape)r�r��
shapeIndexr�r�r�r�� sz_TurtleImage.__init__cs�|j�||_|jdkr*�j|jkr2nndS|jdkrP�j|jkrXnndS|jdkrp��|j�n |jdkr�|jD]}��|�q��j|j|_|jdkr����|_nF|jdkrԈ��jdj�|_n&|jdkr��fdd��j|jD�|_dS)Nr�rp)rpr�r�r*csg|] }����qSr��r5�rxrC�r�r�r�r{� sz*_TurtleImage._setshape.<locals>.<listcomp>) r�rDrvr�rD�_itemr5rqr�)r�rDrCr�rGr�rC� s(""


 
 



�z_TurtleImage._setshapeN)r�r�r�r�rCr�r�r�r�rB� srBc@s�eZdZgZdedededfdd�Zdd�Zd d
�Zd d �Zd
d�Z dd�Z
dd�Z dd�Z dldd�Z
dd�Zdd�Zdd�Zdd�Zdmdd �Zdnd!d"�Zdod#d$�Zd%d&�Zdpd'd(�Zd)d*�Zdqd+d,�Zd-d.�Zd/d0�Zdrd2d3�Zd4d5�Zd6d7�Zd8d9�Zd:d;�Zdsd<d=�Z d>d?�Z!d@dA�Z"dBdC�Z#dtdEdF�Z$dGdH�Z%dIdJ�Z&dKdL�Z'dudMdN�Z(dOdP�Z)dvdSdT�Z*dUdV�Z+dWdX�Z,dYdZ�Z-d[d\�Z.d]d^�Z/e/Z0dwd_d`�Z1dxdbdc�Z2dyddde�Z3dzdfdg�Z4dhdi�Z5djdk�Z6eZ7dS){r
Nrkr�r�cCs4t|t�r||_n|t|t�r:|tjkr2tj�|�||_nTt|ttf�r�tjD]}|j |krN||_q�qNt|�|_tj�|j�n t
d|��|j}t � ||�
��t� |�|j�|�|��|_t||�|_d|_d|_d|_|_||_d|_|��|_|jg|_|jg|_g|_||_t |�|_!|�"�dS)Nzbad canvas argument %sF)#r��_Screenr�rr
�screensr9rr�r)r�r�r�rr$r�r?�drawingLineItemrBr��_poly�
_creatingPoly� _fillitem� _fillpathr(�_hidden_from_screen�currentLineItemr� currentLiner��
stampItems�_undobuffersizer�rrE)r�Zcanvasrkr�r�r�r�r�r�r�� s@


 


 
 
  



zRawTurtle.__init__cCs0t�|�t�|�|��|��|��dSr�)r�r`r$r&�_clearr�rEr�r�r�r�r`
s


zRawTurtle.resetcCs&|dks|dkrd|_n
t|�|_dSrk)rr�)r��sizer�r�r�rh
szRawTurtle.setundobuffercCs|jdkrdS|j��Srk)rr�r�r�r�r�rx,
s
zRawTurtle.undobufferentriescCsld|_|_|jD]}|j�|�q|j��|_g|_|jrJ|j� |j
�|jg|_|� �|� |j
�dSr�)rNrOr�r�rDr?rQrRr+r9rr7rhrTrBr�r�r�rU9
s 
 
zRawTurtle._clearcCs|��|��dSr�)rUrEr�r�r�r�r5G
s zRawTurtle.clearcCsF|j��|jjdkrdSt|j�dkrB|j�|j|j|j|j�dSr�) r�r�r�r}rRr@rQr)r'r�r�r�r�r�V
s
 �zRawTurtle._update_datacCsx|j}|jdkrdS|jdkrD|��|��|��|�|j�n0|��|jdkrt|��D] }|��q^|��dSr�) r�r�r�r�rErHr�r�r+)r�r�rmr�r�r�rE^
s


 
zRawTurtle._updatecCs|j�||�Sr�)r�r*)r��flagrr�r�r�rp
szRawTurtle._tracercCs |j�|�Sr�)r�r�rr�r�r�r��
szRawTurtle._colorcCs |j�|�Sr�)r�r�rr�r�r�r��
szRawTurtle._colorstrc Cs�t|t�r|Sz|\}}}Wn(ttfk
rDtdt|���YnX|jjdkrldd�|||fD�\}}}d|kr�dkr�nn.d|kr�dkr�nnd|kr�dks�ntdt|���d|||fS) Nr�r�cSsg|]}td|��qSr�r�r�r�r�r�r{�
sz!RawTurtle._cc.<locals>.<listcomp>rr�r�r�)r�r�r�r�r�r�r�)r�rr�r�r�r�r�r��_cc�
s
 Fz
RawTurtle._cccs�|j�|�|j�|j}d|_d|_t|�}�|_||_�|_t�|jj�|_�j�|��j |jjj
}|dkr��� �|j_ nJ|dkr���
�j dj�|j_ n*|dkrʇfdd��j |jjjD�|j_ ���|_|��|S)Nr�rpr*r�csg|] }����qSr�rErFrGr�r�r{�
sz#RawTurtle.clone.<locals>.<listcomp>)r�r=r+r�rrBrDr�r9r�rvr5rHrqr�r?rQrE)r�r��q�ttyper�rGr�r8�
s.   
�

zRawTurtle.clonecCsB|dkr|jjS||j��kr*td|��|j�|�|��dS)NzThere is no shape named %s)r�rDr�rr�rCrE)r�r�r�r�r�rk�
s   zRawTurtle.shapecCs�||kr|krdkr8nn|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 zeror3)rar;r4)r-r1r�rV)r�Z stretch_widZ stretch_lenr4r;r�r�r�rl�
s$"
 

�zRawTurtle.shapesizecCs |dkr|jS|jd|d�dS)Nr3)rarn)r.rV)r�Zshearr�r�r�rn szRawTurtle.shearfactorcCs<| |j|j}|tjddtj}|jd|d�dS)Nr�r�r3)rars)r rr�r�rV�r�r�rsr�r�r�rg szRawTurtle.settiltanglecCs>|dkr0|j dtj|j}||j|jS|�|�dS)Nr�)r/r�r�rr rrgr[r�r�r�rt4 szRawTurtle.tiltanglecCs|�||���dSr�)rgrtrr�r�r�rsN szRawTurtle.tiltcCs6||kr(|kr(|kr(dkr2nn|jS|j\}}}}|dk rL|}|dk rX|}|dk rd|}|dk rp|}||||dkr�td��||||f|_t�| |�dtj} t�| �t�| �}
} | ||
|| ||
||
|| ||
|| |f\} }
}}| |f|_|
||_| |_ |j
dd�dS)Nrz0Bad shape transform matrix: must not be singularr�r3r4) r0r�r�rr�r�r�r-r.r/rV)r��t11�t12�t21�t22Zm11Zm12Zm21Zm22Zalfar?r@Za11Za12Za21Za22r�r�r�rma s0,� 

zRawTurtle.shapetransformcs^|j�|j\��|j\��t���j�j�}dt|�|\�������fdd�|D�S)Nr�csFg|]>\}}��|�|�j�� |�|�jf�qSr�)r/r0�rxr�r��Ze0Ze1Zp0Zp1r�r�r�r{� s�z(RawTurtle._polytrafo.<locals>.<listcomp>)r�rrrr0r/r)r�r��er�rar��
_polytrafo� s

�zRawTurtle._polytrafocCs2|jj|jj}|jdkr.|�|j|jdk�SdS)Nr�r�)r�r�r�rDrv�
_getshapepolyr�)r�rkr�r�r�rG� s 
zRawTurtle.get_shapepolyFcsx|jdks|r|j\����n>|jdkrNtd|jd�}|dd|f\����n|jdkr\|St����fdd�|D��S) Nr3r2r�g@rr�c3s2|]*\}}�|�|�|�|fVqdSr�r�r`�r\r]r^r_r�r�r�� sz*RawTurtle._getshapepoly.<locals>.<genexpr>)r%r0�maxr'r�)r�r�r�r"r�rer�rd� s

zRawTurtle._getshapepolyc Cs�|j}|j|jj}|j}|jj}|j�r*|jdk�r*|jdk�r*d|_ |j
}|dkr�|j dkrfd}n|j dkrx|j }n|j
}|�|�|��}|j|j}}|j|||||dd�nt|d kr�|�||j|�nZ|d
k�r�t||�D]D\} \}
}}|�|�|
d��}
|j| |
|�|�|�|�|j
dd�q�nx|j �r6dS|dk�rR|�|d d d �nJ|d k�rv|�||j|jd
j
�n&|d
k�r�|D]} |�| d d d ��q�d|_ dS)NrFr�r�r�r2T�rr4rzr<rpr��r�r�r�r�r*)r�r�r�rDrvrHr(r�r�rPr�r%r'r1rcrdr*r)r>rtr�ziprX) r�r�rkrZZtitem�tshaper1�fc�ocrCr�r�r�r�r�� sR 

 �
�




�
zRawTurtle._drawturtlec CsT|j}|j|jj}|j}|j}|dkr�|��}|jdkr@d}n|jdkrR|j}n|j }|�
|� |��}|j |j
}}|j|||||dd�n�|dkr�|�d�}|�||j|�n�|d k�r4g}|D]} |��}
|�|
�q�t|�}t||�D]D\}
\} }}|�
|� | d��} |j|
| |�|�|�|�|j dd�q�|j�|�|j�d
|f�|S) Nr�r�r�r2Trgrpr�r�rr)r�r�r�rDrvr�r5r%r'r1rcrdr*r)r>rqrtrr9r�rirXrSrr�) r�r�rkrZrj�stitemr1rkrlZelementrCr�r�r�r�rr� sH

 �

 � zRawTurtle.stampcCs�||jkrDt|t�r,|D]}|j�|�qn |j�|�|j�|�d|f}|j}||jkr`dS|j�|�}|j�|�||j kr�|j d|j
|_ |j� |j d|j
dg�dS)Nrrr�) rSr�r�r�rDr�rr��indexr�r��insert)r��stampidZsubitemrCZbufrnr�r�r�� _clearstamp s

  
  
zRawTurtle._clearstampcCs|�|�|��dSr�)rqrE)r�rpr�r�r�r6 s
zRawTurtle.clearstampcCs^|dkr|jdd�}n&|dkr0|jd|�}n|j|d�}|D]}|�|�qB|��dSrk)rSrqrE)r�r�ZtoDeleterCr�r�r�r7- s zRawTurtle.clearstampsc
Cs�|j|j|jt|jt�f}|j}d|j|||j|j dd�|�
|j�|j dd�ff}|j rh|j �
|�|j}|j�rZ|jdk�rZ||}|d|jd|d|jd}dt|ddd|j|j�}|d|} td|�D]R}
|
dkr�d } nd
} || |
|_|j�r2|�|j||jf|j|j| �|��q�|j�rZ|j|jd d |jd
�|j�rn|j �|�t|jt��r�|j�|�||_|j�r�|j�|�t|j �dk�r�|��|��dS)N�gor�rr�r�r�皙�����?r�TF�r�r�r��rrz�*)r+r)r'r�rOr�r�rrQrRrr�rr�r,r�r/r0r�r|r@rKrEr9rMrLr}r=) r�r�go_modesr�Z
undo_entry�start�diff�diffsq�nhops�deltar�r<r�r�r�r
I sb
�
 
 �� $$ �

�   zRawTurtle._gotocs|\}}}}|\}}}} |\}
} } �|j�t|j|�dkrDtd�|
|_| |_| ddgkrbd}
n|}
�j|
| |
|d���fdd�|jD�}|D]}��|�|j� |�q�|}|j
�r��j dk�r�||}|d �j d
|d�j
d
}dt|dd d |j
|j
�}|d
|}td|�D]P}|dk�r@d}nd}||||_|�rr��|j||jf|||�|���q,|�r��j|jdd|d�||_|j�r�t|j�d k�r�|j��|jgk�r�d|_d|_| �r|jgk�r�d|_td�n|jdk �r|j��|��dS)Nr�z$undogoto: HALLO-DA-STIMMT-WAS-NICHT!r�r�rucs&g|]}|�kr��|�dkr|�qS)r�)rvrw�r�r�r�r�r{� s�z'RawTurtle._undogoto.<locals>.<listcomp>r�rr�r�rsr�TFrtzUnwahrscheinlich in _undogoto!)r�rrr�rQrRr@r�rDr�r,r�r/r0r�r|rKrErMr}rLr�rO)r��entry�old�newrwZcoodataZdrawingZpcZpsrBZcLIZcLr~ZusepcZtodeleteryrxryrzr{r|r�r<r�r}r�� _undogoto~ sl    
$$ 
� 
�
  
 
zRawTurtle._undogotocCs�|jr|j�d||jf�||j9}|j�|�}|jj}|dkr�|jdkr�d|j}dtt |�|�}d||}t
|�D]}|j�|�|_|� �q|||_|� �dS)N�rotr�rg@r�) rr�r rr�r�r�r,r�rr|rE)r�r�Z neworientr�Zanglevelr!r|r�r�r�r�r� s
 
  
zRawTurtle._rotateTcCsnt|j�dkrD|j�|j|j|j|j�|j��|_|j� |j�n|jj|jdd�g|_|rj|j
g|_dS)Nr�T)r<) r}rRr�r@rQr)r'r?r�r9rrAr�r�r�r=� s� zRawTurtle._newLinecCs t|jt�Sr�)r�rOr�r�r�r�r�rB� s zRawTurtle.fillingcCsX|��s"|j��|_|j�|j�|jg|_|��|j rL|j �
d|jf�|� �dS)N� beginfill) rBr�r5rNr�r9rrOr=rr�rEr�r�r�r�r1� s  
zRawTurtle.begin_fillcCs^|��rZt|j�dkrF|jj|j|j|jd�|jrF|j�d|jf�d|_|_|� �dS)Nr�r6�dofill)
rBr}rOr�r>rNr*rr�rEr�r�r�r�r>
s � zRawTurtle.end_fillc Gs8|sNt|ttf�r0|�|�}|jt|jd�}qr|j}|sr|jt|jd�}n$|dkrh|jt|jd�}|�|�}t|jd�r�|j� |j
||�}|j � |�|j
r�|j
�d|f�n�|��}|j
r�|j
�dg�d|j
_z>|��dkr�|��|��|�|�|�|�|�d�W5|�|�X|j
�r4d|j
_dS) Nr��_dotr<rTr2rF)r�r�r�r�r'rfr)�hasattrr�r�rr�r9rr�rVr�rarMrXrYrWrC)r�rVr9rCrVr�r�r�r<
s:

   

 z
RawTurtle.dotcCsB|j�|j||||j�\}}|j�|�|jr>|j�d|f�|S)N�wri)r�rSrr)r�r9rr�)r�rQrRrPrCrr�r�r�rSH
s� zRawTurtle._writerP��Arialr�r7cCs`|jr|j�dg�d|j_|�t|�|��|�}|rN|��\}}|�||�|jr\d|j_dS)NrTF)rr�r�rSr�r�r[re)r��argZmoverRrPrr�r�r�r�r�r{R
s  zRawTurtle.writecCs|jg|_d|_dSr�)rrLrMr�r�r�r�r2o
s
zRawTurtle.begin_polycCs
d|_dS�NF)rMr�r�r�r�r?}
s zRawTurtle.end_polycCs|jdk rt|j�SdSr�)rLr�r�r�r�r�rD�
s

zRawTurtle.get_polycCs|jSr�rGr�r�r�r�rF�
szRawTurtle.getscreencCs|Sr�r�r�r�r�r�rH�
szRawTurtle.getturtlecCs |j�|�Sr�)r�rrGr�r�r�rH�
szRawTurtle._delayr�cCs"|j�|jj|||�|��dSr�)r�r`r�rHrEr�r�r�r�rR�
szRawTurtle.onclickcCs"|j�|jj|||�|��dSr�)r�rar�rHrEr�r�r�r�rT�
szRawTurtle.onreleasecCs|j�|jj|||�dSr�)r�rbr�rHr�r�r�r�rS�
szRawTurtle.ondragcCs,|jdkrdS|dkr@|\}}|�| ||j�|j��}n�|dkr\|d}|�|�n�|dkrp|�|�n�|dkr�|d}|j�|�|j� |�n�|dkr�|d}|jj
|dddd �nh|d
k�r|d}d|_ |_ ||jk�r(|j�|�|j� |�n$|d k�r(t
�||d�|j��dS) Nr�rrrrr)r�r<r�rhr�r3r�rV)rrr r�r6r�r�rDr�r�r>rNrOr$rV)r��actionr�r�ZdegPAUZdummyrmrCr�r�r��_undos<
    
�
   
zRawTurtle._undocCsl|jdkrdS|j��}|d}|dd�}|dkr\|rh|��}|�|d|dd��q4n |�||�dS)Nrr�r)rr�r�)r�rCr�r�r�r�r�rw's

 zRawTurtle.undo)NN)N)NNN)N)N)NNNN)F)N)T)N)FrPr�)N)r�N)r�N)r�N)8r�r�r�rJr�r�r`rhrxrUr5r�rErr�r�rXr8rkrlrnrgrtrsrmrcrGrdr�rrrqr6r7r
r�rr=rBr1r>r<rSr{r2r?rDrFrHrErHrRrTrSr�rwrvr�r�r�r�r
� sp�
(

(

(


( 

(-
5A

0







 cCstjdkrt�t_tjSr�)r �_screenrIr�r�r�r�r Js
c@sfeZdZdZdZedZdd�Zededededfd d
�Zd d �Z d
d�Z
dd�Z dd�Z dS)rINr)cCs�tjdkr4t�t_|_|j�tj�|j�|j�tjdkr�td}td}td}td}td}td}|j� ||||�|j�
�t_t � |tj�|�
||||�dS)Nrzr�r�r�r�r�)rI�_rootrr)�_titler$�_destroyr�r�rrrr�r&)r�rzr�r�r�r�r�r�r�r�r�Xs

 z_Screen.__init__rzr�r�r�cCs�t|jd�sdS|j��}|j��}t|t�rNd|krBdkrNnn||}|dkrb||d}t|t�r�d|kr�dkr�nn||}|dkr�||d}|j�||||�|��dS)Nr"rr�r�)r�r�r%r&r�r�r"r,)r�rzr�r r!rLZshr�r�r�r&ns 

" " z
_Screen.setupcCs tjdk rtj�|�|t_dSr�)rIr�r)r�)r�Z titlestringr�r�r�r)�s
 z
_Screen.titlecCs:|j}|tjkr(dt_dt_dt_dt_dt_|��dSr�) r�rIr r�r�r�rr�r#)r��rootr�r�r�r��s
z_Screen._destroycCs |��dSr�)r�r�r�r�r�r�sz _Screen.byecsN�fdd�}��|�tdr"dSz
t�Wntk
rHtd�YnXdS)Ncs ���dSr�)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�rIRs �
(
rIc@s0eZdZdZdZedededfdd�ZdS)r Nrkr�r�cCs,tjdkrt�t_tj|tj|||d�dS)N)rkr�r�)r r�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 Cs�i}tD]}d|}t|�j||<qtD]}d|}t|�j||<q(td|d���}tdd�|D��}|�d�|dd�D](}|�d t|��|�d
||�q||d}|�d t|��|�d ||�|�d �|��W5QRXdS)
Nz_Screen.zTurtle.z%s.pyr1css$|]}|�d�dtkr|VqdS)r�r�N)r� _alias_listr�r�r�r�r�s�z&write_docstringdict.<locals>.<genexpr>zdocsdict = {

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

z """%s
"""

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

c Cs`dd|��i}t|�}|j}|D]8}z||t|�_Wq"tk
rXtd|�Yq"Xq"dS)Nz!turtle_docstringdict_%(language)sr�zBad docstring-entry: %s)r��
__import__r�r�r�r�r�)Zlang�modname�moduler�r�r�r�r��read_docstringssr�r�zCannot find docsdict forz;Unknown Error when trying to import %s-docstring-dictionaryc
Cs�d}}t�|j�\}}}|dd�}|dd�}|jp:g}dd�|D�}dgt|�t|�|}dd�t||�D�} |dk r�| �d|�|�d|�|dk r�| �d|�|�d|�d�| �}d |}d�|�}d |}||fS)
Nr�r�cSsg|]}d|f�qS)z=%rr�)rxr�r�r�r�r{<sz"getmethparlist.<locals>.<listcomp>cSsg|]\}}||�qSr�r�)rxr�Zdfltr�r�r�r{>s�*z**z, z(%s))�inspectZgetargs�__code__� __defaults__r}rir9r)
ZobZdefTextZcallTextrZvarargsZvarkwZitems2ZrealArgs�defaultsZitems1r�r�r��getmethparlist,s&  


r�cCsJddl}|dkrdStd}|�d|d�}|�d|�}|�d|�}|S)Nrr��%s.r�� \(.+ %s\):�:��rer��replace�compile�sub)�docstrr�Z
turtlename� newdocstr�parexpr�r�r��_turtle_docreviseKs r�cCsJddl}|dkrdStd}|�d|d�}|�d|�}|�d|�}|S)Nrr�r�r�r�r�r�)r�r�Z
screennamer�r�r�r�r��_screen_docreviseWs 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
Csl|D]b}t||�}t|�\}}|dkr4td||�qtj|||||d�} t| t��||j�t�|_qdS)Nr�z>>>>>>)�obj�initr�Z
paramslistZargslist)�getattrr�r�� __func_body�formatr��globalsr�)
Z functionsr�r�r�Z docreviser�r�Zpl1Zpl2Zdefstrr�r�r��_make_global_funcsws
  
� r�zTurtle._screenzScreen()z Turtle._penzTurtle()�__main__cCst�rt�nt�dSr�)rNr]rUr�r�r�r�� switchpen�sr�cCslt�td�t�td�t�td�td�D]Z}|dkrDt�td�D]}td�t d�qL|dkrxt
d�t �t�td �t�q2td
�t
d �td �t�t d�td�t d�td�t d
�t�t
dd
�t
dd
�t
d�td�D]$}td�t d�td�t d�q�td�t�td�D]&}td�t d�td�t d��q:t �dS)NT�dr�r�r�r��ZZmaroonrr�r�F�Z
startstartrx�redr�)r`r*ryr0r=rzr|r1rCrPr9r>r_r{)ryr�r�r�r��demo1�sX  


 
  r�cCsBtd�t�td�ttdd��tdd�d}td�td�D]}t�t |d�qBt
d�t �rnt �q`t
�td�td �d}td
�td�td �td d
�D]p}|dkr�t�td d|dd|�td�D]}t|�td�q�t�|d7}td�tt�dd�q�td�t�td�td�t�tdd�td�t�td�D](}t dd�td�td�td��q`t�td�t�td�t�td�t�}|�d�t�}|�d�|�d�|�
�|�d�|�d�|��|�dd�|�d�|��|�d�|�dd�|�d�|�d�tt|��d}|�|�dk�r�|�d�|�d �|�|�|��|�d�|d!dk�r�|� �|� �t�|d7}�qZ|j
d"d#d$d%�|�d&�|�d�d'd(�}t!�"d�t ��r|� �|� ��q�|�d�|j
d)d*d+�|�#|d�dS),Nr�r�rrr��r�zwait a moment...r�Zgreenr�r�r���x� �Frr�Zyellowr��2r�r2i�(r�ZblueZoranger�g @g333333�?r�zCAUGHT! )r�r��boldr_)rPrRr�cSst�t�dSr�)rr)r�r�r�r�r��babaszdemo2.<locals>.babaz Click me!)ZCourierr�r�)rP)$rprqrYrdrur;rbr|r�r4r{rxrwr`rQrrWr1rAr@r>r]rUr9rkrHrar rPryrIr=rr�time�sleeprR)r r�ZlaengeryZtrir�r�r�r�r�r��demo2�s�   

 
 




 

 

 


 


 
r�)r�)r�)EZ_verZtkinterr�r�r�r�r�r�Zos.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�r�rr�rr�r$rBr
r r rIr r
r~r�Z _LANGUAGE� ImportErrorr�r�r�r�r�rrr�r�r�r�rr�r�r�r��<module>gs�  ��
�

���� 5
�
c /&/O}
"
 �   ��
5c