U .‘ct=ã@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-8Zwin32Ú 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/opt/alt/python38/lib64/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 r r) rZunbindrrrrrrÚfilename_change_hook©rrrrÚclose(szIOBinding.closecCs |j ¡S©N)rÚ get_savedr"rrrr%4szIOBinding.get_savedcCs|j |¡dSr$)rÚ set_saved©rÚflagrrrr&7szIOBinding.set_savedcCs|j ¡dSr$)rÚ reset_undor"rrrr):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!©rr0rrrÚ 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Úgetattrr0r%rÚloadfilerÚ focus_setÚ maybesave)rÚeventZeditFiler7r0ÚreplyrrrrPs<  ÿþý      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Úreadr@ÚnewlinesÚUnicodeDecodeErrorÚ SyntaxErrorrrÚupdaterÚOSErrorrÚ showerrorÚstrÚ isinstanceÚ showwarningr-ÚlinesepÚdeleter3rÚeol_conventionrEr)r&Zmark_setZyviewÚupdaterecentfileslist) rr0ÚfÚcharsrrSZ convertedÚencÚerrrrrr:~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?r6Zno)r%r0rZaskyesnocancelZYESrrr;)rr[Úconfirmr>rrrr<¹s*ÿü  zIOBinding.maybesavecCsZ|js| |¡n:| |j¡rL| d¡z|j ¡Wntk rJYnX|j ¡dS)NTr5) r0rÚ writefiler&rÚstore_file_breaksÚAttributeErrorrr;©rr=rrrrÏs    zIOBinding.savecCsf| ¡}|rN| |¡rN| |¡| d¡z|j ¡Wntk rLYnX|j ¡|  |¡dS)Nr,r5) Ú asksavefiler^r3r&rr_r`rr;rT©rr=r0rrrrÜs     zIOBinding.save_ascCs.| ¡}|r| |¡|j ¡| |¡dS)Nr5)rbr^rr;rTrcrrrrê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 PrinterrYr5Z IDLE_tmp_)ÚprefixTÚposixÚmainZGeneralzprint-command-posixz 2>&1Úntzprint-command-winFÚrz#Printing failed (exit status 0x%x) zPrinting command: %s z Print statusrBz-Printing is not enabled for this platform: %s)rZ askokcancelZOKrr;r%r0ÚtempfileZmkstempr-r#r^ÚunlinkÚnamerZ GetOptionÚshlexZquoteÚpopenrGÚstripÚreprrMZshowinfo)rr=r]Z tempfilenameZsavedr0ZtfdÚplatformZ printPlatformZcommandÚpipeÚoutputZstatusr[rrrr)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Úbaser0rrrr8fsÿzIOBinding.askopenfilercCsV|jrtj |j¡S|jr$|jdfSz t ¡}Wntk rHd}YnX|dfSdS)Nr‹)r0r-r.Úsplitr1ÚgetcwdrL)rÚmodeÚpwdrrrrŽns   zIOBinding.defaultfilenamecCs@| d¡\}}|js,tj|j|j|jd|_|jj||d}|S)Nr)r?rŒÚdefaultextensionr)rŽÚ savedialogrZSaveAsrrŒr˜rr‘rrrrbzsýzIOBinding.asksavefilecCs|jjr|j |¡dS)z-Update recent file list on all editor windowsN)rr7Zupdate_recent_files_listr2rrrrT„szIOBinding.updaterecentfileslist)NN)r)$Ú__name__Ú __module__Ú __qualname__r r#r%r&r)r!r+r0r1r3rr-rQrSr:r<rrrr^rerfrrr™rŒÚsysr…r˜r8rŽrbrTrrrrr 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 )rr7rrÚprintrÚsaveasÚsavecopyrprrrr ‘sz'_io_binding..MyEditWin.__init__cSsdS)Nrrr"rrrr%™óz(_io_binding..MyEditWin.get_savedcSsdSr$rr'rrrr&šr¥z(_io_binding..MyEditWin.set_savedcSsdSr$rr"rrrr)›r¥z)_io_binding..MyEditWin.reset_undocSs|j d¡dS)Nr ©rZevent_generaterarrrrœsz#_io_binding..MyEditWin.opencSs|j d¡dS)Nrr¦rarrrr¢žsz$_io_binding..MyEditWin.printcSs|j d¡dS)Nr r¦rarrrr sz#_io_binding..MyEditWin.savecSs|j d¡dS)Nr r¦rarrrr£¢sz%_io_binding..MyEditWin.saveascSs|j d¡dS)Nr r¦rarrrr¤¤sz'_io_binding..MyEditWin.savecopyN) ršr›rœr r%r&r)rr¢rr£r¤rrrrÚ MyEditWinsr§) ÚtkinterržrŸrZÚmapÚintZgeometryr”Zpackr;r ) r?ržrŸÚrootÚxÚyr§rrrrrÚ _io_binding‰s  r®Ú__main__)r{zidlelib.idle_test.test_iomenuéF)Ú verbosityÚexit)Úrun)rur-rrr~rFr¨rrZtkinter.simpledialogrZidlelibZidlelib.configrr@r…Úerrorsr r®ršZunittestr{Zidlelib.idle_test.htestr³rrrrÚs.     t$