U Å:âet=ã@sÐddlZddlZddlZddlZddlZddlZddlmZddlmZddl m Z ddl Z ddl m Z dZejdkr|dZnd ZGd d „d ƒZd d „ZedkrÌddlmZeddddddlmZeeƒdS)éN)Ú filedialog)Ú messagebox)Ú askstring)ÚidleConfúutf-8Úwin32Ú surrogatepassÚsurrogateescapec@sèeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd Zd d „Z d Z d Z dd„Z d1dd„Z ejZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd Zd Zd$Zejd%kr¾d&nd'Zd(d)„Z d2d+d,„Z!d-d.„Z"d/d0„Z#d S)3Ú IOBindingcCsr||_|j|_|j d|j¡|_|j d|j¡|_|j d|j¡|_|j d|j ¡|_ d|_ |j d|j ¡|_ dS)Nú<>ú<>ú<>ú<>rú<>)Ú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©rú3/usr/local/python38/lib/python3.8/idlelib/iomenu.pyÚ__init__sÿÿzIOBinding.__init__cCsf|j d|j¡|j d|j¡|j d|j¡|j d|j¡|j d|j¡d|_d|_d|_dS)Nr r r rr) rZunbindrrrrrrÚfilename_change_hook©rrrr Úclose(szIOBinding.closecCs |j ¡S©N)rÚ get_savedr#rrr r&4szIOBinding.get_savedcCs|j |¡dSr%)rÚ set_saved©rÚflagrrr r'7szIOBinding.set_savedcCs|j ¡dSr%)rÚ reset_undor#rrr r*:szIOBinding.reset_undoNcCs ||_dSr%)r")rÚhookrrr Úset_filename_change_hook?sz"IOBinding.set_filename_change_hookcCsF|rtj |¡rd|_||_n$||_d|_| d¡|jrB| ¡dS)Né)ÚosÚpathÚisdirÚfilenameÚdirnamer'r"©rr1rrr Ú set_filenameEs zIOBinding.set_filenamecCsÊ|jj}|rt|s| ¡}n|}|r`|jrTt|jddƒsT|jsT| ¡rT| ||j¡qp| |¡n|jrp|j  ¡dS| ¡rš|  ¡}|dkrš|j  ¡dS|s¨| ¡}n|}|r¼| |¡n |j  ¡dS)NÚinterpÚbreakÚcancel) rÚflistÚ askopenfileÚgetattrr1r&rÚloadfilerÚ focus_setÚ maybesave)rÚeventZeditFiler8r1Úreplyrrr rPs<  ÿþý      zIOBinding.openc Csºz z2t |¡}| ¡}|j}|j}d}W5QRXWnhttfk rœ|jj  ¡t ddd|jjd}t||d}| ¡}|j}|j}d}W5QRXYnXWnjt k rÞ}z t j dt|ƒ|jd WY¢dSd}~XYn.tk r t j d d ||jd YdSXt|tƒs>|dk r8t jd d |jd d}tj}|j dd¡| d¡||_||_|j d|¡| ¡| |¡|r’| d¡|j dd¡|j d¡| |¡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 initialvalueÚparent)ÚencodingTú I/O Error©r@zDecoding ErrorzFile %s Failed to DecodezMixed Newlinesz:Mixed newlines detected. The file will be changed on save.ú1.0ÚendÚinsert)ÚtokenizerÚreadrAÚnewlinesÚUnicodeDecodeErrorÚ SyntaxErrorrrÚupdaterÚOSErrorrÚ showerrorÚstrÚ isinstanceÚ showwarningr.ÚlinesepÚdeleter4rÚeol_conventionrFr*r'Zmark_setZyviewÚupdaterecentfileslist) rr1ÚfÚcharsrrTZ convertedÚencÚerrrrr r;~sd  úþ  ý     zIOBinding.loadfilecCsp| ¡r dSd|jpd}tjd|tj|jd}|rPd}| d¡| ¡sbd}n|dkr^d}nd}|j ¡|S)NZyesz&Do you want to save %s before closing?zthis untitled documentz Save On Close©ÚtitleÚmessageÚdefaultr@r7Úno)r&r1rZaskyesnocancelZYESrrr<)rr\Úconfirmr?rrr r=¹s*ÿü  zIOBinding.maybesavecCsZ|js| |¡n:| |j¡rL| d¡z|j ¡Wntk rJYnX|j ¡dS)NTr6) r1rÚ writefiler'rÚstore_file_breaksÚAttributeErrorrr<©rr>rrr rÏs    zIOBinding.savecCsf| ¡}|rN| |¡rN| |¡| d¡z|j ¡Wntk rLYnX|j ¡|  |¡dS)Nr-r6) Ú asksavefiler`r4r'rrarbrr<rU©rr>r1rrr rÜs     zIOBinding.save_ascCs.| ¡}|r| |¡|j ¡| |¡dS)Nr6)rdr`rr<rUrerrr rês    zIOBinding.save_a_copyc Cs’| ¡}| |¡}z|j}|rJ|dkr€tjdd\}}|}t   |¡|  |¡s€t   |¡dSt j }d}|dkrªt d d d ¡} | d } n|d krÂt d d d¡} nd}|r6| t |¡} t  | d¡} |  ¡ ¡} |   ¡} | r d| | } | rPdt| ƒ| } tjd| |jdnd|} tjd| |jd|r`t   |¡dS)NZPrintzPrint to Default PrinterrZr6Z IDLE_tmp_)ÚprefixTÚposixÚmainZGeneralzprint-command-posixz 2>&1Úntzprint-command-winFÚrz#Printing failed (exit status 0x%x) zPrinting command: %s z Print statusrCz-Printing is not enabled for this platform: %s)rZ askokcancelZOKrr<r&r1ÚtempfileÚmkstempr.r$r`ÚunlinkÚnamerZ GetOptionÚshlexÚquoteÚpopenrHÚstripÚreprrNZshowinfo)rr>r_Z tempfilenameZsavedr1ZtfdÚplatformZ printPlatformZcommandÚpipeÚoutputÚstatusr\rrr r)sbü     ÿ   ÿÿ zIOBinding.print_window))z Python filesz *.py *.pywÚTEXT)z Text filesz*.txtrŽ)z All filesÚ*Údarwinz.pyÚcCs<| d¡\}}|js(tj|j|jd|_|jj||d}|S)Nr)r@Ú filetypes©Z initialdirZ initialfile)ÚdefaultfilenameÚ opendialogrZOpenrr’Úshow©rÚdirÚbaser1rrr r9fsÿzIOBinding.askopenfilercCsV|jrtj |j¡S|jr$|jdfSz t ¡}Wntk rHd}YnX|dfSdS)Nr‘)r1r.r/Úsplitr2ÚgetcwdrM)rÚmodeÚpwdrrr r”ns   zIOBinding.defaultfilenamecCs@| d¡\}}|js,tj|j|j|jd|_|jj||d}|S)Nr)r@r’Údefaultextensionr“)r”Ú savedialogrZSaveAsrr’ržr–r—rrr rdzsýzIOBinding.asksavefilecCs|jjr|j |¡dS)z-Update recent file list on all editor windowsN)rr8Zupdate_recent_files_listr3rrr rU„szIOBinding.updaterecentfileslist)NN)r)$Ú__name__Ú __module__Ú __qualname__r!r$r&r'r*r"r,r1r2r4rr.rRrTr;r=rrrr`rgrhrr•rŸr’ÚsysrŠržr9r”rdrUrrrr r s:   ,;  2  r c Cs’ddlm}m}||ƒ}| d¡tt| ¡ d¡dd…ƒ\}}| d||df¡Gdd „d ƒ}||ƒ}| ¡|  ¡||ƒ}t |ƒdS) Nr)ÚToplevelÚTextzTest IOBindingú+r-z+%d+%dé¯c@sTeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd d „Zd d„Z dd„Z dd„Z dS)z_io_binding..MyEditWincSs`||_d|_|j d|j¡|j d|j¡|j d|j¡|j d|j¡|j d|j¡dS)Nz z z zz )rr8rrÚprintrÚsaveasÚsavecopyrrrrr r!‘sz'_io_binding..MyEditWin.__init__cSsdS)Nrrr#rrr r&™óz(_io_binding..MyEditWin.get_savedcSsdSr%rr(rrr r'šr«z(_io_binding..MyEditWin.set_savedcSsdSr%rr#rrr r*›r«z)_io_binding..MyEditWin.reset_undocSs|j d¡dS)Nr ©rZevent_generatercrrr rœsz#_io_binding..MyEditWin.opencSs|j d¡dS)Nrr¬rcrrr r¨žsz$_io_binding..MyEditWin.printcSs|j d¡dS)Nr r¬rcrrr r sz#_io_binding..MyEditWin.savecSs|j d¡dS)Nr r¬rcrrr r©¢sz%_io_binding..MyEditWin.saveascSs|j d¡dS)Nrr¬rcrrr rª¤sz'_io_binding..MyEditWin.savecopyN) r r¡r¢r!r&r'r*rr¨rr©rªrrrr Ú MyEditWinsr­) Útkinterr¤r¥r[ÚmapÚintZgeometryršÚpackr<r ) r@r¤r¥ÚrootÚxÚyr­rrrrr Ú _io_binding‰s  rµÚ__main__)r~zidlelib.idle_test.test_iomenuéF)Ú verbosityÚexit)Úrun)rwr.r…r£rrGr®rrZtkinter.simpledialogrZidlelibZidlelib.configrrArŠÚerrorsr rµr Zunittestr~Zidlelib.idle_test.htestrºrrrr Ús.     t$