a  zet=@sddlZddlZddlZddlZddlZddlZddlmZddlmZddl m Z ddl Z ddl m Z dZejdkr|dZnd ZGd d d Zd d ZedkrddlmZeddddddlmZeedS)N) filedialog) messagebox) askstring)idleConfutf-8win32 surrogatepasssurrogateescapec@seZdZddZddZddZddZd d Zd Zd d Z d Z d Z ddZ d1ddZ ejZddZddZddZddZddZddZddZd d!Zd"d#Zd Zd Zd$Zejd%krd&nd'Zd(d)Z d2d+d,Z!d-d.Z"d/d0Z#d S)3 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)selfrrB/opt/bitninja-python-dojo/embedded/lib/python3.9/idlelib/iomenu.py__init__szIOBinding.__init__cCsf|jd|j|jd|j|jd|j|jd|j|jd|jd|_d|_d|_dS)Nr r r rr) rZunbindrrrrrrfilename_change_hookrrrr close(szIOBinding.closecCs |jSN)r get_savedr#rrr r&4szIOBinding.get_savedcCs|j|dSr%)r set_savedrflagrrr r'7szIOBinding.set_savedcCs|jdSr%)r reset_undor#rrr r*:szIOBinding.reset_undoNcCs ||_dSr%)r")rhookrrr set_filename_change_hook?sz"IOBinding.set_filename_change_hookcCsF|rtj|rd|_||_n$||_d|_|d|jrB|dS)N)ospathisdirfilenamedirnamer'r"rr1rrr set_filenameEs zIOBinding.set_filenamecCs|jj}|rt|s|}n|}|r`|jrTt|jddsT|jsT|rT|||jqp||n|jrp|j dS|r| }|dkr|j dS|s|}n|}|r||n |j dS)Ninterpbreakcancel) rflist askopenfilegetattrr1r&rloadfiler focus_set maybesave)reventZeditFiler8r1replyrrr rPs<        zIOBinding.openc CszzFt|(}|}|j}|j}d}Wdn1s<0YWnzttfy|jj t ddd|jjd}t||d(}|}|j}|j}d}Wdn1s0YYn0Wnht y}z$t j dt||jd WYd}~dSd}~0ty.t j d d ||jd YdS0t|tsb|dur\t 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 Errorr@zDecoding ErrorzFile %s Failed to DecodezMixed Newlinesz:Mixed newlines detected. The file will be changed on save.1.0endinsert)tokenizerreadrAnewlinesUnicodeDecodeError SyntaxErrorrrupdaterOSErrorr showerrorstr isinstance showwarningr.linesepdeleter4reol_conventionrFr*r'Zmark_setZyviewupdaterecentfileslist) rr1fcharsrrTZ convertedencerrrrr r;~sd & ,       zIOBinding.loadfilecCsp|r dSd|jpd}tjd|tj|jd}|rPd}|d|sbd}n|dur^d}nd}|j|S)NZyesz&Do you want to save %s before closing?zthis untitled documentz Save On Closetitlemessagedefaultr@r7no)r&r1rZaskyesnocancelZYESrrr<)rr\confirmr?rrr r=s*  zIOBinding.maybesavecCsX|js||n8||jrJ|dz|jWntyHYn0|jdS)NTr6) r1r writefiler'rstore_file_breaksAttributeErrorrr<rr>rrr rs     zIOBinding.savecCsd|}|rL||rL|||dz|jWntyJYn0|j| |dS)Nr-r6) asksavefiler`r4r'rrarbrr<rUrr>r1rrr rs      zIOBinding.save_ascCs.|}|r|||j||dS)Nr6)rdr`rr<rUrerrr rs    zIOBinding.save_a_copyc Cs|}||}zPt|d0}|||t|Wdn1sT0YWdSty}z$t j dt ||j dWYd}~dSd}~00dS)NwbTrBrCF) fixnewlinesencoderwriteflushr.fsyncfilenorMrrNrOr)rr1rrWrVmsgrrr r`s   , zIOBinding.writefilecCsT|jddkr*t|jds*|jdd|jdd}|jdkrP|d|j}|S)z/Return text with final if needed and os eols.zend-2c r5zend-1crD)rgethasattrrrFrTreplacerrrrr rgs  zIOBinding.fixnewlinesc Cst|tr|S|jdkr"|dSz |dWSty@Yn0z.|dd}tt|j \}}||WSt y}zt |}WYd}~n"d}~0tyd|}Yn0t j dd||jd|dS)Nz utf-8-sigasciirqzInvalid encoding '%s'rBz%s. Saving as UTF-8rC)rPbytesrrhUnicodeEncodeErrorrGdetect_encodingioBytesIOreadlinerKrOrrNr)rrWencodedrX_rYZfailedrrr rh s,        zIOBinding.encodecCsdtjddtj|jd}|s(|jdSd}|}|r>|j}|rJ|durtjdd\}}|}t || |st |dSt j }d}|dkrtd d d } | d } n|d krtd d d} nd}|r6| t|} t | d} | } | } | r d| | } | rPdt| | } tjd| |jdnd|} tjd| |jd|r`t |dS)NZPrintzPrint to Default PrinterrZr6Z IDLE_tmp_)prefixTposixmainZGeneralzprint-command-posixz 2>&1ntzprint-command-winFrz#Printing failed (exit status 0x%x) zPrinting command: %s z Print statusrCz-Printing is not enabled for this platform: %s)rZ askokcancelZOKrr<r&r1tempfilemkstempr.r$r`unlinknamerZ GetOptionshlexquotepopenrHstripreprrNZshowinfo)rr>r_Z tempfilenameZsavedr1ZtfdplatformZ printPlatformZcommandpipeoutputstatusr\rrr r)sb         zIOBinding.print_window))z Python filesz *.py *.pywTEXT)z Text filesz*.txtr)z All files*darwinz.pycCs<|d\}}|js(tj|j|jd|_|jj||d}|S)Nr)r@ filetypesZ initialdirZ initialfile)defaultfilename opendialogrZOpenrrshowrdirbaser1rrr r9fszIOBinding.askopenfilercCsT|jrtj|jS|jr$|jdfSz t}WntyFd}Yn0|dfSdS)Nr)r1r.r/splitr2getcwdrM)rmodepwdrrr rns    zIOBinding.defaultfilenamecCs@|d\}}|js,tj|j|j|jd|_|jj||d}|S)Nr)r@rdefaultextensionr)r savedialogrZSaveAsrrrrrrrr rdzszIOBinding.asksavefilecCs|jjr|j|dS)z-Update recent file list on all editor windowsN)rr8Zupdate_recent_files_listr3rrr rUszIOBinding.updaterecentfileslist)NN)r)$__name__ __module__ __qualname__r!r$r&r'r*r"r,r1r2r4rr.rRrTr;r=rrrr`rgrhrrrrsysrrr9rrdrUrrrr r s:   ,;  2  r c Csddlm}m}||}|dtt|ddd\}}|d||dfGdd d }||}|| ||}t |dS) Nr)ToplevelTextzTest IOBinding+r-z+%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 )rr8rrprintrsaveassavecopyrrrrr r!sz'_io_binding..MyEditWin.__init__cSsdS)Nrrr#rrr r&z(_io_binding..MyEditWin.get_savedcSsdSr%rr(rrr r'rz(_io_binding..MyEditWin.set_savedcSsdSr%rr#rrr r*rz)_io_binding..MyEditWin.reset_undocSs|jddS)Nr rZevent_generatercrrr rsz#_io_binding..MyEditWin.opencSs|jddS)Nrrrcrrr rsz$_io_binding..MyEditWin.printcSs|jddS)Nr rrcrrr rsz#_io_binding..MyEditWin.savecSs|jddS)Nr rrcrrr rsz%_io_binding..MyEditWin.saveascSs|jddS)Nrrrcrrr rsz'_io_binding..MyEditWin.savecopyN) rrrr!r&r'r*rrrrrrrrr MyEditWinsr) tkinterrrr[mapintZgeometryrpackr<r ) r@rrrootxyrrrrrr _io_bindings  r__main__)r~zidlelib.idle_test.test_iomenuF) verbosityexit)run)rwr.rrrrGrrrZtkinter.simpledialogrZidlelibZidlelib.configrrArerrorsr rrZunittestr~Zidlelib.idle_test.htestrrrrr s.     t$