B ÁW“¬­Uuã @sØddlZddlmZddlZddlZddlZddlZddlZddlmZ ddl m Z ddl mZddlZddlmZejr„dZdZnÞyddlZe ejd¡Wneejfk r¸YnXejdkrÎdZdZn”ye ej¡Zerêe e¡WnXee e!fk rDy e "¡d Zer"e e¡Wne#e!fk r>YnXYnXerZe $¡Zd Znd ZdZe %d ej&¡Z'e %d ej&¡Z(dd„Z)Gdd„dƒZ*dd„Z+e,dkrÔddl-m.Z.e.ddddddl/m0Z0e0e+ƒdS)éN)ÚBOM_UTF8)Ú askstring)ÚidleConfzutf-8ÚsurrogateescapeÚÚwin32éÚstrictÚasciiz&^[ \t\f]*#.*?coding[:=][ \t]*([-\w.]+)z^[ \t\f]*(?:[#\r\n]|$)cCsÎt|tƒr| d¡}n|}d|kr8| dd¡dd…}n$d|krV| dd¡dd…}n|g}x2|D]&}t |¡}|dk rzPt |¡sbdSqbWdS| d¡}yt  |¡Wn t k rÈt d|ƒ‚YnX|S)Nz iso-8859-1Ú éú rzUnknown encoding: ) Ú isinstanceÚbytesÚdecodeÚsplitÚ coding_reÚmatchÚblank_reÚgroupÚcodecsÚlookupÚ LookupError)ÚdataÚlinesZlstÚlinerÚname©rú1/opt/alt/python37/lib/python3.7/idlelib/iomenu.pyÚ coding_specBs*      rc@sþeZdZdd„Zdd„Zdd„Zdd„Zd d „Zd Zd d „Z d Z d Z dd„Z d4dd„Z dZe e¡ZejZdd„Zdd„Zdd„Zdd„Zdd„Zdd„Zdd „Zd!d"„Zd#d$„Zd%d&„Zd Zd Z d'Z!e"j#d(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)Nz<>z<>z<>z<>z<>)Ú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!rrrÚ__init__ps  zIOBinding.__init__cCsf|j d|j¡|j d|j¡|j d|j¡|j d|j¡|j d|j¡d|_d|_d|_dS)Nz<>z<>z<>z<>z<>) r"Zunbindr%r'r)r+r.r!Úfilename_change_hook)r/rrrÚclose|szIOBinding.closecCs |j ¡S)N)r!Ú get_saved)r/rrrr3ˆszIOBinding.get_savedcCs|j |¡dS)N)r!Ú set_saved)r/Úflagrrrr4‹szIOBinding.set_savedcCs|j ¡dS)N)r!Ú reset_undo)r/rrrr6ŽszIOBinding.reset_undoNcCs ||_dS)N)r1)r/ÚhookrrrÚset_filename_change_hook“sz"IOBinding.set_filename_change_hookcCsF|rtj |¡rd|_||_n$||_d|_| d¡|jrB| ¡dS)Nr)ÚosÚpathÚisdirÚfilenameÚdirnamer4r1)r/r<rrrÚ set_filename™s 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Úgetattrr<r3r$Úloadfiler"Ú focus_setÚ maybesave)r/ÚeventZeditFilerBr<Úreplyrrrr$¤s6       zIOBinding.openz (\r\n)|\n|\rc CsByrMr6r4Zmark_setZyviewÚupdaterecentfileslist) r/r<ÚfÚ two_linesrÚmsgÚcharsZ convertedZfirsteolrrrrEÔs:          zIOBinding.loadfilec Cs”d}| t¡rHy|dd… d¡}Wntk r8dSXd|_|dfSy t|ƒ}WnNtk r}ztjdd||j dd}Wdd}~XYntk r¢dSX|rÖyt ||ƒ}||_|dfStk rÔYnXyt |d ƒ}d|_|dfStk rYnXyt |dƒ}d|_|dfStk r4YnXy>|j j   ¡t d d t|j j d }|rnt ||ƒ}d|_|d fSttfk rŽYnXdS)Nézutf-8)NFÚBOMFzError loading the filez^The encoding '%s' is not known to this Python installation. The file may not display correctly)ÚtitleÚmessagerKr zSpecify 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?)Z initialvaluerKT)Ú startswithrrÚUnicodeDecodeErrorr,rrrRrSr"rTr!ÚupdaterÚencoding)r/r]rr_ÚencrrrrrUøsh         zIOBinding._decodecCsp| ¡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)rbrcÚdefaultrKrAÚno)r3r<rRZaskyesnocancelZYESr"r&rF)r/rcÚconfirmrIrrrrG<s&    zIOBinding.maybesavecCsZ|js| |¡n:| |j¡rL| d¡y|j ¡Wntk rJYnX|j ¡dS)NTr@) r<r(Ú writefiler4r!Ústore_file_breaksÚAttributeErrorr"rF)r/rHrrrr&Rs    zIOBinding.savecCsf| ¡}|rN| |¡rN| |¡| d¡y|j ¡Wntk rLYnX|j ¡|  |¡dS)Nrr@) Ú asksavefilerlr>r4r!rmrnr"rFr[)r/rHr<rrrr(_s     zIOBinding.save_ascCs.| ¡}|r| |¡|j ¡| |¡dS)Nr@)rorlr"rFr[)r/rHr<rrrr*ms    zIOBinding.save_a_copyc CsŠ| ¡}| |¡}y:t|dƒ&}| |¡| ¡t | ¡¡WdQRXdStk r„}zt j dt |ƒ|j ddSd}~XYnXdS)NÚwbTz I/O Error)rKF) Ú fixnewlinesÚencoder$ÚwriteÚflushr9ÚfsyncÚfilenorQrRrSrTr")r/r<r"r_r\r^rrrrlus     zIOBinding.writefilecCsT|j d¡dkr*t|jdƒs*|j dd¡|j dd¡}|jdkrP| d|j¡}|S)Nzend-2cr r?zend-1cz1.0)r"ÚgetÚhasattrr!rMrXÚreplace)r/r"rrrrqƒs  zIOBinding.fixnewlinesc CsÚt|tƒr|S|jdkr&t| d¡Sy | d¡Stk rDYnXyt|ƒ}d}Wn*tk r€}z |}d}Wdd}~XYn X|sŠd}|r¶y | |¡Stk r´d|}YnXtj dd||j dt| d¡S)Nrazutf-8r zInvalid encoding '%s'z I/O Errorz%s. Saving as UTF-8)rK) rrr,rrrÚ UnicodeErrorrrrRrSr")r/r_rhZfailedr^rrrrrs4     zIOBinding.encodecCsdtjddtj|jd}|s(|j ¡dSd}| ¡}|r>|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 Printer)rbrcrirKr@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 status)rKz-Printing is not enabled for this platform: %s)rRZ askokcancelZOKr"rFr3r<ÚtempfileZmkstempr9r2rlÚunlinkrrZ GetOptionÚshlexZquoteÚpopenrPÚstripÚreprrSZshowinfo)r/rHrkZ tempfilenameZsavedr<ZtfdÚplatformZ printPlatformZcommandÚpipeÚoutputÚstatusrcrrrr-´sX           zIOBinding.print_window))z Python filesz *.py *.pywÚTEXT)z Text filesz*.txtrŠ)z All filesÚ*Údarwinz.pyrcCs<| d¡\}}|js(tj|j|jd|_|jj||d}|S)Nr$)rKÚ filetypes)Ú initialdirÚ initialfile)ÚdefaultfilenameÚ opendialogÚ tkFileDialogZOpenr"rÚshow)r/ÚdirÚbaser<rrrrCñs  zIOBinding.askopenfiler$cCsV|jrtj |j¡S|jr$|jdfSy t ¡}Wntk rHd}YnX|dfSdS)Nr)r<r9r:rr=ÚgetcwdrQ)r/ÚmodeÚpwdrrrrùs   zIOBinding.defaultfilenamecCs@| d¡\}}|js,tj|j|j|jd|_|jj||d}|S)Nr&)rKrÚdefaultextension)rŽr)rÚ savedialogr’ZSaveAsr"rr™r“)r/r”r•r<rrrros zIOBinding.asksavefilecCs|jjr|j |¡dS)N)r!rBZupdate_recent_files_list)r/r<rrrr[szIOBinding.updaterecentfileslist)NN)r$))Ú__name__Ú __module__Ú __qualname__r0r2r3r4r6r1r8r<r=r>r$ZeolÚreÚcompilerVr9ÚlineseprXrErUrGr&r(r*rlrqrrr-r‘ršrÚsysr†r™rCrror[rrrrr ks@   , $D  '2  r c Cs’ddlm}m}||ƒ}| d¡tt| ¡ d¡dd…ƒ\}}| d||df¡Gdd „d ƒ}||ƒ}| ¡|  ¡||ƒ}t |ƒdS) Nr)ÚToplevelÚTextzTest IOBindingú+rz+%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 )r"rBr#r$Úprintr&ÚsaveasÚsavecopy)r/r"rrrr0sz'_io_binding..MyEditWin.__init__cSsdS)Nrr)r/rrrr3$óz(_io_binding..MyEditWin.get_savedcSsdS)Nr)r/r5rrrr4%r©z(_io_binding..MyEditWin.set_savedcSsdS)Nr)r/rrrr6&r©z)_io_binding..MyEditWin.reset_undocSs|j d¡dS)Nz<>)r"Úevent_generate)r/rHrrrr$'sz#_io_binding..MyEditWin.opencSs|j d¡dS)Nz<>)r"rª)r/rHrrrr¦)sz$_io_binding..MyEditWin.printcSs|j d¡dS)Nz<>)r"rª)r/rHrrrr&+sz#_io_binding..MyEditWin.savecSs|j d¡dS)Nz<>)r"rª)r/rHrrrr§-sz%_io_binding..MyEditWin.saveascSs|j d¡dS)Nz<>)r"rª)r/rHrrrr¨/sz'_io_binding..MyEditWin.savecopyN) r›rœrr0r3r4r6r$r¦r&r§r¨rrrrÚ MyEditWinsr«) Ztkinterr¢r£rbÚmapÚintZgeometryrÚpackrFr ) rKr¢r£ÚrootÚxÚyr«r"r!rrrÚ _io_bindings  r²Ú__main__)r}zidlelib.idle_test.test_iomenur F)Ú verbosityÚexit)Úrun)1rrr9ržr‚r¡r€Ztkinter.filedialogZ filedialogr’Ztkinter.messageboxZ messageboxrRZtkinter.simpledialogrZidlelibZidlelib.configrZtestingrgÚerrorsÚlocaleÚ setlocaleÚLC_CTYPEÚ ImportErrorÚErrorr†Ú nl_langinfoÚCODESETZlocale_encodingrÚ NameErrorrnrÚgetdefaultlocaleÚ ValueErrorÚlowerrŸÚASCIIrrrr r²r›Zunittestr}Zidlelib.idle_test.htestr¶rrrrÚsf         ),$