
    dc>                     L   d dl Z d dlZd dlZd dlZd dlZd dlZd dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d                    d eD                       Zd	Zej        d
k    rdndZ G d d          Zd Zedk    r'd dlmZ  eddd           d dlmZ  ee           dS dS )    N)
filedialog)
messagebox)	askstring)idleConf)py_extensions c              #       K   | ]	}d |z   V  
dS )*N ).0exts        /croot/python-split_1694437901252/_h_env_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_placehold_plac/lib/python3.11/idlelib/iomenu.py	<genexpr>r      s&      ::SS::::::    utf-8win32surrogatepasssurrogateescapec                       e Zd Zd Zd Zd Zd Zd ZdZd Z	dZ
dZd Zdd	Zej        Zd
 Zd Zd Zd Zd Zd Zd Zd Zd ZdZdZdedfddfZej        dk    rdndZ d Z!d dZ"d Z#d Z$dS )!	IOBindingc                    || _         |j        | _        | j                            d| j                  | _        | j                            d| j                  | _        | j                            d| j                  | _        | j                            d| j	                  | _
        d| _        | j                            d| j                  | _        d S )N<<open-window-from-file>><<save-window>><<save-window-as-file>><<save-copy-of-window-as-file>>r   <<print-window>>)editwintextbindopen_IOBinding__id_opensave_IOBinding__id_savesave_as_IOBinding__id_saveassave_a_copy_IOBinding__id_savecopyfileencodingprint_window_IOBinding__id_print)selfr   s     r   __init__zIOBinding.__init__   s    L	(CTYOO(949EE9>>*C*.,8 8!Y^^,M,0,<> >#)..);T=NOOr   c                 p   | j                             d| j                   | j                             d| j                   | j                             d| j                   | j                             d| j                   | j                             d| j                   d | _        d | _         d | _        d S )Nr   r   r   r   r   )	r   unbindr!   r#   r%   r'   r*   r   filename_change_hookr+   s    r   closezIOBinding.close%   s    	4dnEEE	*DN;;;	243CDDD	:D<NOOO	+T_===	$(!!!r   c                 4    | j                                         S N)r   	get_savedr0   s    r   r4   zIOBinding.get_saved1   s    |%%'''r   c                 :    | j                             |           d S r3   )r   	set_savedr+   flags     r   r6   zIOBinding.set_saved4   s    t$$$$$r   c                 8    | j                                          d S r3   )r   
reset_undor0   s    r   r:   zIOBinding.reset_undo7   s    !!!!!r   Nc                     || _         d S r3   )r/   )r+   hooks     r   set_filename_change_hookz"IOBinding.set_filename_change_hook<   s    $(!!!r   c                     |r/t           j                            |          rd | _        || _        d S || _        d | _        |                     d           | j        r|                                  d S d S )N   )ospathisdirfilenamedirnamer6   r/   r+   rC   s     r   set_filenamezIOBinding.set_filenameB   s~     	,h// 	, DM#DLLL$DMDLNN1( ,))+++++, ,r   c                    | j         j        }|r|s|                                 }n|}|rj| j         rMt          | j         dd           s7| j        s0|                                 r|                    || j                   n6|                    |           n | j        r| j        	                                 dS |                                 r5| 
                                }|dk    r| j        	                                 dS |s|                                 }n|}|r|                     |           n| j        	                                 dS )Ninterpbreakcancel)r   flistaskopenfilegetattrrC   r4   r    loadfiler   	focus_set	maybesave)r+   eventeditFilerK   rC   replys         r   r    zIOBinding.openM   sl   " 	 "++--! * L )#DL(DAA) M) (() JJx7777JJx((((9 *I'')))7 >> 	NN$$E  	##%%%w 	''))HHH 	"MM(####I!!!wr   c                    	 	 t          j        |          5 }|                                }|j        }|j        }d}d d d            n# 1 swxY w Y   n# t
          t          f$ r | j        j        	                                 t          ddd| j        j                  }t          ||          5 }|                                }|j        }|j        }d}d d d            n# 1 swxY w Y   Y nw xY wnl# t          $ r4}t          j        dt          |          | j        	           Y d }~dS d }~wt
          $ r# t          j        d
d|z  | j        	           Y dS w xY wt          |t                    s,|t          j        dd| j        	           d}t"          j        }| j                            dd           |                     d            || _        || _        | j                            d|           |                                  |                     |           |r|                     d           | j                            dd           | j                            d           |                     |           dS )NFzSpecify file encodingzwThe file's encoding is invalid for Python 3.x.
IDLE will convert it to UTF-8.
What is the current encoding of the file?r   )initialvalueparent)encodingT	I/O ErrorrV   zDecoding ErrorzFile %s
Failed to DecodezMixed Newlinesz:Mixed newlines detected.
The file will be changed on save.1.0endinsert)tokenizer    readrW   newlinesUnicodeDecodeErrorSyntaxErrorr   r   updater   OSErrorr   	showerrorstr
isinstanceshowwarningr@   linesepdeleterF   r(   eol_conventionr\   r:   r6   mark_setyviewupdaterecentfileslist)	r+   rC   fcharsr(   rj   	convertedencerrs	            r   rN   zIOBinding.loadfile{   s:   	%]8,, &FFHHE#$:L%&ZN %I	& & & & & & & & & & & & & & &
 '4 % % %!((***+@ ")<,. . . (S111 %QFFHHE#$:L%&ZN $I	% % % % % % % % % % % % % % %%  	 	 	 c#hhtyIIII55555! 	 	 	 !1#>#I*.)5 5 5 5 55		 .#.. 		( )&'7*M04	; ; ; ; !	ZN	&&&$(,	&&&(### 	" NN5!!!	8U+++	!!!""8,,,ts   A %AA AA AA C4 AC01%C"C0"C&	&C0)C&	*C0-C4 /C00C4 4
E>)D--,EEc                 8   |                                  rdS d| j        pdz  }t          j        d|t          j        | j                  }|r.d}|                     d            |                                  sd}n|d}nd}| j                                         |S )Nyesz&Do you want to save %s before closing?zthis untitled documentzSave On ClosetitlemessagedefaultrV   rJ   no)r4   rC   r   askyesnocancelYESr   r"   rO   )r+   rw   confirmrS   s       r   rP   zIOBinding.maybesave   s    >> 	5:M557+'!$.	$ $ $
  	EIIdOOO>>## ! _EEE	r   c                 &   | j         s|                     |           nZ|                     | j                   r@|                     d           	 | j                                         n# t          $ r Y nw xY w| j                                         dS )NTrI   )	rC   r$   	writefiler6   r   store_file_breaksAttributeErrorr   rO   r+   rQ   s     r   r"   zIOBinding.save   s    } 	LL~~dm,, t$$$L224444%   D	ws   A( (
A54A5c                 b   |                                  }|rj|                     |          rU|                     |           |                     d           	 | j                                         n# t          $ r Y nw xY w| j                                         | 	                    |           dS )Nr?   rI   )
asksavefiler~   rF   r6   r   r   r   r   rO   rm   r+   rQ   rC   s      r   r$   zIOBinding.save_as   s    ##%% 	~~h'' !!(+++q!!!L224444%   D	""8,,,ws   A1 1
A>=A>c                     |                                  }|r|                     |           | j                                         |                     |           dS )NrI   )r   r~   r   rO   rm   r   s      r   r&   zIOBinding.save_a_copy   sZ    ##%% 	%NN8$$$	""8,,,wr   c                    |                                  }|                     |          }	 t          |d          5 }|                    |           |                                 t          j        |                                           d d d            n# 1 swxY w Y   dS # t          $ r4}t          j
        dt          |          | j                   Y d }~dS d }~ww xY w)NwbTrX   rY   F)fixnewlinesencoder    writeflushr@   fsyncfilenorc   r   rd   re   r   )r+   rC   r   ro   rn   msgs         r   r~   zIOBinding.writefile   s   !!D!!		h%% %			$$$% % % % % % % % % % % % % % % 4 	 	 	 c#hh*.)5 5 5 555555	s;   B$ ABB$ BB$ BB$ $
C".)CC"c                    t          | j        d          r4| j                            d| j                            d                    }nT| j                            d          dk    r| j                            dd           | j                            dd          }| j        dk    r|                    d| j                  }|S )zYReturn text with os eols.

        Add prompts if shell else final 
 if missing.
        rH   rZ   zend-1czend-2c
)	hasattrr   get_prompt_textr   indexgetr\   rj   replacer+   r   s     r   r   zIOBinding.fixnewlines   s     4<** 	2<//tyx7P7PQQDDy}}X&&$..	  40009==11D$&&<<d&9::Dr   c                 D   t          |t                    r|S | j        dk    r|                    d          S 	 |                    d          S # t          $ r Y nw xY w	 |                    dd          }t          j        t          j        |          j	                  \  }}|                    |          S # t          $ r}t          |          }Y d }~nd }~wt          $ r d|z  }Y nw xY wt          j        dd|z  | j                   |                    d          S )Nz	utf-8-sigasciir   zInvalid encoding '%s'rX   z%s.
Saving as UTF-8rY   )rf   bytesr(   r   UnicodeEncodeErrorr]   detect_encodingioBytesIOreadlinera   re   r   rd   r   )r+   ro   encodedrq   _rr   faileds          r   r   zIOBinding.encode  sO   eU## 	 L++<<,,,	<<(((! 	 	 	D		3ll7I66G-bj.A.A.JKKFC<<$$$ 	 	 	XXFFFFFF! 	3 	3 	3,s2FFF	3"V+9	 	 	 	 ||K(((s0   A 
AAAB8 8
C+CC+*C+c                    t          j        ddt           j        | j                  }|s| j                                         dS d }|                                 }|r| j        }|r|Yt          j        d          \  }}|}t          j
        |           |                     |          st          j        |           dS t          j        }d}|dk    rt          j        d	d
d          }	|	dz   }	n|dk    rt          j        d	d
d          }	nd}|r|	t!          j        |          z  }	t          j        |	d          }
|
                                                                }|

                                }|rd|z  |z   }|r1dt+          |	          z  |z   }t          j        d|| j                   n!d|z  }t          j        d|| j                   |rt          j        |           dS )NPrintzPrint to Default Printerru   rI   	IDLE_tmp_)prefixTposixmainGeneralzprint-command-posixz 2>&1ntzprint-command-winFrz#Printing failed (exit status 0x%x)
zPrinting command: %s
zPrint statusrY   z-Printing is not enabled for this platform: %s)r   askokcancelOKr   rO   r4   rC   tempfilemkstempr@   r1   r~   unlinknamer   	GetOptionshlexquotepopenr^   stripreprrd   showinfo)r+   rQ   r|   tempfilenamesavedrC   tfdplatformprintPlatformcommandpipeoutputstatusrw   s                 r   r)   zIOBinding.print_window,  s   (4$-	$ $ $
  	I!!!7   	%}H 	("*"2+"F"F"FS,#HHSMMM>>,// 	,'''w7w(	)>@ @G'GG(	:MNNGG!M 	KH 5 55G8GS))DYY[[&&((FZZ\\F )? "() O1DMMAFJ$^VDINNNNEPG	JJJJ 	$Il###wr   zPython filesTEXT)z
Text filesz*.txtr   )z	All filesr
   darwinz.py c                     |                      d          \  }}| j        s%t          j        | j        | j                  | _        | j                            ||          }|S )Nr    )rV   	filetypes
initialdirinitialfile)defaultfilename
opendialogr   Openr   r   showr+   dirbaserC   s       r   rL   zIOBinding.askopenfilei  sg    ((00	T 	J(oTY:>.J J JDO?''3D'IIr   r    c                     | j         r$t          j                            | j                   S | j        r	| j        dfS 	 t          j                    }n# t          $ r d}Y nw xY w|dfS )Nr   )rC   r@   rA   splitrD   getcwdrc   )r+   modepwds      r   r   zIOBinding.defaultfilenameq  sx    = 		7==///\ 	<##ikk   7Ns   A A A c                     |                      d          \  }}| j        s+t          j        | j        | j        | j                  | _        | j                            ||          }|S )Nr"   )rV   r   defaultextensionr   )r   
savedialogr   SaveAsr   r   r   r   r   s       r   r   zIOBinding.asksavefile}  sm    ((00	T 	<(/9"n%)%:< < <DO ?''3D'IIr   c                 V    | j         j        r| j                             |           dS dS )z-Update recent file list on all editor windowsN)r   rK   update_recent_files_listrE   s     r   rm   zIOBinding.updaterecentfileslist  s5    < 	<L11(;;;;;	< 	<r   )NN)r    )%__name__
__module____qualname__r,   r1   r4   r6   r:   r/   r=   rC   rD   rF   r    r@   rh   rj   rN   rP   r"   r$   r&   r~   r   r   r)   r   r   r   r   sysr   r   rL   r   r   rm   r   r   r   r   r      s       

P 
P 
P
) 
) 
)( ( (% % %" " "  ) ) ) HG	, 	, 	,* * * *X ZN9 9 9v  ,           ) ) )>0 0 0d JJ 
/'
I !$ 8 8uub  
 
 
 
  < < < < <r   r   c                    ddl m}m}  ||           }|                    d           t	          t
          |                                                     d          dd                    \  }}|                    d||dz   fz              G d d	          } ||          }|                                 |	                                  ||          }t          |           d S )
Nr   )ToplevelTextzTest IOBinding+r?   z+%d+%d   c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )_io_binding.<locals>.MyEditWinc                 b   || _         d | _        | j                             d| j                   | j                             d| j                   | j                             d| j                   | j                             d| j                   | j                             d| j                   d S )Nz<Control-o>z<Control-p>z<Control-s>z<Alt-s>z<Control-c>)r   rK   r   r    printr"   saveassavecopyr   s     r   r,   z'_io_binding.<locals>.MyEditWin.__init__  s    DIDJINN=$)444INN=$*555INN=$)444INN9dk222INN=$-88888r   c                     dS )Nr   r   r0   s    r   r4   z(_io_binding.<locals>.MyEditWin.get_saved  s    AAr   c                     d S r3   r   r7   s     r   r6   z(_io_binding.<locals>.MyEditWin.set_saved        r   c                     d S r3   r   r0   s    r   r:   z)_io_binding.<locals>.MyEditWin.reset_undo  r   r   c                 :    | j                             d           d S )Nr   r   event_generater   s     r   r    z#_io_binding.<locals>.MyEditWin.open  s    I$$%@AAAAAr   c                 :    | j                             d           d S )Nr   r   r   s     r   r   z$_io_binding.<locals>.MyEditWin.print  s    I$$%788888r   c                 :    | j                             d           d S )Nr   r   r   s     r   r"   z#_io_binding.<locals>.MyEditWin.save  s    I$$%677777r   c                 :    | j                             d           d S )Nr   r   r   s     r   r   z%_io_binding.<locals>.MyEditWin.saveas  s    I$$%>?????r   c                 :    | j                             d           d S )Nr   r   r   s     r   r   z'_io_binding.<locals>.MyEditWin.savecopy  s    I$$%FGGGGGr   N)r   r   r   r,   r4   r6   r:   r    r   r"   r   r   r   r   r   	MyEditWinr     s        	9 	9 	9 	&%%'''"""	B 	B 	B	9 	9 	9	8 	8 	8	@ 	@ 	@	H 	H 	H 	H 	Hr   r   )tkinterr   r   rv   mapintgeometryr   packrO   r   )	rV   r   r   rootxyr   r   r   s	            r   _io_bindingr     s   &&&&&&&&8FDJJ   sFOO%%++C00455DAqMM(aS\)***H H H H H H H H. 4::DIIKKKNNiooGgr   __main__)r   zidlelib.idle_test.test_iomenu   F)	verbosityexit)run)r   r@   r   r   r   r]   r   r   r   tkinter.simpledialogr   idlelib.configr   idlelib.utilr   joinrW   r   errorsr   r   r   unittestr   idlelib.idle_test.htestr  r   r   r   <module>r     sx   				 				  



               * * * * * * # # # # # # & & & & & &::M:::::LG339Jv< v< v< v< v< v< v< v<p" " "H zD	(AEBBBB++++++C r   