grthtrhthjhtyjytjytkergtrhtrjytjerhrfh4:24 29/09/20263 Õì2a1ãO@s4dZddlZddlZddlZddlZddlZddlZddlm 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;dd?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ÅZZ?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ÚnoresizeTÚenglishÚ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ƒ}|d kr¢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¬ú+/opt/alt/python36/lib64/python3.6/turtle.pyÚ config_dict«s0      r®c CsŒ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¨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)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­Úrotate sz 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 „Zd d „Zd d„Zdd„Zdd„Z dd„Z dd„Z dd„Z dS)réôé^éXc Cs0tjj||||d�|jƒ|_|||_|_|||_|_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ƒ|jjd |jƒdS)N)rzr‰ÚwhiterÄ)rzr‰ÚbgZreliefZ borderwidth)ÚcommandZorient)rî)ZxscrollcommandZyscrollcommandrr»)ZweightZminsizeÚnews)ÚpadxÚin_ÚpadyÚrowÚcolumnÚrowspanÚ columnspanÚstickyz )Ú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||j d|j d|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ÿZ grid_forget)r¼ÚcwidthÚcheightr¬r¬r­r zs   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`r rrrrrrrr¬r¬r¬r­rIs  rýc@sDeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „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ýÚpack)r¼rzr‰r r 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)Z wm_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úrrrr r!r"r¬r¬r¬r­r¯src@s0eZdZedd„ƒZedd„ƒZdd„Zdd„ZdFd d „Zd d„Z dGdd„Z dd„Z dd„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;„ZdNdd?„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ós zTurtleScreenBase._drawpolyc Cs|jjddddddtjd�S)Nrr¯rÄ)rrzZcapstyle)r)Z create_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)r0r*r+r)r1r2r3) r¼Zlineitemr4rrzr5r6r¹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._delayc Cs4y|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)Z create_textrr,)r¼r[ÚtxtÚalignrGrWr¹rºrFr;Zx0Zy0Zx1Zy1r¬r¬r­Ú_writeKs     zTurtleScreenBase._writer»csDˆdkrˆjj|d|ƒn$‡‡fdd„}ˆjj|d|||ƒdS)Nz cs:ˆjj|jƒˆjˆjj|jƒ ˆj}}ˆ||ƒdS)N)r)Úcanvasxr¹r*Úcanvasyrºr+)rr¹rº)Úfunr¼r¬r­Úeventfunfsz+TurtleScreenBase._onclick..eventfun)r)Ú tag_unbindÚtag_bind)r¼r;rMÚnumÚaddrNr¬)rMr¼r­Ú_onclick]szTurtleScreenBase._onclickcsDˆdkrˆjj|d|ƒn$‡‡fdd„}ˆjj|d|||ƒdS)Nzcs:ˆjj|jƒˆjˆjj|jƒ ˆj}}ˆ||ƒdS)N)r)rKr¹r*rLrºr+)rr¹rº)rMr¼r¬r­rNxsz-TurtleScreenBase._onrelease..eventfun)r)rOrP)r¼r;rMrQrRrNr¬)rMr¼r­Ú _onreleasels zTurtleScreenBase._onreleasecsDˆdkrˆjj|d|ƒn$‡‡fdd„}ˆjj|d|||ƒdS)Nzc sTy:ˆjj|jƒˆjˆjj|jƒ ˆj}}ˆ||ƒWntk rNYnXdS)N)r)rKr¹r*rLrºr+r±)rr¹rº)rMr¼r¬r­rN‹s z*TurtleScreenBase._ondrag..eventfun)r)rOrP)r¼r;rMrQrRrNr¬)rMr¼r­Ú_ondrags zTurtleScreenBase._ondragcs@ˆdkrˆjjd|ƒn"‡‡fdd„}ˆjjd|||ƒdS)Nz cs:ˆjj|jƒˆjˆjj|jƒ ˆj}}ˆ||ƒdS)N)r)rKr¹r*rLrºr+)rr¹rº)rMr¼r¬r­rN sz1TurtleScreenBase._onscreenclick..eventfun)r)rr)r¼rMrQrRrNr¬)rMr¼r­Ú_onscreenclick”s zTurtleScreenBase._onscreenclickcs>ˆdkr|jjd|dƒn‡fdd„}|jjd||ƒdS)Nzcs ˆƒdS)Nr¬)r)rMr¬r­rN­sz0TurtleScreenBase._onkeyrelease..eventfun)r)rr)r¼rMrªrNr¬)rMr­Ú _onkeyrelease¦s zTurtleScreenBase._onkeyreleasecsnˆdkr4|dkr |jjddƒqj|jjd|dƒn6‡fdd„}|dkrX|jjd|ƒn|jjd||ƒdS)Nz z cs ˆƒdS)Nr¬)r)rMr¬r­rN¼sz.TurtleScreenBase._onkeypress..eventfun)r)rr)r¼rMrªrNr¬)rMr­Ú _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¼rMÚtr¬r¬r­Ú_ontimerÈszTurtleScreenBase._ontimercCs|jjdd|d�S)Nr)Úimage)r)Z create_image)r¼r\r¬r¬r­Ú _createimageÐszTurtleScreenBase._createimagecCs<|\}}|jj|||j| |jfƒ|jj||d�dS)N)r\)r)r1r*r+Ú itemconfig)r¼r;r[r\r¹rºr¬r¬r­Ú _drawimageÕs zTurtleScreenBase._drawimagecCs |jj||d�|jj|ƒdS)N)r\)r)r^Z tag_lower)r¼r;r\r¬r¬r­Ú _setbgpicÝszTurtleScreenBase._setbgpiccCs |jj|ƒS)N)r)rÙ)r¼r;r¬r¬r­Ú_typeåszTurtleScreenBase._typecs.|jj|ƒ‰‡fdd„tdtˆƒdƒDƒ}|S)Ncs"g|]}ˆ|ˆ|d f‘qS)r»r¬)Ú.0Úi)r6r¬r­ú ôsz/TurtleScreenBase._pointlist..rrÄ)r)r1ÚrangeÚlen)r¼r;Úplr¬)r6r­Ú _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Ór1r0) r¼Z xscalefactorZ yscalefactorrØr;Z coordinatesZ 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)rqÚ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/r7r8r9r<r=r?rArBrJrSrTrUrVrWrXrYr[r]r_r`rarhrmrnrorprr(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­rtbsrtc@s eZdZddd„Zddd„ZdS)rNcCsz||_|dkr"t|tƒrpt|ƒ}nN|dkrVt|tƒrp|jƒjdƒrpt|ƒrptj |ƒ}n|dkrdg}n t d|ƒ‚||_ dS)NÚpolygonr\z.gifÚcompoundzThere is no shape type %s) rar¿rÓr¶rãÚlowerÚendswithrrr(rtÚ_data)r¼Ztype_Údatar¬r¬r­rúns     zShape.__init__cCs:|jdkrtd|jƒ‚|dkr$|}|jj|||gƒdS)Nrvz Cannot add component to %s Shape)rartryr0)r¼Úpolyrr.r¬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»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â)rer~rr€)r¼r~rcr¬r¬r­r`�s z Tbuffer.resetcCsF|jdkrB|js0|jd|j|_||j|j<n|j|jj|ƒdS)Nrr»)r~r�r€rr0)r¼r;r¬r¬r­Úpush¥s  z Tbuffer.pushcCsJ|jdkrF|j|j}|dkr"dSdg|j|j<|jd|j|_|SdS)Nrr»)r~rr€)r¼r;r¬r¬r­Úpop¬s  z Tbuffer.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ãrr€)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„Zddd„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)–Nrur‚rérÄér»ééé ééééç…ëQ¸#@縅ëQ¸@ç®Gáz. @ç…ëQ¸…@gg$@g®Gáz@çš™™™™'@r\)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ƒxd D]}|j d|ƒ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|j d|j d|jd|jdƒd|_|_|jƒdS) Nr�ÚlogoÚworldzNo turtle-graphics-mode %srÄgð?)r�rr)r�r) rrwrtrmrŠ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¤rpr%r*r+rŠr‹rmrnr,)r¼ZllxZllyZurxZuryZxspanZyspanZwxZwyZ oldxscaleZ oldyscalerirjrkrlr¬r¬r­r',s            z TurtleScreen.setworldcoordinatescCsT|dkr2|jƒjdƒr(td|j|ƒƒ}qFtdƒ‚nt|tƒrFtd|ƒ}||j|<dS)Nz.gifr\z"Bad arguments for register_shape. zUse help(register_shape)ruz;Bad arguments for register_shape. Use help(register_shape))rwrxrr(rtr¿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)rbr¹r¬r¬r­rdŒsz*TurtleScreen._colorstr..éÿzbad color sequence: %sz #%02x%02x%02x)rfr¿rãrArtÚ 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‡fd d„|DƒƒS) Nr•rŠcs"g|]}tˆ||d…dƒ‘qS)rÄr‡)r¥)rbrc)Úcstrr¬r­rd•sz'TurtleScreen._color..r»r�rŽr‰csg|]}dtˆ|dƒ‘qS)r‡)r¥)rbr-)rr¬r­rd—szbad colorstring: %scsg|]}|ˆjd‘qS)r)r)rbrË)r¼r¬r­rdšs)r»r�rŽ)r rfrtr¶)r¼rr6r¬)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)rrBr)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ùs zTurtleScreen.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¼ÚtracingrZr¬r¬r­r,s zTurtleScreen.updatecCs |jƒdS)Nr)rp)r¼r¬r¬r­r.szTurtleScreen.window_widthcCs |jƒdS)Nr»)rp)r¼r¬r¬r­r-%szTurtleScreen.window_heightcCs|jS)N)r))r¼r¬r¬r­r.s zTurtleScreen.getcanvascCst|jjƒƒS)N)ÚsortedrrÝ)r¼r¬r¬r­r:s zTurtleScreen.getshapesr»cCs|j|||ƒdS)N)rV)r¼rMrrRr¬r¬r­rREszTurtleScreen.onclickcCsF|dkr ||jkr6|jj|ƒn||jkr6|jj|ƒ|j||ƒdS)N)rÚremover0rW)r¼rMrªr¬r¬r­rVs    zTurtleScreen.onkeycCsN|dkr ||jkr>|jj|ƒn|dk r>||jkr>|jj|ƒ|j||ƒdS)N)rr$r0rX)r¼rMrªr¬r¬r­rts   zTurtleScreen.onkeypresscCs |jƒdS)N)rY)r¼ÚxdummyÚydummyr¬r¬r­r”s zTurtleScreen.listenrcCs|j||ƒdS)N)r[)r¼rMrZr¬r¬r­r" szTurtleScreen.ontimercCsF|dkr|jS||jkr(|j|ƒ|j|<|j|j|j|ƒ||_dS)N)r rr(r`r )r¼Zpicnamer¬r¬r­rµs  zTurtleScreen.bgpiccCs|j|||ƒS)N)ro)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„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Ú 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@)r0Ú _degreesPerAUrr))r¼Ú fullcircler¬r¬r­Ú_setDegreesPerAUs   zTNavigator._setDegreesPerAUç€v@cCs|j|ƒdS)N)r3)r¼r2r¬r¬r­r:szTNavigator.degreescCs|jdtjƒdS)NrÄ)r3rÆ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)r1r/rÍ)r¼rÊr¬r¬r­Ú_rotateGs zTNavigator._rotatecCs ||_dS)N)r-)r¼Úendr¬r¬r­r5LszTNavigator._gotocCs|j|ƒdS)N)r6)r¼r;r¬r¬r­rCPszTNavigator.forwardcCs|j| ƒdS)N)r6)r¼r;r¬r¬r­r/gszTNavigator.backcCs|j| ƒdS)N)r7)r¼rÊr¬r¬r­r_{szTNavigator.rightcCs|j|ƒdS)N)r7)r¼rÊr¬r¬r­rP�szTNavigator.leftcCs|jS)N)r-)r¼r¬r¬r­r[¥s zTNavigator.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)r5r)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»)r5rr-)r¼r¹r¬r¬r­riszTNavigator.setxcCs|jt|jd|ƒƒdS)Nr)r5rr-)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Çr1r)r+r0)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Ær:rÇr1r)r+r0)r¼r¹rºr;r¬r¬r­rJgs   zTNavigator.headingcCs>||jƒ|j}|j}||d||d}|j|ƒdS)Ng@)rJr+r0r7)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 ƒ}|d kr¾| | | }}}|j ƒ} |j ƒ} |d krä|j d d ƒn |jd ƒ|j|ƒx:t|ƒD].} |j|ƒ|j|ƒ|jd ƒ|j|ƒ�qW|j| ƒ|d k�rV|j | | ƒ|j|ƒ|j�rpd |j_dS) NÚseqTr»é g@g€M@gð?gà?g@g€f@rF)r,r‚r�rpr0r9r¥ÚminrÆrÉrÇr1Ú_tracerr?r7rer6) r¼ÚradiusZextentÚstepsrpZfracr,Zw2ÚlÚtrZdlrcr¬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)r4)N)N)N)NN)r)NN)N)-rÐrÑrÒrr.Z DEFAULT_MODEr(r*rúr`rr3r:r^r6r7r5rCr/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.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|_tj|ƒdS)N)Ú _resizemoder,rEÚ_reset)r¼rar¬r¬r­rúész TPen.__init__rWrAcCsFd|_d|_||_||_d|_d|_d|_d|_d|_d|_ d|_ dS)Nr»Tr�çð?ç)rHrH)rHrIrIrH) Ú_pensizeÚ_shownÚ _pencolorÚ _fillcolorÚ_drawingÚ_speedÚ_stretchfactorÚ _shearfactorÚ_tiltÚ _shapetrafoÚ _outlinewidth)r¼rWrAr¬r¬r­rGîsz TPen._resetNcCs.|dkr|jS|jƒ}|dkr*|j|d�dS)NÚautoÚuserr…)ra)rUrVr…)rFrwrV)r¼Zrmoder¬r¬r­raüs zTPen.resizemodecCs|dkr|jS|j|d�dS)N)rY)rJrV)r¼rzr¬r¬r­rYsz TPen.pensizecCs|js dS|jdd�dS)NF)rX)rNrV)r¼r¬r¬r­rZ/s z TPen.penupcCs|jr dS|jdd�dS)NT)rX)rNrV)r¼r¬r¬r­rX=s z TPen.pendowncCs|jS)N)rN)r¼r¬r¬r­rNKs z TPen.isdowncCsjddddddœ}|dkr|jS||kr0||}n*d|koBdknrVtt|ƒƒ}nd}|j|d �dS) Nrr‚r�r�r»)ZfastestZfastÚnormalZslowZslowestgà?g%@)rp)rOr¥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)rfrrVrrLrM)r¼rrBZpcolorZfcolorr¬r¬r­r9€s    z TPen.colorcGs:|r*|j|ƒ}||jkrdS|j|d�n |j|jƒSdS)N)rW)rrLrVr)r¼rr9r¬r¬r­rW®s   z TPen.pencolorcGs:|r*|j|ƒ}||jkrdS|j|d�n |j|jƒSdS)N)rA)rrMrVr)r¼rr9r¬r¬r­rAÓs   zTPen.fillcolorcCs|jdd�dS)NT)Úshown)rV)r¼r¬r¬r­ro÷s zTPen.showturtlecCs|jdd�dS)NF)rX)rV)r¼r¬r¬r­rK szTPen.hideturtlecCs|jS)N)rK)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) rXrXrWrArYrpraÚ stretchfactorrnr.rsrVFrXTrWrYrArprarYrnr.rXrs)rKrNrLrMrJrOrFrPrQrTrRr¿Údictr,r,r‚r¶rÚ_newLiner¥r¤rÆrÉrÈrSr=)r¼rVZpendictZ_pdÚpZ_p_bufrªZnewLineZsfZscxZscyZshfÚsaÚcar¬r¬r­rV sŒ/                           zTPen.penTcCsdS)Nr¬)r¼ÚusePosr¬r¬r­r[Ÿ sz TPen._newLineFcCsdS)Nr¬)r¼r„Zforcedr¬r¬r­r=¡ sz TPen._updatecCsdS)Nr¬)r¼rr¬r¬r­r£ sz TPen._colorcCsdS)Nr¬)r¼rr¬r¬r­r¥ szTPen._colorstr)N)N)N)N)T)TF)rÐrÑrÒr²rúrGrarYrZrXrNrpr9rWrArorKrOrVr[r=rrrzryr]rUr=rqrMr¬r¬r¬r­rEås6   &.%$    rEc@seZdZdd„Zdd„ZdS)Ú _TurtleImagecCs||_d|_|j|ƒdS)N)rˆraÚ _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)Nrur\rvr%csg|] }ˆjƒ‘qSr¬)r/)rbr;)rˆr¬r­rdÌ sz*_TurtleImage._setshape..)r\ru) rˆrbrarr<Ú_itemr/r]ry)r¼rbr;r¬)rˆr­raº s&""        z_TurtleImage._setshapeN)rÐrÑrÒrúrar¬r¬r¬r­r`± sr`c@sÔeZdZgZdedededfdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dd„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;„Zdudd?„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}t j ||j ƒƒtj |ƒ|jj|ƒ|jƒ|_t||ƒ|_d|_d|_d|_|_||_d|_|jƒ|_|jg|_|jg|_g|_||_t |ƒ|_!|j"ƒdS)Nzbad canvas argument %sF)#r¿Ú_Screenrˆrr Úscreensr0rrür)rtr'rúrrEr r8ÚdrawingLineItemr`r‡Ú_polyÚ _creatingPolyÚ _fillitemÚ _fillpathrKÚ_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`rErGÚ_clearr!r=)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)rirjrØrˆr<r8rlrmrNr0r-r7rhro)r¼r;r¬r¬r­rp8 s    zRawTurtle._clearcCs|jƒ|jƒdS)N)rpr=)r¼r¬r¬r­r5F s zRawTurtle.clearcCsF|jjƒ|jjdkrdSt|jƒdkrB|jj|j|j|j|jƒdS)Nrr») rˆrr rfrmr9rlrLrJ)r¼r¬r¬r­r U 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 r r!r=r?rr r+)r¼rˆrZr¬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)rbr¹r¬r¬r­rd” sz!RawTurtle._cc..rrzbad color sequence: %sz #%02x%02x%02x)r¿rãrr¡rtrˆ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)Nrur\r%rvcsg|] }ˆjƒ‘qSr¬)r/)rbr;)rˆr¬r­rd» sz#RawTurtle.clone..)rˆr[rNr‡rr`rbr r0rrar/rcr]ryr8rlr=)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‡rbrˆrrtrar=)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 zerorV)rarYr.)rPrTrtrV)r¼Z stretch_widZ stretch_lenr.rYr¬r¬r­rlÜ s "    zRawTurtle.shapesizecCs |dkr|jS|jd|d�dS)NrV)rarn)rQrV)r¼Zshearr¬r¬r­rn szRawTurtle.shearfactorcCs<| |j|j}|tjddtj}|jd|d�dS)Ng€f@rÄrV)rars)r1r+rÆrÇrV)r¼rÊrsr¬r¬r­rg szRawTurtle.settiltanglecCs>|dkr0|j dtj|j}||j|jS|j|ƒdS)Ng€f@)rRrÆrÇr+r1r0rg)r¼rÊrsr¬r¬r­rt3 szRawTurtle.tiltanglecCs|j||jƒƒdS)N)rgrt)r¼rÊr¬r¬r­rsM szRawTurtle.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ÄrV)ra) rSrtrÆr:rÇrÉrÈrPrQrRrV)r¼Út11Út12Út21Út22Zm11Zm12Zm21Zm22Zalfar]r^Za11Za12Za21Za22r¬r¬r­rm` s,,(  zRawTurtle.shapetransformcs^|j‰|j\‰‰|j\‰‰tˆˆˆjˆjƒ}dt|ƒ|\‰‰‡‡‡‡‡fdd„|DƒS)Ngð?csFg|]>\}}ˆˆ|ˆ|ˆjˆˆ |ˆ|ˆjf‘qSr¬)r*r+)rbr¹rº)Úe0Úe1Úp0Úp1rˆr¬r­rd‘ sz(RawTurtle._polytrafo..)rˆr-r/rr+r*r9)r¼r{Úer¬)rzr{r|r}rˆr­Ú _polytrafoˆ s  zRawTurtle._polytrafocCs2|jj|jj}|jdkr.|j|j|jdkƒSdS)Nrurv)rˆrr‡rbraÚ _getshapepolyry)r¼rkr¬r¬r­rG” s  zRawTurtle.get_shapepolyFcsx|jdks|r|j\‰‰‰‰n>|jdkrNtd|jdƒ}|dd|f\‰‰‰‰n|jdkr\|St‡‡‡‡fdd„|DƒƒS) NrVrUr»g@rr…cs0g|](\}}ˆ|ˆ|ˆ|ˆ|f‘qSr¬r¬)rbr¹rº)rvrwrxryr¬r­rd° sz+RawTurtle._getshapepoly..)rFrSÚmaxrJr¶)r¼rurvrBr¬)rvrwrxryr­r€¥ s  zRawTurtle._getshapepolyc Csª|j}|j|jj}|j}|jj}|jo:|jdko:|jdk�r*d|_ |j }|dkr°|j dkrbd}n|j dkrt|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|dd d ƒnN|d k�rv|j||j|jd j ƒn*|d k�r x|D]} |j| dd d ƒ�q†Wd|_ dS)NrFrur…r»rUT)rr.rzr5r\rvr¯r%©rr©rr©rr)r‚rƒr„©rr©rr©rr)r…r†r‡)rˆrr‡rbrarcrKr r rkryrFrJrTrr€rMrLr7r_r-Úziprs) r¼rˆrkruZtitemÚtshaper,ÚfcÚocr;r{r¬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        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») rnr¿r¶rˆr<r$r,rÚindexr€r~Úinsert)r¼ÚstampidZsubitemr;ÚbufrŽ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)rnr’r=)r¼rZtoDeleter;r¬r¬r­r7, s zRawTurtle.clearstampsc CsÈ|j|j|jt|jtƒf}|j}d|j|||j|j dd…|j |jƒ|j dd…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–)rNrLrJr¿rjrÓrˆr-rlrmrhrØr,r‚rOr r*r+r¥rer9rfr=r0rhrgrfr[) r¼r8Úgo_modesrˆZ undo_entryÚstartÚdiffÚdiffsqÚnhopsÚdeltarr5r¬r¬r­r5H sR    $$       zRawTurtle._gotocs"|\}}}}|\}}}} |\} } } ‰|j‰t|j|ƒdkrDtdƒ| |_| |_| ddgkrbd} n|} ˆj| | | |d�‡‡fdd„|jDƒ}x"|D]}ˆj|ƒ|jj |ƒq”W|}|j oĈj dk�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©)ra)rbrc)rØrˆr¬r­rd� s z'RawTurtle._undogoto..r»rÄr�gš™™™™™ñ?gð?TFzUnwahrscheinlich in _undogoto!)rr)rr©rr©rr)r�rž)rˆr9r-r¢rlrmr9rØr<r$rOr r*r+r¥rerfr=rhrfrgrƒrj)r¼ÚentryÚoldÚnewr—ZcoodataZdrawingZpcZpsrBZcLIZcLrgZusepcZtodeletercr˜r™ršr›rœrr5r¬)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‚r1r/rÍrˆr rOr¥r9rer=)r¼rÊZ neworientr"ZanglevelrArœrßr¬r¬r­r7¾ s     zRawTurtle._rotateTcCsnt|jƒdkrD|jj|j|j|j|jƒ|jjƒ|_|jj |jƒn|jj|jdd�g|_|rj|j g|_dS)Nr»T)r5) rfrmrˆr9rlrLrJr8rØr0r-)r¼r_r¬r¬r­r[Ð s  zRawTurtle._newLinecCs t|jtƒS)N)r¿rjrÓ)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/rirØr0r-rjr[r,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) rBrfrjrˆr7rirMr,r‚r=)r¼r¬r¬r­r> s   zRawTurtle.end_fillc Gs8|sNt|ttfƒr0|j|ƒ}|jt|jdƒ}qr|j}|sr|jt|jdƒ}n$|dkrh|jt|jdƒ}|j|ƒ}t|jdƒr´|jj |j ||ƒ}|j j |ƒ|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<TrUrF)r¿rãr¶rrJr�rLÚhasattrrˆr¦r-rØr0r,r‚rVr�rarMrXrYrWrC)r¼rqr9r;rVr¬r¬r­r< s:        z RawTurtle.dotcCsB|jj|j||||jƒ\}}|jj|ƒ|jr>|jjd|fƒ|S)NÚwri)rˆrJr-rLrØr0r,r‚)r¼rHrIrGr;r8r¬r¬r­rJG s   zRawTurtle._writerPÚArialrŒrWcCs`|jr|jjdgƒd|j_|jt|ƒ|jƒ|ƒ}|rN|jƒ\}}|j||ƒ|jr\d|j_dS)Nr<TF)r,r‚r�rJrãrwr[re)r¼ÚargZmoverIrGr8r¹rºr¬r¬r­r{Q s  zRawTurtle.writecCs|jg|_d|_dS)NT)r-rgrh)r¼r¬r¬r­r2n s zRawTurtle.begin_polycCs d|_dS)NF)rh)r¼r¬r¬r­r?| s zRawTurtle.end_polycCs|jdk rt|jƒSdS)N)rgr¶)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ˆrSr‡rcr=)r¼rMrrRr¬r¬r­rRà szRawTurtle.onclickcCs"|jj|jj|||ƒ|jƒdS)N)rˆrTr‡rcr=)r¼rMrrRr¬r¬r­rTØ szRawTurtle.onreleasecCs|jj|jj|||ƒdS)N)rˆrUr‡rc)r¼rMrrRr¬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$|d k�r(t j||dƒ|jjƒdS)Nr£rrrr“r¨r<r¥r¯)rr.r¤rV)r¨r<©rr©rr©rr)r«r¬r­)r,r7r1rƒr6r¢rˆr<rØr$r7rirjrErV)r¼ÚactionrzrÊZdegPAUZdummyrŒr;r¬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¼r;r®rzr¬r¬r­rw&s   zRawTurtle.undo)NN)N)NNN)N)N)NNNN)F)N)T)N©r©rŒrW)FrPr°)N)r»N)r»N)r»N)8rÐrÑrÒrer²rúr`rhrxrpr5r r=r?rrrsr8rkrlrnrgrtrsrmrrGr€r!rrr’r6r7r5r¢r7r[rBr1r>r<rJr{r2r?rDrFrHrEr?rRrTrSr¯rwrvr¬r¬r¬r­r Ð sn%  (  (   (  (- 5A  0        cCstjdkrtƒt_tjS)N)r Ú_screenrdr¬r¬r¬r­r Is c@sfeZdZdZdZedZdd„Zededededfd d „Zd d „Z d d„Z dd„Z dd„Z dS)rdNr)cCs®tjdkr4tƒt_|_|jjtjƒ|jj|jƒtjdkrªtd}td}td}td}td}td}|jj ||||ƒ|jj ƒt_t j |tjƒ|j ||||ƒdS)Nrzr‰rŠr‹rŒr�)rdÚ_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²r!r"r¿r¤rr,)r¼rzr‰rrrCÚshr¬r¬r­r&ms   " " z _Screen.setupcCs tjdk rtjj|ƒ|t_dS)N)rdr²r)r³)r¼Z titlestringr¬r¬r­r)•s  z _Screen.titlecCs:|j}|tjkr(dt_dt_dt_dt_dt_|jƒdS)NF) r²rdr rr±rýrrr)r¼Úrootr¬r¬r­r´¦s z_Screen._destroycCs |jƒdS)N)r´)r¼r¬r¬r­r°sz _Screen.byec sN‡fdd„}ˆj|ƒtdr"dSy tƒWntk rHtdƒYnXdS)Ncs ˆjƒdS)N)r)r¹rº)r¼r¬r­ÚexitGracefullyËsz+_Screen.exitonclick..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­rdQs ' rdc@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Òrr±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)rbr¹r¬r¬r­rdsz'write_docstringdict..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)rwÚ __import__rÁr£r½r±r¢)ÚlangÚ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¬)rbr«r¬r¬r­rd;sz"getmethparlist..cSsg|]\}}||‘qSr¬r¬)rbrªZdfltr¬r¬r­rd=sÚ*z**z, z(%s))ÚinspectZgetargsÚ__code__Ú __defaults__rfrˆr0r) ÚobZdefTextZcallTextrZvarargsZvarkwZitems2ZrealArgsÚdefaultsZitems1r¬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()z Turtle._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=rzrer1rCrPr9r>r_r{)rcrß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‡rUié(r�ZblueZorangeg @g333333ã?rzCAUGHT! r©Úboldr_)rGrIr„cSstƒtƒdS)N)rr)r%r&r¬r¬r­Úbabaszdemo2..babaz Click me!ÚCourier)rGrž)r©r‡rî)rðrêrî)$rprqrYrdrur;rbrerár4r{rxrwr`rQrrWr1rAr@r>r]rUr9rkrHrar rPryrIr=rrÚtimeZsleeprR)r@rßZlaengercZtrir‡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€rtrr}rr'rEr`r r r rdr r r~rÇZ _LANGUAGEÚ ImportErrorrÎr×rØrÜrßrrrÐráræròrr¬r¬r¬r­Úgs                4  c /&.O} "       5c