U ©Î.e¡7ã @s ddlZddlZddlTddlmZmZddlmZddlm Z ddl m Z ddl Z ej ej e¡¡ZejdkZdZd Zd Zd Zd Zd defZdZdddgZdZdZdddddddddddg Z dd„Z!d e fd!e fd"e j ffZ"Gd#d$„d$e#ƒZ$d%d&„Z%e&d'k�re%ƒdS)(éN)Ú*)ÚColorDelegatorÚ color_config)Ú Percolator)Ú view_text)Ú__doc__ÚdarwinéééééÚArialé )rrZboldzLucida Consoleé Únormaléédéé é éééééécCsdd„t t¡DƒS)NcSs.g|]&}| d¡r|ddkr|dd…‘qS)z.pyrÚ_Néýÿÿÿ)Úendswith)Ú.0Úentry©r"ú+/usr/lib64/python3.8/turtledemo/__main__.pyÚ ts ÿz%getExampleEntries..)ÚosÚlistdirÚdemo_dirr"r"r"r#ÚgetExampleEntriesssr(zTurtledemo helpzAbout turtledemozAbout turtle modulec@s¤eZdZd(dd„Zdd„Zdd„Zdd „Zd d „Zd)d d „Zd*dd„Z dd„Z d+dd„Z dd„Z dd„Z dd„Zdd„Zdd„Zd d!„Zd"d#„Zd$d%„Zd&d'„ZdS),Ú DemoWindowNc CsJtƒ|_}t_| d¡| d|j¡trbddl}|j ddddd  t   ¡¡ddg|j |j d �|jdd d �|jdd d �|jd d d d �|jdd d d �|jdd d d �t|tdd�|_|jj| |j¡ddd�|jj| |j¡ddd�|jj| |j¡ddd�|j|d<ttdtdd�}| | |¡¡| | |¡¡|jdddd�t|d ddddtd�|_ t!|d t"d!d"|j#d#�|_$t!|d$t"d!d"|j%d#�|_&t!|d%t"d!d"|j'd#�|_(|j jd ddd&d'�|j$jd d d(d)�|j&jd dd(d)�|j(jd dd(d)�t)|j*ƒ +t,ƒ¡d*|_-d*|_.|�r.| /|¡| 0t1t1t1d+d,¡t2|_3dS)-NzPython turtle-graphics examplesZWM_DELETE_WINDOWrZ osascriptz-ez tell application "System Events"z>set frontmost of the first process whose unix id is {} to truezend tell)ÚstderrÚstdoutr )ÚweightéZ)Zminsizer,r r )ÚreliefÚ borderwidthZExamples)ÚmenuÚlabelÚ underlineZFontsizeZHelpr0r z#ddd)ÚorientZ sashwidthZ sashreliefÚbgr Znews)ÚrowZ columnspanÚstickyz --- z#ddf)rér)ZheightÚtextr4Úfontr/r.z START Zwhitez#fed)r8r9ÚfgZdisabledforegroundÚcommandz STOP z CLEAR )rr )r5Úcolumnr6ÚpadxZew)r5r<r6FzChoose example from menuÚblack)4ZTkÚrootÚturtleÚ_rootÚtitleZ wm_protocolÚ_destroyrÚ subprocessÚrunÚformatr%ÚgetpidZDEVNULLZgrid_rowconfigureZgrid_columnconfigureÚMenuZRAISEDZmBarZ add_cascadeÚmakeLoadDemoMenuÚ makeFontMenuÚ makeHelpMenuZ PanedWindowÚ HORIZONTALZSOLIDÚaddÚ makeTextFrameÚmakeGraphFrameZgridZLabelZRIDGEÚ output_lblZButtonÚbtnfontÚ startDemoÚ start_btnÚstopItÚstop_btnÚ clearCanvasÚ clear_btnrr8Z insertfilterrÚdirtyÚexitflagÚloadfileÚ configGUIÚDISABLEDÚSTARTUPÚstate)ÚselfÚfilenamer?rDZpaner"r"r#Ú__init__�sž ÿû÷ ÿÿÿ ÿ þþþþ  ÿzDemoWindow.__init__cCsP|j ¡}|j ¡}|j d|j||j¡|j d|j||j¡dS)Ngà?)Ú_canvasZ winfo_widthZ winfo_heightZ xview_movetoÚ canvwidthZ yview_movetoÚ canvheight)r_ÚeventZcwidthZcheightr"r"r#ÚonResizeÅs  zDemoWindow.onResizecCs6t|ƒ|_}t|ddddd�|_}t|ƒt|dd�|_}|j|d<|jt t d �t|d t d �|_ }|j |d<|jttd �|j|d <|j|d <ttƒ|d<tr¬dnd}| d||j¡| d||j¡| d||j¡| d||j¡| d|j¡| d|j¡| d|j¡|jt tdd�|S)Nr8r Znoneé-)Únamer=ZwrapÚwidthÚvbar)rhr;)ÚsideÚfillÚhbar)rhr3ZyscrollcommandZxscrollcommandr9ZCommandZControlz <%s-minus>z<%s-underscore>z <%s-equal>z <%s-plus>zzzr )rkrlÚexpand)ZFrameÚ text_frameZTextr8rZ ScrollbarrjZyviewZpackZLEFTÚYrLrmZxviewZBOTTOMÚXÚsetÚtupleÚtxtfontrZbind_allÚ decrease_sizeÚ increase_sizeÚbindÚupdate_mousewheelZBOTH)r_r?ror8rjrmZshortcutr"r"r#rNËs2ÿ       zDemoWindow.makeTextFramecCsŽ|tj_d|_d|_t |dd|j|j¡tj_|_}| ¡|j  d|j ¡d|jd<t  ¡|_ }tj  ||j¡|j|_|gtj_|S)Nièi iXz rr/)r@Z_ScreenrArcrdZScrolledCanvasrbZ adjustScrollsZ _rootwindowrwrfZScreenÚscreenÚ TurtleScreenraÚscanvasZ RawTurtleZscreens)r_r?ZcanvasZ_s_r"r"r#rOçs$ÿ  zDemoWindow.makeGraphFramecCs(|td<ttƒ|jd<d||jd<dS)Nr r9z Font size %dr8)rtrsr8rP)r_Úsizer"r"r#Ú set_txtsize÷szDemoWindow.set_txtsizecCs| ttddtƒ¡dS©Nr Úbreak)r}ÚmaxrtÚMINIMUM_FONT_SIZE©r_Zdummyr"r"r#ruüszDemoWindow.decrease_sizecCs| ttddtƒ¡dSr~)r}ÚminrtÚMAXIMUM_FONT_SIZEr‚r"r"r#rvszDemoWindow.increase_sizecCs$|jdkt kr| ¡S| ¡SdS)Nr)Zdeltarrurv)r_rer"r"r#rxszDemoWindow.update_mousewheelÚÚbluecCsh|jj||tkrdndd�|jj||tkr0dndd�|jj||tkrLdndd�|jj||d�dS)Nz#d00z#fca)r^r4)r8r:)rSÚconfigÚNORMALrUrWrP)r_ÚstartÚstopÚclearZtxtZcolorr"r"r#r[ sÿÿÿzDemoWindow.configGUIcs:t|ƒ}tƒD]&}|f‡fdd„ }|j|dt|d�q|S)Ncsˆ |¡dS©N)rZ)r!©r_r"r#Úloadsz)DemoWindow.makeLoadDemoMenu..loadr©r1r2r9r;)rHr(Ú add_commandÚmenufont)r_Úmasterr0r!rŽr"r�r#rIs ÿzDemoWindow.makeLoadDemoMenucsht|ƒ}|jdˆjtd�|jdˆjtd�| ¡tD]*}|f‡fdd„ }|jt|ƒdt|d�q8|S)NzDecrease (C-'-'))r1r;r9zIncrease (C-'+')csˆ |¡dSrŒ)r})r|r�r"r#Úresize(sz'DemoWindow.makeFontMenu..resizerr�)rHr�rur‘rvZ add_separatorÚ font_sizesÚstr)r_r’r0r|r“r"r�r#rJs ÿ ÿ ÿzDemoWindow.makeFontMenucs<t|ƒ}tD]*\}}||f‡fdd„ }|j|t|d�q |S)Ncstˆj||ƒdSrŒ)rr?)Ú help_labelÚ help_filer�r"r#Úshow2sz%DemoWindow.makeHelpMenu..show)r1r9r;)rHÚ help_entriesr�r‘)r_r’r0r–r—r˜r"r�r#rK.s  zDemoWindow.makeHelpMenucCs|jr|j ¡d|_dS©NF)rXryr‹r�r"r"r#Ú refreshCanvas7s zDemoWindow.refreshCanvasc Cs–| ¡dtj_d|}t|ƒtj||_t|jj dƒ�}|  ¡}W5QRX|j   dd¡|j   d|¡|j |d¡| tttdd¡t|_dS) NFz turtledemo.Úrz1.0Úendz# - a Python turtle graphics examplezPress start buttonÚred)rVr@rzÚ_RUNNINGÚ __import__ÚsysÚmodulesÚmoduleÚopenÚ__file__Úreadr8ÚdeleteÚinsertr?rBr[rˆr\ÚREADYr^)r_r`ÚmodnameÚfÚcharsr"r"r#rZ<s  ÿzDemoWindow.loadfilecCsÜ| ¡d|_dtj_| tttdd¡|j  ¡|j  d¡t |_ z$|j  ¡}|dkr`t|_ nt|_ Wn0tjk r˜|jdkrŠYdSt|_ d}YnX|j tkr¶| ttt|¡n"|j tkrØd|_| tttdd¡dS) NTzdemo running...r>ZstandardZ EVENTLOOPzstopped!zuse mouse/keys or STOPrž)r›rXr@rzrŸr[r\rˆryr‹ÚmodeÚRUNNINGr^r£ÚmainÚ EVENTDRIVENÚDONEZ Terminatorr?rY)r_Úresultr"r"r#rRKs< ÿ        ÿ  ÿzDemoWindow.startDemocCs4| ¡|j d¡|jjdd�| ttt¡dS)NÚallr…)Zcursor)r›ryZ_deleter{r‡r[rˆr\r�r"r"r#rVhs zDemoWindow.clearCanvascCs2|jr&| ¡d|_| tttdd¡dtj_dS)NFzSTOPPED!rž)rYrVr[rˆr\r@rzrŸr�r"r"r#rTns ÿzDemoWindow.stopItcCsdtj_|j ¡d|_dSrš)r@rzrŸr?Zdestroyr�r"r"r#rCvs zDemoWindow._destroy)N)N)N)r…r†)Ú__name__Ú __module__Ú __qualname__rarfrNrOr}rurvrxr[rIrJrKr›rZrRrVrTrCr"r"r"r#r)s$ D     r)cCstƒ}|j ¡dSrŒ)r)r?Zmainloop)Zdemor"r"r#r¯|sr¯Ú__main__)'r¡r%ZtkinterZidlelib.colorizerrrZidlelib.percolatorrZidlelib.textviewrZ turtledemorZabout_turtledemor@ÚpathÚdirnameÚabspathr¥r'Úplatformrr]r©r®r±r°rˆr‘rQrtr�r„r”r(r™Úobjectr)r¯r´r"r"r"r#ÚWs<      ý~