o =?hc>@sddlZddlZddlZddlZddlZddlZddlmZddlmZddl m Z ddl m Z ddl mZddd eDZd Zejd krId nd ZGdddZddZedkrsddlmZeddddddlmZeedSdS)N) filedialog) messagebox) askstring)idleConf) py_extensions ccs|]}d|VqdS)*N).0Zextr r 5/opt/alt/python310/lib64/python3.10/idlelib/iomenu.py sr utf-8Zwin32 surrogatepasssurrogateescapec@seZdZddZddZddZddZd d Zd Zd d Z d Z d Z ddZ d4ddZ ejZddZddZddZddZddZddZddZd d!Zd"d#Zd Zd Zd$ed%fd&d'fZejd(kred)nd*Z d+d,Z!d5d.d/Z"d0d1Z#d2d3Z$d S)6 IOBindingcCsr||_|j|_|jd|j|_|jd|j|_|jd|j|_|jd|j |_ d|_ |jd|j |_ dS)N<><><><>r <>)editwintextbindopen_IOBinding__id_opensave_IOBinding__id_savesave_as_IOBinding__id_saveas save_a_copy_IOBinding__id_savecopy fileencoding print_window_IOBinding__id_print)selfrr r r __init__szIOBinding.__init__cCsf|jd|j|jd|j|jd|j|jd|j|jd|jd|_d|_d|_dS)Nrrrrr) rZunbindrrrr r#rfilename_change_hookr$r r r close%s zIOBinding.closecCs |jSN)r get_savedr'r r r r*1 zIOBinding.get_savedcCs|j|dSr))r set_savedr$flagr r r r,4zIOBinding.set_savedcCs|jdSr))r reset_undor'r r r r07szIOBinding.reset_undoNcCs ||_dSr))r&)r$hookr r r set_filename_change_hook<r+z"IOBinding.set_filename_change_hookcCsL|rtj|rd|_||_dS||_d|_|d|jr$|dSdS)N)ospathisdirfilenamedirnamer,r&r$r7r r r set_filenameBs   zIOBinding.set_filenamecCs|jj}|r<|s |}n|}|r2|jr+t|jdds+|js+|r+|||jdS||dS|jr:|j dS|rO| }|dkrO|j dS|sV|}n|}|ra||dS|j dS)Ninterpbreakcancel) rflist askopenfilegetattrr7r*rloadfiler focus_set maybesave)r$eventZeditFiler>r7replyr r r rMsB        zIOBinding.openc Cszcz#t|}|}|j}|j}d}Wdn1swYWn=ttfya|jj t ddd|jjd}t||d}|}|j}|j}d}Wdn1sZwYYnwWn2t y}zt j dt||jd WYd}~dSd}~wtyt j d d ||jd YdSwt|ts|durt jd d |jd d}tj}|jdd|d||_||_|jd|||||r|d|jdd|jd||dS)NFzSpecify 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 )Z initialvalueparent)encodingT I/O ErrorrFzDecoding ErrorzFile %s Failed to DecodezMixed Newlinesz:Mixed newlines detected. The file will be changed on save.1.0endinsert)tokenizerreadrGnewlinesUnicodeDecodeError SyntaxErrorrrupdaterOSErrorr showerrorstr isinstance showwarningr4linesepdeleter:r!eol_conventionrLr0r,Zmark_setZyviewupdaterecentfileslist) r$r7fcharsr!rZZ convertedencerrr r r rA{st         zIOBinding.loadfilecCsp|rdSd|jp d}tjd|tj|jd}|r(d}|d|s'd}n |dur/d}nd}|j|S)NZyesz&Do you want to save %s before closing?zthis untitled documentz Save On ClosetitlemessagedefaultrFr=Zno)r*r7rZaskyesnocancelZYESrrrB)r$rbconfirmrEr r r rCs,  zIOBinding.maybesavecCsX|js ||n||jr%|dz|jWn ty$Ynw|jdS)NTr<) r7r writefiler,rstore_file_breaksAttributeErrorrrBr$rDr r r rs     zIOBinding.savecCsd|}|r&||r&|||dz|jWn ty%Ynw|j| |dS)Nr3r<) asksavefilerer:r,rrfrgrrBr[r$rDr7r r r rs      zIOBinding.save_ascCs.|}|r |||j||dS)Nr<)rirerrBr[rjr r r rs    zIOBinding.save_a_copyc Cs|}||}z*t|d}|||t|WdWdS1s,wYWdStyQ}zt j dt ||j dWYd}~dSd}~ww)NwbTrHrIF) fixnewlinesencoderwriteflushr4fsyncfilenorSrrTrUr)r$r7rr]r\msgr r r res$     zIOBinding.writefilecCslt|jdr|jd|jd}n|jddkr!|jdd|jdd}|jdkr4|d|j}|S)zYReturn text with os eols. Add prompts if shell else final if missing. r;rJzend-1czend-2c ) hasattrrZget_prompt_textrindexgetrLrZreplacer$rr r r rls  zIOBinding.fixnewlinesc Cst|tr|S|jdkr|dSz|dWSty Ynwz|dd}tt|j \}}||WSt yN}z t |}WYd}~nd}~wtyZd|}Ynwt j dd||jd|dS)Nz utf-8-sigasciirwzInvalid encoding '%s'rHz%s. Saving as UTF-8rI)rVbytesr!rmUnicodeEncodeErrorrMdetect_encodingioBytesIOreadlinerQrUrrTr)r$r]Zencodedr^_r_Zfailedr r r rm s2          zIOBinding.encodecCs\tjddtj|jd}|s|jdSd}|}|r|j}|r%|dur@tjdd\}}|}t || |s@t |dSt j }d}|dkrUtd d d } | d } n|d kratd d d} nd}|r| t|} t | d} | } | } | rd| | } | rdt| | } tjd| |jdn d|} tjd| |jd|rt |dS)NZPrintzPrint to Default Printerr`r<Z IDLE_tmp_)prefixTposixmainZGeneralzprint-command-posixz 2>&1ntzprint-command-winFrz#Printing failed (exit status 0x%x) zPrinting command: %s z Print statusrIz-Printing is not enabled for this platform: %s)rZ askokcancelZOKrrBr*r7tempfileZmkstempr4r(reunlinknamerZ GetOptionshlexZquotepopenrNstripreprrTZshowinfo)r$rDrdZ tempfilenameZsavedr7ZtfdplatformZ printPlatformZcommandpipeoutputZstatusrbr r r r",sd         zIOBinding.print_windowz Python filesTEXT)z Text filesz*.txtr)z All filesrdarwinz.pycCs<|d\}}|jstj|j|jd|_|jj||d}|S)Nr)rF filetypesZ initialdirZ initialfile)defaultfilename opendialogrZOpenrrshowr$dirbaser7r r r r?iszIOBinding.askopenfilercCsT|jr tj|jS|jr|jdfSz t}W|dfSty)d}Y|dfSw)Nr)r7r4r5splitr8getcwdrS)r$modepwdr r r rqs   zIOBinding.defaultfilenamecCs@|d\}}|jstj|j|j|jd|_|jj||d}|S)Nr)rFrdefaultextensionr)r savedialogrZSaveAsrrrrrr r r ri}szIOBinding.asksavefilecCs|jjr |j|dSdS)z-Update recent file list on all editor windowsN)rr>Zupdate_recent_files_listr9r r r r[szIOBinding.updaterecentfileslist)NN)r)%__name__ __module__ __qualname__r%r(r*r,r0r&r2r7r8r:rr4rXrZrArCrrrrerlrmr"rrrrsysrrr?rrir[r r r r rsB   ,; 2  rc Csddlm}m}||}|dtt|ddd\}}|d||dfGdd d }||}|| ||}t |dS) Nr)ToplevelTextzTest IOBinding+r3z+%d+%dc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)z_io_binding..MyEditWincSs`||_d|_|jd|j|jd|j|jd|j|jd|j|jd|jdS)Nz z z zz )rr>rrprintrsaveassavecopyrxr r r r%sz'_io_binding..MyEditWin.__init__cSsdS)Nrr r'r r r r*z(_io_binding..MyEditWin.get_savedcSdSr)r r-r r r r,rz(_io_binding..MyEditWin.set_savedcSrr)r r'r r r r0rz)_io_binding..MyEditWin.reset_undocS|jddS)NrrZevent_generaterhr r r rr/z#_io_binding..MyEditWin.opencSr)Nrrrhr r r rr/z$_io_binding..MyEditWin.printcSr)Nrrrhr r r rr/z#_io_binding..MyEditWin.savecSr)Nrrrhr r r rr/z%_io_binding..MyEditWin.saveascSr)Nrrrhr r r rr/z'_io_binding..MyEditWin.savecopyN) rrrr%r*r,r0rrrrrr r r r MyEditWins r) tkinterrrramapintZgeometryrZpackrBr) rFrrrootxyrrrr r r _io_bindings   r__main__)rzidlelib.idle_test.test_iomenuF) verbosityexit)run)r}r4rrrrMrrrZtkinter.simpledialogrZidlelib.configrZ idlelib.utilrjoinrGrerrorsrrrZunittestrZidlelib.idle_test.htestrr r r r s0     z$