???<!-- GIF89;a -->
123123123123
.....................................................................................................................................???<!-- GIF89;a -->
123123123123
.....................................................................................................................................U
    .e7                     @   s  d dl Z d dlZd dlT d dlmZmZ d dlmZ d dlm	Z	 d dl
mZ d dlZejejeZe jdkZdZd	Zd
ZdZdZddefZdZdddgZdZdZdddddddddddgZ dd Z!d efd!efd"ejffZ"G d#d$ d$e#Z$d%d& Z%e&d'kre%  dS )(    N)*)ColorDelegatorcolor_config)
Percolator)	view_text)__doc__darwin               Arial   )r   r   ZboldzLucida Console
   normal   d      	                        c                   C   s   dd t tD S )Nc                 S   s.   g | ]&}| d r|d dkr|dd qS )z.pyr   _N)endswith).0entry r"   +/usr/lib64/python3.8/turtledemo/__main__.py
<listcomp>t   s    
 z%getExampleEntries.<locals>.<listcomp>)oslistdirdemo_dirr"   r"   r"   r#   getExampleEntriess   s    r(   zTurtledemo helpzAbout turtledemozAbout turtle modulec                   @   s   e Zd Zd(ddZdd Zdd Zdd	 Zd
d Zd)ddZd*ddZ	dd Z
d+ddZdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' ZdS ),
DemoWindowNc              	   C   sJ  t   | _ }t_|d |d| j trbdd l}|j	ddddd
t ddg|j|jd	 |jdd
d |jdd
d |jd
dd
d |jddd
d |jddd
d t|tdd| _| jj| | jddd | jj| | jddd | jj| | jddd | j|d< ttdtdd}|| | || | |jdddd t|d
ddddtd| _ t!|d t"d!d"| j#d#| _$t!|d$t"d!d"| j%d#| _&t!|d%t"d!d"| j'd#| _(| j jd
ddd&d' | j$jd
d
d(d) | j&jd
dd(d) | j(jd
dd(d) t)| j*+t,  d*| _-d*| _.|r.| /| | 0t1t1t1d+d, t2| _3d S )-NzPython turtle-graphics examplesZWM_DELETE_WINDOWr   Z	osascriptz-ez tell application "System Events"z>set frontmost of the first process whose unix id is {} to truezend tell)stderrstdoutr	   )weightZ   )Zminsizer,   r
   r   )reliefborderwidthZExamples)menulabel	underlineZFontsizeZHelpr0   r   z#ddd)orientZ	sashwidthZ
sashreliefbgr   Znews)rowZ
columnspanstickyz --- z#ddf)r      r   )Zheighttextr4   fontr/   r.   z START Zwhitez#fed)r8   r9   fgZdisabledforegroundcommandz STOP z CLEAR )r   r   )r5   columnr6   padxZew)r5   r<   r6   FzChoose example from menublack)4ZTkrootturtle_roottitleZwm_protocol_destroyr   
subprocessrunformatr%   getpidZDEVNULLZgrid_rowconfigureZgrid_columnconfigureMenuZRAISEDZmBarZadd_cascademakeLoadDemoMenumakeFontMenumakeHelpMenuZPanedWindow
HORIZONTALZSOLIDaddmakeTextFramemakeGraphFrameZgridZLabelZRIDGE
output_lblZButtonbtnfont	startDemo	start_btnstopItstop_btnclearCanvas	clear_btnr   r8   Zinsertfilterr   dirtyexitflagloadfile	configGUIDISABLEDSTARTUPstate)selffilenamer?   rD   Zpaner"   r"   r#   __init__   s    
      
 
    

 zDemoWindow.__init__c                 C   sP   | j  }| j  }| j d| j|  | j  | j d| j|  | j  d S )Ng      ?)_canvasZwinfo_widthZwinfo_heightZxview_moveto	canvwidthZyview_moveto
canvheight)r_   eventZcwidthZcheightr"   r"   r#   onResize   s    

zDemoWindow.onResizec                 C   s6  t | | _}t|ddddd | _}t| t|dd | _}|j|d< |jt	t
d	 t|d
td | _}|j|d< |jttd	 |j|d< |j|d< tt|d< trdnd}|d| | j |d| | j |d| | j |d| | j |d| j |d| j |d| j |jt	tdd |S )Nr8   r   Znone-   )namer=   Zwrapwidthvbar)rh   r;   )sidefillhbar)rh   r3   ZyscrollcommandZxscrollcommandr9   ZCommandZControlz
<%s-minus>z<%s-underscore>z
<%s-equal>z	<%s-plus>z<Control-MouseWheel>z<Control-Button-4>z<Control-Button-5>r	   )rk   rl   expand)ZFrame
text_frameZTextr8   r   Z	Scrollbarrj   ZyviewZpackZLEFTYrL   rm   ZxviewZBOTTOMXsettupletxtfontr   Zbind_alldecrease_sizeincrease_sizebindupdate_mousewheelZBOTH)r_   r?   ro   r8   rj   rm   Zshortcutr"   r"   r#   rN      s2     



zDemoWindow.makeTextFramec                 C   s   |t j_d| _d| _t |dd| j| j t j_ | _}|  |j	d| j
 d|jd< t   | _}t j||j |j| _|gt j_|S )Ni  i   iX  z<Configure>r   r/   )r@   Z_ScreenrA   rc   rd   ZScrolledCanvasrb   ZadjustScrollsZ_rootwindowrw   rf   ZScreenscreenTurtleScreenra   scanvasZ	RawTurtleZscreens)r_   r?   ZcanvasZ_s_r"   r"   r#   rO      s$        

zDemoWindow.makeGraphFramec                 C   s(   |t d< tt | jd< d| | jd< d S )Nr	   r9   zFont size %dr8   )rt   rs   r8   rP   )r_   sizer"   r"   r#   set_txtsize   s    zDemoWindow.set_txtsizec                 C   s   |  ttd d t dS Nr	   break)r}   maxrt   MINIMUM_FONT_SIZEr_   Zdummyr"   r"   r#   ru      s    zDemoWindow.decrease_sizec                 C   s   |  ttd d t dS r~   )r}   minrt   MAXIMUM_FONT_SIZEr   r"   r"   r#   rv      s    zDemoWindow.increase_sizec                 C   s$   |j dk t kr|  S |  S d S )Nr   )Zdeltar   ru   rv   )r_   re   r"   r"   r#   rx     s    zDemoWindow.update_mousewheel bluec                 C   sh   | j j||tkrdndd | jj||tkr0dndd | jj||tkrLdndd | jj||d d S )Nz#d00z#fca)r^   r4   )r8   r:   )rS   configNORMALrU   rW   rP   )r_   startstopclearZtxtZcolorr"   r"   r#   r[     s    zDemoWindow.configGUIc                    s:   t |}t D ]&}|f fdd	}|j|dt|d q|S )Nc                    s     |  d S N)rZ   )r!   r_   r"   r#   load  s    z)DemoWindow.makeLoadDemoMenu.<locals>.loadr   r1   r2   r9   r;   )rH   r(   add_commandmenufont)r_   masterr0   r!   r   r"   r   r#   rI     s    
 zDemoWindow.makeLoadDemoMenuc                    sh   t |}|jd jtd |jd jtd |  tD ]*}|f fdd	}|jt|dt|d q8|S )NzDecrease (C-'-'))r1   r;   r9   zIncrease (C-'+')c                    s     |  d S r   )r}   )r|   r   r"   r#   resize(  s    z'DemoWindow.makeFontMenu.<locals>.resizer   r   )rH   r   ru   r   rv   Zadd_separator
font_sizesstr)r_   r   r0   r|   r   r"   r   r#   rJ     s    

 zDemoWindow.makeFontMenuc                    s<   t |}tD ]*\}}||f fdd	}|j|t|d q|S )Nc                    s   t  j| | d S r   )r   r?   )
help_label	help_filer   r"   r#   show2  s    z%DemoWindow.makeHelpMenu.<locals>.show)r1   r9   r;   )rH   help_entriesr   r   )r_   r   r0   r   r   r   r"   r   r#   rK   .  s
    zDemoWindow.makeHelpMenuc                 C   s   | j r| j  d| _ d S NF)rX   ry   r   r   r"   r"   r#   refreshCanvas7  s    
zDemoWindow.refreshCanvasc              	   C   s   |    dtj_d| }t| tj| | _t| jj	d}|
 }W 5 Q R X | jdd | jd| | j|d  | tttdd t| _d S )	NFzturtledemo.rz1.0endz# - a Python turtle graphics examplezPress start buttonred)rV   r@   rz   _RUNNING
__import__sysmodulesmoduleopen__file__readr8   deleteinsertr?   rB   r[   r   r\   READYr^   )r_   r`   modnamefcharsr"   r"   r#   rZ   <  s    
 zDemoWindow.loadfilec                 C   s   |    d| _dtj_| tttdd | j	  | j
d t| _z$| j }|dkr`t| _nt| _W n0 tjk
r   | jd krY d S t| _d}Y nX | jtkr| ttt| n"| jtkrd| _| tttdd d S )	NTzdemo running...r>   ZstandardZ	EVENTLOOPzstopped!zuse mouse/keys or STOPr   )r   rX   r@   rz   r   r[   r\   r   ry   r   modeRUNNINGr^   r   mainEVENTDRIVENDONEZ
Terminatorr?   rY   )r_   resultr"   r"   r#   rR   K  s<    
 








 zDemoWindow.startDemoc                 C   s4   |    | jd | jjdd | ttt d S )Nallr   )Zcursor)r   ry   Z_deleter{   r   r[   r   r\   r   r"   r"   r#   rV   h  s    zDemoWindow.clearCanvasc                 C   s2   | j r&|   d| _ | tttdd dtj_d S )NFzSTOPPED!r   )rY   rV   r[   r   r\   r@   rz   r   r   r"   r"   r#   rT   n  s    
 zDemoWindow.stopItc                 C   s   dt j_| j  d | _d S r   )r@   rz   r   r?   Zdestroyr   r"   r"   r#   rC   v  s    
zDemoWindow._destroy)N)N)N)r   r   )__name__
__module____qualname__ra   rf   rN   rO   r}   ru   rv   rx   r[   rI   rJ   rK   r   rZ   rR   rV   rT   rC   r"   r"   r"   r#   r)      s$   
D


	
	r)   c                  C   s   t  } | j  d S r   )r)   r?   Zmainloop)Zdemor"   r"   r#   r   |  s    r   __main__)'r   r%   ZtkinterZidlelib.colorizerr   r   Zidlelib.percolatorr   Zidlelib.textviewr   Z
turtledemor   Zabout_turtledemor@   pathdirnameabspathr   r'   platformr   r]   r   r   r   r   r   r   rQ   rt   r   r   r   r(   r   objectr)   r   r   r"   r"   r"   r#   <module>W   s<   


 ~
