
    ;e;                     |   	 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g dZdZdZg dZ d Z!defdefdej        ffZ" G d de#          Z$d Z%e&dk    r e%             dS dS )    N)*)ColorDelegatorcolor_config)
Percolator)	view_text)__doc__darwin               Arial   )r   r   bold)zLucida Console
   normal   d   )   	   r      r                     c                  H    d t          j        t                    D             S )Nc                 d    g | ]-}|                     d           r|d         dk    #|dd         .S )z.pyr   _N)endswith).0entrys     */usr/lib/python3.11/turtledemo/__main__.py
<listcomp>z%getExampleEntries.<locals>.<listcomp>u   sH     7 7 75NN5!!7&+Ah#oo #2#J&5oo    )oslistdirdemo_dir r(   r&   getExampleEntriesr-   t   s,    7 7BJx$8$8 7 7 7 7r(   zTurtledemo helpzAbout turtledemozAbout turtle modulec                       e Zd ZddZd Zd Zd Zd ZddZddZ	d	 Z
ddZd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )
DemoWindowNc           
         t                      x| _        x}t          _        |                    d           |                    d| j                   t          rQdd l}|	                    ddddd
                    t          j                              ddg|j        |j        	           |                    dd
           |                    dd
           |                    d
dd
           |                    ddd
           |                    ddd
           t!          |t"          d          | _        | j                            |                     | j                  dd           | j                            |                     | j                  dd           | j                            |                     | j                  dd           | j        |d<   t/          t0          dt2          d          }|                    |                     |                     |                    |                     |                     |                    ddd           t=          |d
ddddt>                    | _         t          rjtC          |d tD          d!| j#        "          | _$        tC          |d#tD          d!| j%        "          | _&        tC          |d$tD          d!| j'        "          | _(        nltC          |d tD          d%d&| j#        '          | _$        tC          |d#tD          d%d&| j%        '          | _&        tC          |d$tD          d%d&| j'        '          | _(        | j                             d
ddd()           | j$                            d
d
d*+           | j&                            d
dd*+           | j(                            d
dd*+           tS          | j*                  +                    tY                                 d,| _-        d,| _.        |r| /                    |           | 0                    tb          tb          tb          d-d.           td          | _3        d S )/NzPython turtle-graphics examplesWM_DELETE_WINDOWr   	osascriptz-ez tell application "System Events"z>set frontmost of the first process whose unix id is {} to truezend tell)stderrstdoutr
   )weightZ   )minsizer5   r   r   )reliefborderwidthExamples)menulabel	underlineFontsizeHelpr;   r   z#ddd)orient	sashwidth
sashreliefbgr   news)row
columnspanstickyz --- z#ddf)r      r   )heighttextrC   fontr9   r8   z START z#00cc22)rJ   rK   fgcommandz STOP z CLEAR whitez#fed)rJ   rK   rL   disabledforegroundrM   )r   r   )rE   columnrG   padxew)rE   rP   rG   FzChoose example from menublack)4Tkrootturtle_roottitlewm_protocol_destroyr	   
subprocessrunformatr)   getpidDEVNULLgrid_rowconfiguregrid_columnconfigureMenuRAISEDmBaradd_cascademakeLoadDemoMenumakeFontMenumakeHelpMenuPanedWindow
HORIZONTALSOLIDaddmakeTextFramemakeGraphFramegridLabelRIDGE
output_lblButtonbtnfont	startDemo	start_btnstopItstop_btnclearCanvas	clear_btnr   rJ   insertfilterr   dirtyexitflagloadfile	configGUIDISABLEDSTARTUPstate)selffilenamerU   r[   panes        r&   __init__zDemoWindow.__init__   s   *,$$.	.D6<

4555+T];;; 	0 NN#@ 66<fRY[[6I6Ij &-%-  	0 	0 	0 	q+++!!!A!...!!!R!:::!!!R!:::!!!R!:::f!<<<		4#8#8#C#C$.! 	 	= 	= 	=	4#4#4TY#?#?$.! 	 	= 	= 	=	4#4#4TY#?#?$*a 	 	9 	9 	9yV*&+8 8 8##D))***$$T**+++		aAf	555ag&%<!',. . .  	@#Dyw'0$.J J JDN"4hW&/F F FDM#Dyw'0D<LN N NDNN $Dyw'.V,0N< < <DN #4hW&-F+/;8 8 8DM $Dyw'.6.2.>@ @ @DN 	1V%HHH!D999q4888!D99949**>+;+;<<<
 	$MM(###x817	< 	< 	<


r(   c                    | j                                         }| j                                         }| j                             d| j        |z
  z  | j        z             | j                             d| j        |z
  z  | j        z             d S )Ng      ?)canvaswinfo_widthwinfo_heightxview_moveto	canvwidthyview_moveto
canvheight)r   eventcwidthcheights       r&   onResizezDemoWindow.onResize   s    ((**+**,,  dnV&;!<T^!KLLL  dog&=!>t!NOOOOOr(   c                    t          |          x| _        }t          |dddd          x| _        }t	          |           t          |d          x| _        }|j        |d<   |                    t          t          	           t          |d
t                    x| _        }|j        |d<   |                    t          t          	           |j        |d<   |j        |d<   t#          t$                    |d<   t&          rdnd}|                    d|z  | j                   |                    d|z  | j                   |                    d|z  | j                   |                    d|z  | j                   |                    d| j                   |                    d| j                   |                    d| j                   |                    t          t2          d           |S )NrJ   r   none-   )namerQ   wrapwidthvbar)r   rM   )sidefillhbar)r   r@   yscrollcommandxscrollcommandrK   CommandControlz
<%s-minus>z<%s-underscore>z
<%s-equal>z	<%s-plus>z<Control-MouseWheel>z<Control-Button-4>z<Control-Button-5>r
   )r   r   expand)Frame
text_frameTextrJ   r   	Scrollbarr   yviewpackLEFTYrj   r   xviewBOTTOMXsettupletxtfontr	   bind_alldecrease_sizeincrease_sizebindupdate_mousewheelBOTH)r   rU   r   rJ   r   r   shortcuts          r&   rm   zDemoWindow.makeTextFrame   s   ',T{{2*
a%+27 7 7 	7	DT$Zf====	D*Y		t!	$$$$ZfZPPPP	D*Y		vA	&&&!%!%W~~V &599IlX-t/ABBB'(2D4FGGGlX-t/ABBBkH,d.@AAA		($*@AAA		&(:;;;		&(:;;;		t$q	111r(   c                    |t           j        _        d| _        d| _        t          j        |dd| j        | j                  xt           j        _        x| _        }|                                 |j	        
                    d| j                   d|j        d<   t          j                    x| _        }t           j                            ||           |gt           j        _        |S )Ni  i   iX  z<Configure>r   r9   )rV   _ScreenrW   r   r   ScrolledCanvas_canvasr   adjustScrolls_rootwindowr   r   ScreenscreenTurtleScreenr   	RawTurtlescreens)r   rU   r   r   s       r&   rn   zDemoWindow.makeGraphFrame   s    
  $8>8Mc39A 9A 	A 	Avt}===()}%%}.f$$VV444$*8 r(   c                 l    |t           d<   t          t                     | j        d<   d|z  | j        d<   d S )Nr
   rK   zFont size %drJ   )r   r   rJ   rr   )r   sizes     r&   set_txtsizezDemoWindow.set_txtsize  s4    
!'NN	&"04"7r(   c                 r    |                      t          t          d         dz
  t                               dS Nr
   break)r   maxr   MINIMUM_FONT_SIZEr   dummys     r&   r   zDemoWindow.decrease_size  .    WQZ!^->??@@@wr(   c                 r    |                      t          t          d         dz   t                               dS r   )r   minr   MAXIMUM_FONT_SIZEr   s     r&   r   zDemoWindow.increase_size  r   r(   c                 |    |j         dk     t           k    r|                                 S |                                 S )Nr   )deltar	   r   r   )r   r   s     r&   r   zDemoWindow.update_mousewheel  s;     K!OV,,%%'''%%'''r(    bluec                    t           rR| j                            |           | j                            |           | j                            |           n{| j                            ||t
          k    rdnd           | j                            ||t
          k    rdnd           | j                            ||t
          k    rdnd           | j                            ||           d S )N)r   z#d00z#fca)r   rC   )rJ   rL   )r	   rv   configrx   rz   NORMALrr   )r   startstopcleartxtcolors         r&   r   zDemoWindow.configGUI  s    
	LN!!!...M  t ,,,N!!!....N!!/4VVF " L L LM  t.2fnnFF& ! J J JN!!/4VVF " L L LCE22222r(   c                      t          |          }t                      D ]'}|f fd	}|                    |dt          |           (|S )Nc                 2                         |            d S N)r~   )r%   r   s    r&   loadz)DemoWindow.makeLoadDemoMenu.<locals>.load*  s    e$$$$$r(   r   r<   r=   rK   rM   )rb   r-   add_commandmenufont)r   masterr;   r%   r   s   `    r&   rf   zDemoWindow.makeLoadDemoMenu&  st    F||&(( 	: 	:E  % % % % % %5A"*D  : : : :r(   c                 N    t          |          }|                    d j        t                     |                    d j        t                     |                                 t          D ]4}|f fd	}|                    t          |          dt          |           5|S )NzDecrease (C-'-'))r<   rM   rK   zIncrease (C-'+')c                 2                         |            d S r   )r   )r   r   s    r&   resizez'DemoWindow.makeFontMenu.<locals>.resize9  s      &&&&&r(   r   r   )rb   r   r   r   r   add_separator
font_sizesstr)r   r   r;   r   r   s   `    r&   rg   zDemoWindow.makeFontMenu0  s    F||14;M& 	 	( 	( 	(14;M& 	 	( 	( 	( 	< 	<D  ' ' ' ' ' '3t99"*F  < < < <r(   c                      t          |          }t          D ]*\  }}||f fd	}|                    |t          |           +|S )Nc                 4    t          j        | |           d S r   )r   rU   )
help_label	help_filer   s     r&   showz%DemoWindow.makeHelpMenu.<locals>.showC  s    $)Z;;;;;r(   )r<   rK   rM   )rb   help_entriesr   r   )r   r   r;   r   r   r   s   `     r&   rh   zDemoWindow.makeHelpMenu?  sj    F||%1 	L 	L!J	 *i < < < < < <:HdKKKKr(   c                 X    | j         r"| j                                         d| _         d S d S NF)r|   r   r   r   s    r&   refreshCanvaszDemoWindow.refreshCanvasH  s5    : 	KDJJJ	 	r(   c                 @   |                                   dt          j        _        d|z   }t	          |           t
          j        |         | _        t          | j        j	        d          5 }|
                                }d d d            n# 1 swxY w Y   | j                            dd           | j                            d|           | j                            |dz              |                     t"          t$          t$          dd           t&          | _        d S )	NFzturtledemo.rz1.0endz# - a Python turtle graphics examplezPress start buttonred)ry   rV   r   _RUNNING
__import__sysmodulesmoduleopen__file__readrJ   deleteinsertrU   rX   r   r   r   READYr   )r   r   modnamefcharss        r&   r~   zDemoWindow.loadfileM  s/   ',$(*7k'*$+&,, 	FFHHE	 	 	 	 	 	 	 	 	 	 	 	 	 	 		&&&	&&&	#HHIIIvx+U	4 	4 	4


s   +BBBc                    |                                   d| _        dt          j        _        |                     t          t          t          dd           | j        	                                 | j        
                    d           t          | _        	 | j                                        }|dk    rt          | _        nt           | _        n-# t          j        $ r | j        Y d S t           | _        d}Y nw xY w| j        t           k    r)|                     t          t          t          |           d S | j        t          k    r1d| _        |                     t          t          t          dd           d S d S )	NTzdemo running...rS   standard	EVENTLOOPzstopped!zuse mouse/keys or STOPr   )r   r|   rV   r   r   r   r   r   r   r   modeRUNNINGr   r   mainEVENTDRIVENDONE
TerminatorrU   r}   )r   results     r&   ru   zDemoWindow.startDemo\  sh   
'+$x('	3 	3 	3$$$

	 [%%''F$$(

!
  	  	  	 y DJFFF		 
 :NN68V!# # # # #Z;&& DMNN8VX3U< < < < < '&s   8C C8'C87C8c                     |                                   | j                            d           | j                            d           |                     t          t          t                     d S )Nallr   )cursor)r   r   _deleter   r   r   r   r   r   s    r&   ry   zDemoWindow.clearCanvasy  s_    E""""%%%vx22222r(   c                     | j         rC|                                  d| _         |                     t          t          t          dd           dt
          j        _        d S )NFzSTOPPED!r   )r}   ry   r   r   r   rV   r   r   r   s    r&   rw   zDemoWindow.stopIt  sW    = 	.!DMNN68X%u. . .',$$$r(   c                 h    dt           j        _        | j                                         d | _        d S r   )rV   r   r   rU   destroyr   s    r&   rZ   zDemoWindow._destroy  s,    ',$				r(   r   )r   r   )__name__
__module____qualname__r   r   rm   rn   r   r   r   r   r   rf   rg   rh   r   r~   ru   ry   rw   rZ   r,   r(   r&   r/   r/      s>       I I I IXP P P  8  (8 8 8
      ( ( (3 3 3 3        
  < < <:3 3 3- - -    r(   r/   c                  T    t                      } | j                                         d S r   )r/   rU   mainloop)demos    r&   r  r    s%    <<DIr(   __main__)'r   r)   tkinteridlelib.colorizerr   r   idlelib.percolatorr   idlelib.textviewr   
turtledemor   about_turtledemorV   pathdirnameabspathr   r+   platformr	   r   r  r
  r  r  r   r   rt   r   r   r   r   r-   r   objectr/   r  r  r,   r(   r&   <module>r)     s  Tj 


 				     : : : : : : : : ) ) ) ) ) ) & & & & & & 2 2 2 2 2 2 7??27??84455		!
	
R 

*
*
*  777
7 7 7
  )*FN+K K K K K K K K\   zDFFFFF r(   