U .e7 @s ddlZddlZddlTddlmZmZddlmZddlm Z ddl m Z ddl Z ejejeZejdkZdZd Zd Zd Zd Zd defZdZdddgZdZdZdddddddddddg Z ddZ!d e fd!e fd"e j ffZ"Gd#d$d$e#Z$d%d&Z%e&d'kre%dS)(N)*)ColorDelegator color_config) Percolator) view_text)__doc__darwinArial )rrZboldzLucida Console normald cCsddttDS)NcSs.g|]&}|dr|ddkr|ddqS)z.pyr_N)endswith).0entryr"+/usr/lib64/python3.8/turtledemo/__main__.py ts z%getExampleEntries..)oslistdirdemo_dirr"r"r"r#getExampleEntriesssr(zTurtledemo helpzAbout turtledemozAbout turtle modulec@seZdZd(ddZddZddZdd Zd d Zd)d d Zd*ddZ ddZ d+ddZ ddZ ddZ ddZddZddZd d!Zd"d#Zd$d%Zd&d'ZdS), DemoWindowNc CsJt|_}t_|d|d|jtrbddl}|j ddddd t ddg|j |j d |jdd d |jdd d |jd d d d |jdd d d |jdd d d t|tdd|_|jj||jddd|jj||jddd|jj||jddd|j|d<ttdtdd}|||||||jddddt|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)stderrstdoutr )weightZ)Zminsizer,r r )relief borderwidthZExamples)menulabel underlineZFontsizeZHelpr0r z#ddd)orientZ sashwidthZ sashreliefbgr Znews)rowZ columnspanstickyz --- z#ddf)rr)Zheighttextr4fontr/r.z START Zwhitez#fed)r8r9fgZdisabledforegroundcommandz STOP z CLEAR )rr )r5columnr6padxZew)r5r<r6FzChoose example from menublack)4ZTkrootturtle_roottitleZ wm_protocol_destroyr subprocessrunformatr%getpidZDEVNULLZgrid_rowconfigureZgrid_columnconfigureMenuZRAISEDZmBarZ add_cascademakeLoadDemoMenu makeFontMenu makeHelpMenuZ PanedWindow HORIZONTALZSOLIDadd makeTextFramemakeGraphFrameZgridZLabelZRIDGE output_lblZButtonbtnfont startDemo start_btnstopItstop_btn clearCanvas clear_btnrr8Z insertfilterrdirtyexitflagloadfile configGUIDISABLEDSTARTUPstate)selffilenamer?rDZpaner"r"r#__init__s      zDemoWindow.__init__cCsP|j}|j}|jd|j||j|jd|j||jdS)Ng?)_canvasZ winfo_widthZ winfo_heightZ xview_moveto canvwidthZ yview_moveto canvheight)r_eventZcwidthZcheightr"r"r#onResizes  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<trdnd}|d||j|d||j|d||j|d||j|d|j|d|j|d|j|jt tdd|S)Nr8r Znone-)namer=Zwrapwidthvbar)rhr;)sidefillhbar)rhr3ZyscrollcommandZxscrollcommandr9ZCommandZControlz <%s-minus>z<%s-underscore>z <%s-equal>z <%s-plus>zzzr )rkrlexpand)ZFrame text_frameZTextr8rZ ScrollbarrjZyviewZpackZLEFTYrLrmZxviewZBOTTOMXsettupletxtfontrZbind_all decrease_size increase_sizebindupdate_mousewheelZBOTH)r_r?ror8rjrmZshortcutr"r"r#rNs2       zDemoWindow.makeTextFramecCs|tj_d|_d|_t|dd|j|jtj_|_}||j d|j d|jd<t |_ }tj ||j|j|_|gtj_|S)Nii iXz rr/)r@Z_ScreenrArcrdZScrolledCanvasrbZ adjustScrollsZ _rootwindowrwrfZScreenscreen TurtleScreenrascanvasZ RawTurtleZscreens)r_r?ZcanvasZ_s_r"r"r#rOs$  zDemoWindow.makeGraphFramecCs(|td<tt|jd<d||jd<dS)Nr r9z Font size %dr8)rtrsr8rP)r_sizer"r"r# set_txtsizeszDemoWindow.set_txtsizecCs|ttddtdSNr break)r}maxrtMINIMUM_FONT_SIZEr_Zdummyr"r"r#ruszDemoWindow.decrease_sizecCs|ttddtdSr~)r}minrtMAXIMUM_FONT_SIZErr"r"r#rvszDemoWindow.increase_sizecCs$|jdkt kr|S|SdS)Nr)Zdeltarrurv)r_rer"r"r#rxszDemoWindow.update_mousewheelbluecCsh|jj||tkrdndd|jj||tkr0dndd|jj||tkrLdndd|jj||ddS)Nz#d00z#fca)r^r4)r8r:)rSconfigNORMALrUrWrP)r_startstopclearZtxtZcolorr"r"r#r[ szDemoWindow.configGUIcs:t|}tD]&}|ffdd }|j|dt|dq|S)Ncs|dSN)rZ)r!r_r"r#loadsz)DemoWindow.makeLoadDemoMenu..loadrr1r2r9r;)rHr( add_commandmenufont)r_masterr0r!rr"rr#rIs zDemoWindow.makeLoadDemoMenucsht|}|jdjtd|jdjtd|tD]*}|ffdd }|jt|dt|dq8|S)NzDecrease (C-'-'))r1r;r9zIncrease (C-'+')cs|dSr)r})r|rr"r#resize(sz'DemoWindow.makeFontMenu..resizerr)rHrrurrvZ add_separator font_sizesstr)r_rr0r|rr"rr#rJs   zDemoWindow.makeFontMenucs<t|}tD]*\}}||ffdd }|j|t|dq |S)Ncstj||dSr)rr?) help_label help_filerr"r#show2sz%DemoWindow.makeHelpMenu..show)r1r9r;)rH help_entriesrr)r_rr0rrrr"rr#rK.s  zDemoWindow.makeHelpMenucCs|jr|jd|_dSNF)rXryrrr"r"r# refreshCanvas7s zDemoWindow.refreshCanvasc Cs|dtj_d|}t|tj||_t|jj d}| }W5QRX|j dd|j d||j|d|tttddt|_dS) NFz turtledemo.rz1.0endz# - a Python turtle graphics examplezPress start buttonred)rVr@rz_RUNNING __import__sysmodulesmoduleopen__file__readr8deleteinsertr?rBr[rr\READYr^)r_r`modnamefcharsr"r"r#rZ<s  zDemoWindow.loadfilecCs|d|_dtj_|tttdd|j |j dt |_ z$|j }|dkr`t|_ nt|_ Wn0tjk r|jdkrYdSt|_ d}YnX|j tkr|ttt|n"|j tkrd|_|tttdddS) NTzdemo running...r>ZstandardZ EVENTLOOPzstopped!zuse mouse/keys or STOPr)rrXr@rzrr[r\rryrmodeRUNNINGr^rmain EVENTDRIVENDONEZ Terminatorr?rY)r_resultr"r"r#rRKs<           zDemoWindow.startDemocCs4||jd|jjdd|tttdS)Nallr)Zcursor)rryZ_deleter{rr[rr\rr"r"r#rVhs zDemoWindow.clearCanvascCs2|jr&|d|_|tttdddtj_dS)NFzSTOPPED!r)rYrVr[rr\r@rzrrr"r"r#rTns zDemoWindow.stopItcCsdtj_|jd|_dSr)r@rzrr?Zdestroyrr"r"r#rCvs zDemoWindow._destroy)N)N)N)rr)__name__ __module__ __qualname__rarfrNrOr}rurvrxr[rIrJrKrrZrRrVrTrCr"r"r"r#r)s$ D     r)cCst}|jdSr)r)r?Zmainloop)Zdemor"r"r#r|sr__main__)'rr%ZtkinterZidlelib.colorizerrrZidlelib.percolatorrZidlelib.textviewrZ turtledemorZabout_turtledemor@pathdirnameabspathrr'platformrr]rrrrrrrQrtrrrr(robjectr)rrr"r"r"r#Ws<      ~