
    z%i;                        	 d dl Z d dlZd dl 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                  j                  ej                  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%        yy)    N)*)ColorDelegatorcolor_config)
Percolator)	view_text)__doc__darwin               Arial   )r   r   bold)zLucida Console
   normal   d   )   	   r      r                     c                      t        j                  t              D  cg c]   } | j                  d      r| d   dk7  r| d d " c} S c c} w )Nz.pyr   _)oslistdirdemo_direndswith)entrys    G/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/turtledemo/__main__.pygetExampleEntriesr(   t   sF    $&JJx$8 75NN5!eAh#o #2J 7 7 7s   %A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y)
DemoWindowNc           
      L   t               x| _        x}t        _        |j	                  d       |j                  d| j                         t        rTdd l}|j                  dddddj                  t        j                               ddg|j                  |j                  	       |j                  dd
       |j                  dd
       |j                  d
dd
       |j                  ddd
       |j                  ddd
       t!        |t"        d      | _        | j$                  j'                  | j)                  | j$                        dd       | j$                  j'                  | j+                  | j$                        dd       | j$                  j'                  | j-                  | j$                        dd       | j$                  |d<   t/        t0        dt2        d      }|j5                  | j7                  |             |j5                  | j9                  |             |j;                  ddd       t=        |d
ddddt>              | _         t        rjtC        |d tD        d!| jF                  "      | _$        tC        |d#tD        d!| jJ                  "      | _&        tC        |d$tD        d!| jN                  "      | _(        nltC        |d tD        d%d&| jF                  '      | _$        tC        |d#tD        d%d&| jJ                  '      | _&        tC        |d$tD        d%d&| jN                  '      | _(        | j@                  j;                  d
ddd()       | jH                  j;                  d
d
d*+       | jL                  j;                  d
dd*+       | jP                  j;                  d
dd*+       tS        | jT                        jW                  tY                      d,| _-        d,| _.        |r| j_                  |       | ja                  tb        tb        tb        d-d.       td        | _3        y )/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   )minsizer0   r   r   )reliefborderwidthExamples)menulabel	underlineFontsizeHelpr6   r   z#ddd)orient	sashwidth
sashreliefbgr   news)row
columnspanstickyz --- z#ddf)r      r   )heighttextr>   fontr4   r3   z START z#00cc22)rE   rF   fgcommandz STOP z CLEAR whitez#fed)rE   rF   rG   disabledforegroundrH   )r   r   )r@   columnrB   padxew)r@   rK   rB   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   rE   insertfilterr   dirtyexitflagloadfile	configGUIDISABLEDSTARTUPstate)selffilenamerP   rV   panes        r'   __init__zDemoWindow.__init__   s   *,$.	.D6<

45+T]]; NN#@ 66<fRYY[6Ij &--%--  	0 	q+!!!A!.!!!R!:!!!R!:!!!R!:f!<			4#8#8#C$.! 	 	=		4#4#4TYY#?$.! 	 	=		4#4#4TYY#?$*a 	 	9yyV*&+8##D)*$$T*+		aAf	5ag&%<!',. #Dyw'0$..JDN"4hW&/FDM#Dyw'0D<L<LNDN $Dyw'.V,0NN<DN #4hW&-F+/;;8DM $Dyw'.6.2.>.>@DN 	1V%H!D9q48!D9499**>+;<
MM(#x817	<
    c                 L   | j                   j                         }| j                   j                         }| j                   j                  d| j                  |z
  z  | j                  z         | j                   j                  d| j                  |z
  z  | j                  z         y )Ng      ?)canvaswinfo_widthwinfo_heightxview_moveto	canvwidthyview_moveto
canvheight)r~   eventcwidthcheights       r'   onResizezDemoWindow.onResize   sx    ((*++**,  dnnV&;!<T^^!KL  doog&=!>t!NOr   c                    t        |      x| _        }t        |dddd      x| _        }t	        |       t        |d      x| _        }|j                  |d<   |j                  t        t        	       t        |d
t              x| _        }|j                  |d<   |j                  t        t        	       |j                   |d<   |j                   |d<   t#        t$              |d<   t&        rdnd}|j)                  d|z  | j*                         |j)                  d|z  | j*                         |j)                  d|z  | j,                         |j)                  d|z  | j,                         |j/                  d| j0                         |j/                  d| j,                         |j/                  d| j*                         |j                  t        t2        d       |S )NrE   r   none-   )namerL   wrapwidthvbar)r   rH   )sidefillhbar)r   r;   yscrollcommandxscrollcommandrF   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TextrE   r   	Scrollbarr   yviewpackLEFTYre   r   xviewBOTTOMXsettupletxtfontr	   bind_alldecrease_sizeincrease_sizebindupdate_mousewheelBOTH)r~   rP   r   rE   r   r   shortcuts          r'   rh   zDemoWindow.makeTextFrame   s   ',T{2*
a%+27 	7	DT$Zf==	D**Y		t!	$$ZfZPP	D**Y		vA	&!%!%W~V &9IlX-t/A/AB'(2D4F4FGlX-t/A/ABkH,d.@.@A		($*@*@A		&(:(:;		&(:(:;		t$q	1r   c                 
   |t         j                  _        d| _        d| _        t        j
                  |dd| j                  | j                        xt         j                  _        x| _        }|j                          |j                  j                  d| j                         d|j                  d<   t        j                         x| _        }t         j                  j                  ||       |gt         j                   _        |S )Ni  i   iX  z<Configure>r   r4   )rQ   _ScreenrR   r   r   ScrolledCanvas_canvasr   adjustScrolls_rootwindowr   r   ScreenscreenTurtleScreenr   	RawTurtlescreens)r~   rP   r   r   s       r'   ri   zDemoWindow.makeGraphFrame   s    
  $8>8M8Mc39A 	A 	Avt}}=()}%%}}.f$$VV4$*8 r   c                 r    |t         d<   t        t               | j                  d<   d|z  | j                  d<   y )Nr
   rF   zFont size %drE   )r   r   rE   rm   )r~   sizes     r'   set_txtsizezDemoWindow.set_txtsize  s0    
!'N		&"04"7r   c                 V    | j                  t        t        d   dz
  t                     yNr
   break)r   maxr   MINIMUM_FONT_SIZEr~   dummys     r'   r   zDemoWindow.decrease_size  #    WQZ!^->?@r   c                 V    | j                  t        t        d   dz   t                     yr   )r   minr   MAXIMUM_FONT_SIZEr   s     r'   r   zDemoWindow.increase_size  r   r   c                 p    |j                   dk  t         k(  r| j                         S | j                         S )Nr   )deltar	   r   r   )r~   r   s     r'   r   zDemoWindow.update_mousewheel  s4     KK!OV,%%''%%''r   c                    t         rU| j                  j                  |       | j                  j                  |       | j                  j                  |       nx| j                  j                  ||t
        k(  rdnd       | j                  j                  ||t
        k(  rdnd       | j                  j                  ||t
        k(  rdnd       | j                  j                  ||       y )N)r}   z#d00z#fca)r}   r>   )rE   rG   )r	   rq   configrs   ru   NORMALrm   )r~   startstopcleartxtcolors         r'   rz   zDemoWindow.configGUI  s    NN!!!.MM  t ,NN!!!.NN!!/4VF " LMM  t.2fnF& ! JNN!!/4VF " LCE2r   c                 |     t        |      }t               D ]"  }|f fd	}|j                  |dt        |       $ |S )Nc                 (    j                  |        y N)ry   )r&   r~   s    r'   loadz)DemoWindow.makeLoadDemoMenu.<locals>.load*  s    e$r   r   r7   r8   rF   rH   )r]   r(   add_commandmenufont)r~   masterr6   r&   r   s   `    r'   ra   zDemoWindow.makeLoadDemoMenu&  sI    F|&( 	:E  %5A"*D  :	:
 r   c                 .    t        |      }|j                  d j                  t               |j                  d j                  t               |j                          t        D ]+  }|f fd	}|j                  t        |      dt        |       - |S )NzDecrease (C-'-'))r7   rH   rF   zIncrease (C-'+')c                 (    j                  |        y r   )r   )r   r~   s    r'   resizez'DemoWindow.makeFontMenu.<locals>.resize9  s      &r   r   r   )r]   r   r   r   r   add_separator
font_sizesstr)r~   r   r6   r   r   s   `    r'   rb   zDemoWindow.makeFontMenu0  s    F|14;M;M& 	 	(14;M;M& 	 	( 	<D  '3t9"*F  <	<
 r   c                 z     t        |      }t        D ]%  \  }}||f fd	}|j                  |t        |       ' |S )Nc                 4    t        j                  | |       y r   )r   rP   )
help_label	help_filer~   s     r'   showz%DemoWindow.makeHelpMenu.<locals>.showC  s    $))Z;r   )r7   rF   rH   )r]   help_entriesr   r   )r~   r   r6   r   r   r   s   `     r'   rc   zDemoWindow.makeHelpMenu?  sH    F|%1 	L!J	 *i <:HdK	L r   c                 `    | j                   r"| j                  j                          d| _         y y NF)rw   r   r   r~   s    r'   refreshCanvaszDemoWindow.refreshCanvasH  s%    ::KKDJ r   c                 ,   | j                          dt        j                  _        d|z   }t	        |       t
        j                  |   | _        t        | j                  j                  d      5 }|j                         }d d d        | j                  j                  dd       | j                  j                  d       | j                  j                  |dz          | j!                  t"        t$        t$        dd       t&        | _        y # 1 sw Y   xY w)	NFzturtledemo.rz1.0endz# - a Python turtle graphics examplezPress start buttonred)rt   rQ   r   _RUNNING
__import__sysmodulesmoduleopen__file__readrE   deleteinsertrP   rS   rz   r   r{   READYr}   )r~   r   modnamefcharss        r'   ry   zDemoWindow.loadfileM  s    ',$(*7kk'*$++&&, 	FFHE			&		&		#HHIvx+U	4
	 	s   .D

Dc                    | j                          d| _        dt        j                  _        | j                  t        t        t        dd       | j                  j                          | j                  j                  d       t        | _        	 | j                  j                         }|dk(  rt        | _        nt         | _        | j                  t         k(  r!| j                  t        t        t        |       y | j                  t        k(  r)d| _        | j                  t        t        t        dd       y y # t        j"                  $ r | j$                  Y y t         | _        d}Y w xY w)	NTzdemo running...rN   standard	EVENTLOOPzstopped!zuse mouse/keys or STOPr   )r   rw   rQ   r   r   rz   r{   r   r   r   modeRUNNINGr}   r   mainEVENTDRIVENDONE
TerminatorrP   rx   )r~   results     r'   rp   zDemoWindow.startDemo\  s   
'+$x('	3$

	 [[%%'F$(
!
 ::NN68V!#ZZ;& DMNN8VX3U< '    	 yy DJF		 s   6D6 6E'E'&E'c                     | j                          | j                  j                  d       | j                  j	                  d       | j                  t        t        t               y )Nall )cursor)r   r   _deleter   r   rz   r   r{   r   s    r'   rt   zDemoWindow.clearCanvasy  sE    E""%vx2r   c                     | j                   r8| j                          d| _         | j                  t        t        t        dd       dt
        j                  _        y )NFzSTOPPED!r   )rx   rt   rz   r   r{   rQ   r   r   r   s    r'   rr   zDemoWindow.stopIt  sA    ==!DMNN68X%u.',$r   c                 p    dt         j                  _        | j                  j	                          d | _        y r   )rQ   r   r   rP   destroyr   s    r'   rU   zDemoWindow._destroy  s'    ',$			r   r   )r  blue)__name__
__module____qualname__r   r   rh   ri   r   r   r   r   rz   ra   rb   rc   r   ry   rp   rt   rr   rU    r   r'   r*   r*      s_    IXP8(8
(3
<:3-r   r*   c                  L    t               } | j                  j                          y r   )r*   rP   mainloop)demos    r'   r  r    s    <DIIr   __main__)'r   r"   tkinteridlelib.colorizerr   r   idlelib.percolatorr   idlelib.textviewr   
turtledemor   about_turtledemorQ   pathdirnameabspathr   r$   platformr	   r|   r   r  r  r  r   r   ro   r   r   r   r   r(   r   objectr*   r  r  r  r   r'   <module>r&     s   Tj  	  : ) & 2 77??277??845		!
	
R 

*  7
7
  )*FNN+K K\ zF r   