
    5bh<                        	 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
Z
d dlmZ e j                  dk(  rd dlmZ  e        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__win32)fix_win_hidpi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    =/opt/python-3.12.12/usr/lib/python3.12/turtledemo/__main__.pygetExampleEntriesr*   v   sL    $&JJx$8 7$85NN5!eAh#o #2J$8 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           
      N   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   )minsizer2   r   r   )reliefborderwidthExamples)menulabel	underlineFontsizeHelpr8   r   z#ddd)orient	sashwidth
sashreliefbgr   news)row
columnspanstickyz --- z#ddf)r      r   )heighttextr@   fontr6   r5   z START z#00cc22)rG   rH   fgcommandz STOP z CLEAR whitez#fed)rG   rH   rI   disabledforegroundrJ   )r   r   )rB   columnrD   padxew)rB   rM   rD   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   rG   insertfilterr   dirtyexitflagloadfile	configGUIDISABLEDSTARTUPstate)selffilenamerR   rX   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4
a&+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 )NrG   r   none-   )namerN   wrapwidthvbar)r   rJ   )sidefillhbar)r   r=   yscrollcommandxscrollcommandrH   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TextrG   r   	Scrollbarr   yviewpackLEFTYrg   r   xviewBOTTOMXsettupletxtfontr   bind_alldecrease_sizeincrease_sizebindupdate_mousewheelBOTH)r   rR   r   rG   r   r   shortcuts          r)   rj   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   r6   )rS   _ScreenrT   r   r   ScrolledCanvas_canvasr   adjustScrolls_rootwindowr   r   ScreenscreenTurtleScreenr   	RawTurtlescreens)r   rR   r   r   s       r)   rk   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   rH   zFont size %drG   )r   r   rG   ro   )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@   )rG   rI   )r   rs   configru   rw   NORMALro   )r   startstopcleartxtcolors         r)   r|   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)r{   )r(   r   s    r)   loadz)DemoWindow.makeLoadDemoMenu.<locals>.load,  s    e$r   r   r9   r:   rH   rJ   )r_   r*   add_commandmenufont)r   masterr8   r(   r   s   `    r)   rc   zDemoWindow.makeLoadDemoMenu(  sD    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-'-'))r9   rJ   rH   zIncrease (C-'+')c                 (    j                  |        y r   )r   )r   r   s    r)   resizez'DemoWindow.makeFontMenu.<locals>.resize;  s      &r   r   r   )r_   r   r   r   r   add_separator
font_sizesstr)r   r   r8   r   r   s   `    r)   rd   zDemoWindow.makeFontMenu2  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   rR   )
help_label	help_filer   s     r)   showz%DemoWindow.makeHelpMenu.<locals>.showE  s    $))Z;r   )r9   rH   rJ   )r_   help_entriesr   r   )r   r   r8   r   r   r   s   `     r)   re   zDemoWindow.makeHelpMenuA  sA    F|%1!J	 *i <:HdK &2 r   c                 `    | j                   r"| j                  j                          d| _         y y NF)ry   r   r   r   s    r)   refreshCanvaszDemoWindow.refreshCanvasJ  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)rv   rS   r   _RUNNING
__import__sysmodulesmoduleopen__file__readrG   deleteinsertrR   rU   r|   r   r}   READYr   )r   r   modnamefcharss        r)   r{   zDemoWindow.loadfileO  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...rP   standard	EVENTLOOPzstopped!zuse mouse/keys or STOPr   )r   ry   rS   r   r   r|   r}   r   r   r   modeRUNNINGr   r   mainEVENTDRIVENDONE
TerminatorrR   rz   )r   results     r)   rr   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   r|   r   r}   r   s    r)   rv   zDemoWindow.clearCanvas{  sE    E""%vx2r   c                     | j                   r8| j                          d| _         | j                  t        t        t        dd       dt
        j                  _        y )NFzSTOPPED!r   )rz   rv   r|   r   r}   rS   r   r   r   s    r)   rt   zDemoWindow.stopIt  sA    ==!DMNN68X%u.',$r   c                 p    dt         j                  _        | j                  j	                          d | _        y r   )rS   r   r   rR   destroyr   s    r)   rW   zDemoWindow._destroy  s'    ',$			r   r   )r  blue)__name__
__module____qualname__r   r   rj   rk   r   r   r   r   r|   rc   rd   re   r   r{   rr   rv   rt   rW    r   r)   r,   r,      s_    IXP8(8
(3
<:3-r   r,   c                  L    t               } | j                  j                          y r   )r,   rR   mainloop)demos    r)   r  r    s    <DIIr   __main__))r   r$   tkinteridlelib.colorizerr   r   idlelib.percolatorr   idlelib.textviewr   rS   
turtledemor   about_turtledemoplatformidlelib.utilr
   pathdirnameabspathr   r&   r   r~   r   r  r	  r  r   r   rq   r   r   r   r   r*   r   objectr,   r  r  r  r   r)   <module>r)     s   Tj  	  : ) &  2<<7*O77??277??845		!
	
R 

*  7
7
  )*FNN+K K\ zF r   