a XC?hØ=ã@sðddlZddlZddlZddlZddlZddlZddlmZddlmZddl m Z ddl Z ddl m Z ddlmZd dd „eDƒ¡Zd Zejd krœd Znd ZGdd„dƒZdd„ZedkrìddlmZeddddddlmZeeƒdS)éN)Ú filedialog)Ú messagebox)Ú askstring)ÚidleConf)Ú py_extensionsú ccs|]}d|VqdS)Ú*N©)Ú.0Zextr r ú3/opt/alt/python39/lib64/python3.9/idlelib/iomenu.pyÚ ór úutf-8Zwin32Ú surrogatepassÚsurrogateescapec@sôeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd Zd d „Z d Z d Z dd„Z d4dd„Z ejZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zd d!„Zd"d#„Zd Zd Zd$ed%fd&d'fZejd(krÊd)nd*Z d+d,„Z!d5d.d/„Z"d0d1„Z#d2d3„Z$d S)6Ú 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)Úselfrr r r Ú__init__sÿÿzIOBinding.__init__cCsf|j d|j¡|j d|j¡|j d|j¡|j d|j¡|j d|j¡d|_d|_d|_dS)Nrrrrr) rZunbindrrrr!r$rÚfilename_change_hook©r%r r r Úclose+szIOBinding.closecCs |j ¡S©N)rÚ get_savedr(r r r r+7szIOBinding.get_savedcCs|j |¡dSr*)rÚ set_saved©r%Úflagr r r r,:szIOBinding.set_savedcCs|j ¡dSr*)rÚ reset_undor(r r r r/=szIOBinding.reset_undoNcCs ||_dSr*)r')r%Úhookr r r Úset_filename_change_hookBsz"IOBinding.set_filename_change_hookcCsF|rtj |¡rd|_||_n$||_d|_| d¡|jrB| ¡dS)Né)ÚosÚpathÚisdirÚfilenameÚdirnamer,r'©r%r6r r r Ú set_filenameHs 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Úgetattrr6r+rÚloadfilerÚ focus_setÚ maybesave)r%ÚeventZeditFiler=r6Úreplyr r r rSs<  ÿþý      zIOBinding.openc CsÞzÆzFt |¡(}| ¡}|j}|j}d}Wdƒn1s<0YWnzttfyÂ|jj  ¡t ddd|jjd}t||d(}| ¡}|j}|j}d}Wdƒn1s´0YYn0Wnht y}z$t j dt|ƒ|jd WYd}~dSd}~0ty.t j d d ||jd YdS0t|tƒsb|dur\t 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©rEzDecoding ErrorzFile %s Failed to DecodezMixed Newlinesz:Mixed newlines detected. The file will be changed on save.ú1.0ÚendÚinsert)ÚtokenizerÚreadrFÚnewlinesÚUnicodeDecodeErrorÚ SyntaxErrorrrÚupdaterÚOSErrorrÚ showerrorÚstrÚ isinstanceÚ showwarningr3ÚlinesepÚdeleter9r"Úeol_conventionrKr/r,Zmark_setZyviewÚupdaterecentfileslist) r%r6ÚfÚcharsr"rYZ convertedÚencÚerrr r r 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 Close©ÚtitleÚmessageÚdefaultrEr<Zno)r+r6rZaskyesnocancelZYESrrrA)r%raÚconfirmrDr r r rB¼s*ÿü  zIOBinding.maybesavecCsX|js| |¡n8| |j¡rJ| d¡z|j ¡WntyHYn0|j ¡dS)NTr;) r6rÚ writefiler,rÚstore_file_breaksÚAttributeErrorrrA©r%rCr r r rÒs     zIOBinding.savecCsd| ¡}|rL| |¡rL| |¡| d¡z|j ¡WntyJYn0|j ¡|  |¡dS)Nr2r;) Ú asksavefilerdr9r,rrerfrrArZ©r%rCr6r r r rßs      zIOBinding.save_ascCs.| ¡}|r| |¡|j ¡| |¡dS)Nr;)rhrdrrArZrir r r r ís    zIOBinding.save_a_copyc Cs¤| ¡}| |¡}zPt|dƒ0}| |¡| ¡t | ¡¡Wdƒn1sT0YWdStyž}z$t j dt |ƒ|j dWYd}~dSd}~00dS)NÚwbTrGrHF) Ú fixnewlinesÚencoderÚwriteÚflushr3ÚfsyncÚfilenorRrrSrTr)r%r6rr\r[Úmsgr r r rdõs   , ÿzIOBinding.writefilecCsT|j d¡dkr*t|jdƒs*|j dd¡|j dd¡}|jdkrP| d|j¡}|S)z/Return text with final if needed and os eols.zend-2cÚ r:zend-1crI)rÚgetÚhasattrrrKrYÚreplace©r%rr r r rks ÿ zIOBinding.fixnewlinesc CsÖt|tƒr|S|jdkr"| d¡Sz | d¡WSty@Yn0z.| dd¡}t t |¡j ¡\}}| |¡WSt yœ}zt |ƒ}WYd}~n"d}~0ty´d|}Yn0t j dd||jd| d¡S)Nz utf-8-sigÚasciiruzInvalid encoding '%s'rGz%s. Saving as UTF-8rH)rUÚbytesr"rlÚUnicodeEncodeErrorrLÚdetect_encodingÚioÚBytesIOÚreadlinerPrTrrSr)r%r\Zencodedr]Ú_r^Zfailedr r r rl s,        ýzIOBinding.encodecCsdtjddtj|jd}|s(|j ¡dSd}| ¡}|r>|j}|rJ|dur€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 Printerr_r;Z IDLE_tmp_)ÚprefixTÚposixÚmainZGeneralzprint-command-posixz 2>&1Úntzprint-command-winFÚrz#Printing failed (exit status 0x%x) zPrinting command: %s z Print statusrHz-Printing is not enabled for this platform: %s)rZ askokcancelZOKrrAr+r6ÚtempfileZmkstempr3r)rdÚunlinkÚnamerZ GetOptionÚshlexZquoteÚpopenrMÚstripÚreprrSZshowinfo)r%rCrcZ tempfilenameZsavedr6ZtfdÚplatformZ printPlatformZcommandÚpipeÚoutputZstatusrar r r r#,sbü     ÿ   ÿÿ zIOBinding.print_windowz Python filesÚTEXT)z Text filesz*.txtrŽ)z All filesrÚdarwinz.pyÚcCs<| d¡\}}|js(tj|j|jd|_|jj||d}|S)Nr)rEÚ filetypes©Z initialdirZ initialfile)ÚdefaultfilenameÚ opendialogrZOpenrr‘Úshow©r%ÚdirÚbaser6r r r r>isÿzIOBinding.askopenfilercCsT|jrtj |j¡S|jr$|jdfSz t ¡}WntyFd}Yn0|dfSdS)Nr)r6r3r4Úsplitr7ÚgetcwdrR)r%ÚmodeÚpwdr r r r“qs    zIOBinding.defaultfilenamecCs@| d¡\}}|js,tj|j|j|jd|_|jj||d}|S)Nr)rEr‘Údefaultextensionr’)r“Ú savedialogrZSaveAsrr‘rr•r–r r r rh}sýzIOBinding.asksavefilecCs|jjr|j |¡dS)z-Update recent file list on all editor windowsN)rr=Zupdate_recent_files_listr8r r r rZ‡szIOBinding.updaterecentfileslist)NN)r)%Ú__name__Ú __module__Ú __qualname__r&r)r+r,r/r'r1r6r7r9rr3rWrYr@rBrrr rdrkrlr#r”ržrr‘Úsysr‹rr>r“rhrZr r r r rs@   ,;  2ý  rc Cs’ddlm}m}||ƒ}| d¡tt| ¡ d¡dd…ƒ\}}| d||df¡Gdd „d ƒ}||ƒ}| ¡|  ¡||ƒ}t |ƒdS) Nr)ÚToplevelÚTextzTest IOBindingú+r2z+%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 )rr=rrÚprintrÚsaveasÚsavecopyrvr r r r&”sz'_io_binding..MyEditWin.__init__cSsdS)Nrr r(r r r r+œr z(_io_binding..MyEditWin.get_savedcSsdSr*r r-r r r r,r z(_io_binding..MyEditWin.set_savedcSsdSr*r r(r r r r/žr z)_io_binding..MyEditWin.reset_undocSs|j d¡dS)Nr©rZevent_generatergr r r rŸsz#_io_binding..MyEditWin.opencSs|j d¡dS)Nrrªrgr r r r§¡sz$_io_binding..MyEditWin.printcSs|j d¡dS)Nrrªrgr r r r£sz#_io_binding..MyEditWin.savecSs|j d¡dS)Nrrªrgr r r r¨¥sz%_io_binding..MyEditWin.saveascSs|j d¡dS)Nrrªrgr r r r©§sz'_io_binding..MyEditWin.savecopyN) rŸr r¡r&r+r,r/rr§rr¨r©r r r r Ú MyEditWin“sr«) Útkinterr£r¤r`ÚmapÚintZgeometryr™ZpackrAr) rEr£r¤ÚrootÚxÚyr«rrr r r Ú _io_bindingŒs  r²Ú__main__)rzidlelib.idle_test.test_iomenuéF)Ú verbosityÚexit)Úrun)r{r3r‡r¢r„rLr¬rrZtkinter.simpledialogrZidlelibZidlelib.configrZ idlelib.utilrÚjoinrFr‹Úerrorsrr²rŸZunittestrZidlelib.idle_test.htestr·r r r r Ús2      t$