3  fP@sddlZddlmZddlZddlZddlZddlZddlZddljZ ddl j Z ddl mZddlZddlmZejr~dZn yddlZejejdWneejfk rYnXdZejdkryejd ZejeWnek rYnXny2ejej ZedksedkrdZejeWnje!e"efk ry2ejd Zedks`edkrddZejeWne#efk rYnXYnXej$ZeZej%d ej&Z'ej%d ej&Z(d d Z)GdddZ*ddZ+e,dkrddl-m.Z.e.ddddddl/m0Z0e0e+dS)N)BOM_UTF8) askstring)idleConfzutf-8asciiZwin32z&^[ \t\f]*#.*?coding[:=][ \t]*([-\w.]+)z^[ \t\f]*(?:[#\r\n]|$)c Cst|tr|jd}n|}d|kr8|jdddd}n$d|krV|jdddd}n|g}x2|D]&}tj|}|dk rzPtj|sbdSqbWdS|jd}ytj |Wn t k rt d|YnX|S)aVReturn the encoding declaration according to PEP 263. When checking encoded data, only the first two lines should be passed in to avoid a UnicodeDecodeError if the rest of the data is not unicode. The first two lines would contain the encoding specification. Raise a LookupError if the encoding is declared but unknown. z iso-8859-1 N rzUnknown encoding: ) isinstancebytesdecodesplit coding_rematchblank_regroupcodecslookup LookupError)datalinesZlstlinernamer3/opt/alt/python36/lib64/python3.6/idlelib/iomenu.py coding_specGs*      rc@seZdZddZddZddZddZd d Zd Zd d Z d Z d Z ddZ d:ddZ dZejeZejZddZddZddZddZddZddZdd Zd!d"Zd#d$Zd%d&Zd Zd Z d>Z!e"j#d.krd/nd0Z$d1d2Z%d?d4d5Z&d6d7Z'd8d9Z(d S)@ IOBindingcCsr||_|j|_|jjd|j|_|jjd|j|_|jjd|j|_|jjd|j |_ d|_ |jjd|j |_ dS)Nz<>z<>z<>z<>z<>)editwintextbindopen_IOBinding__id_opensave_IOBinding__id_savesave_as_IOBinding__id_saveas save_a_copy_IOBinding__id_savecopy fileencoding print_window_IOBinding__id_print)selfrrrr__init__us  zIOBinding.__init__cCsf|jjd|j|jjd|j|jjd|j|jjd|j|jjd|jd|_d|_d|_dS)Nz<>z<>z<>z<>z<>) rZunbindr"r$r&r(r+rfilename_change_hook)r,rrrcloseszIOBinding.closecCs |jjS)N)r get_saved)r,rrrr0szIOBinding.get_savedcCs|jj|dS)N)r set_saved)r,flagrrrr1szIOBinding.set_savedcCs|jjdS)N)r reset_undo)r,rrrr3szIOBinding.reset_undoNcCs ||_dS)N)r.)r,hookrrrset_filename_change_hooksz"IOBinding.set_filename_change_hookcCsF|rtjj|rd|_||_n$||_d|_|jd|jrB|jdS)Nr)ospathisdirfilenamedirnamer1r.)r,r9rrr set_filenames zIOBinding.set_filenamecCs|jj}|rx|s|j}n|}|rd|jrXt|jdd rX|j rX|jrX|j||jqt|j|n|jrt|jj dS|jr|j }|dkr|jj dS|s|j}n|}|r|j|n |jj dS)NZinterpbreakcancel) rflist askopenfilegetattrr9r0r!loadfiler focus_set maybesave)r,eventZeditFiler>r9replyrrrr!s6       zIOBinding.openz (\r\n)|\n|\rc Cs@y|j j j t d d t|j j d }|rnt ||}d|_|d fSttfk rYnXdS)zCreate a Unicode string.Nzutf-8FBOMzError loading the filez^The encoding '%s' is not known to this Python installation. The file may not display correctly)titlemessagerGrzSpecify 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 initialvaluerGT)NF)NF)NF) startswithrr UnicodeDecodeErrorr)rrrNrOrrPrupdaterencoding)r,rYr r[encrrrrrQsh         zIOBinding._decodecCsp|jr dSd|jpd}tjd|tj|jd}|rPd}|jd|jsbd}n|dkr^d}nd}|jj|S)Nyesz&Do you want to save %s before closing?zthis untitled documentz Save On Close)r^r_defaultrGr=no)r0r9rNZaskyesnocancelZYESrr#rB)r,r_confirmrErrrrCAs&    zIOBinding.maybesavec CsZ|js|j|n:|j|jrL|jdy|jjWntk rJYnX|jjdS)NTr<) r9r% writefiler1rstore_file_breaksAttributeErrorrrB)r,rDrrrr#Ws    zIOBinding.savec Csf|j}|rN|j|rN|j||jdy|jjWntk rLYnX|jj|j |dS)Nrr<) asksavefilerir;r1rrjrkrrBrW)r,rDr9rrrr%ds     zIOBinding.save_ascCs.|j}|r|j||jj|j|dS)Nr<)rlrirrBrW)r,rDr9rrrr'rs    zIOBinding.save_a_copycCs|j|jjdd}|jdkr.|jd|j}|j|}y$t|d}|j|WdQRXdStk r}zt j dt ||jddSd}~XnXdS) Nz1.0zend-1crwbTz I/O Error)rGF) fixlastlinergetrTreplaceencoder!writerMrNrOrP)r,r9rr[rXrZrrrrizs     zIOBinding.writefilec#Cst|tr|S|jdkr&t|jdSy |jdStk rDYnXyt|}d}Wn*tk r}z|}d}WYdd}~Xn X|sd}|ry |j|Stk rd|}YnXtj dd||j dt|jdS)Nr]zutf-8rzInvalid encoding '%s'z I/O Errorz%s. Saving as UTF-8)rG) r r r)rrq UnicodeErrorrrrNrOr)r,r[rdZfailedrZrrrrqs4     zIOBinding.encodecCs&|jjd}|dkr"|jjdddS)Nzend-2crzend-1c)rrorI)r,crrrrns zIOBinding.fixlastlinecCsftjddtj|jd}|s(|jjdSd}|j}|r>|j}| sL|dkrtjdd\}}|}t j ||j |st j |dSt j }d}|dkrtjd d d } | d } n|d krtjd d d} nd}|r8| tj|} t j| d} | jj} | j } | rd| | } | rRdt| | } tjd| |jdnd|} tjd| |jd|rbt j |dS)NZPrintzPrint to Default Printer)r^r_rfrGr<Z IDLE_tmp_)prefixTposixmainZGeneralzprint-command-posixz 2>&1ntzprint-command-winFrz#Printing failed (exit status 0x%x) zPrinting command: %s z Print status)rGz-Printing is not enabled for this platform: %s)rNZ askokcancelZOKrrBr0r9tempfileZmkstempr6r/riunlinkrrZ GetOptionshlexZquotepopenrLstripreprrOZshowinfo)r,rDrhZ tempfilenameZsavedr9ZtfdplatformZ printPlatformZcommandpipeoutputZstatusr_rrrr*sX          zIOBinding.print_window Python files *.py *.pywTEXT Text files*.txt All files*darwinz.pyrcCs<|jd\}}|js(tj|j|jd|_|jj||d}|S)Nr!)rG filetypes) initialdir initialfile)defaultfilename opendialog tkFileDialogZOpenrrshow)r,dirbaser9rrrr?s  zIOBinding.askopenfiler!c CsV|jrtjj|jS|jr$|jdfSy tj}Wntk rHd}YnX|dfSdS)Nr)r9r6r7rr:getcwdrM)r,modepwdrrrrs   zIOBinding.defaultfilenamecCs@|jd\}}|js,tj|j|j|jd|_|jj||d}|S)Nr#)rGrdefaultextension)rr)r savedialogrZSaveAsrrrr)r,rrr9rrrrls zIOBinding.asksavefilecCs|jjr|jj|dS)z-Update recent file list on all editor windowsN)rr>Zupdate_recent_files_list)r,r9rrrrWszIOBinding.updaterecentfileslist)NNrrrrrrrr)rrr)r!))__name__ __module__ __qualname__r-r/r0r1r3r.r5r9r:r;r!ZeolrecompilerRr6lineseprTrArQrCr#r%r'rirqrnr*rrrsysrrr?rrlrWrrrrrpsD   , $D '2  rc Csddlm}m}||}|jdtt|jjddd\}}|jd||dfGdd d }||}|j|j ||}t |dS) Nr)ToplevelTextzTest IOBinding+rz+%d+%dc@sTeZdZddZddZddZddZd d Zd d Zd dZ ddZ ddZ dS)z_io_binding..MyEditWincSs`||_d|_|jjd|j|jjd|j|jjd|j|jjd|j|jjd|jdS)Nz z z zz )rr>r r!printr#saveassavecopy)r,rrrrr-sz'_io_binding..MyEditWin.__init__cSsdS)Nrr)r,rrrr0%sz(_io_binding..MyEditWin.get_savedcSsdS)Nr)r,r2rrrr1&sz(_io_binding..MyEditWin.set_savedcSsdS)Nr)r,rrrr3'sz)_io_binding..MyEditWin.reset_undocSs|jjddS)Nz<>)revent_generate)r,rDrrrr!(sz#_io_binding..MyEditWin.opencSs|jjddS)Nz<>)rr)r,rDrrrr*sz$_io_binding..MyEditWin.printcSs|jjddS)Nz<>)rr)r,rDrrrr#,sz#_io_binding..MyEditWin.savecSs|jjddS)Nz<>)rr)r,rDrrrr.sz%_io_binding..MyEditWin.saveascSs|jjddS)Nz<>)rr)r,rDrrrr0sz'_io_binding..MyEditWin.savecopyN) rrrr-r0r1r3r!rr#rrrrrr MyEditWinsr) Ztkinterrrr^mapintZgeometryrZpackrBr) rGrrrootxyrrrrrr _io_bindings  r__main__)rwzidlelib.idle_test.test_iomenur F) verbosityexit)run)1rrr6rr|rrzZtkinter.filedialogZ filedialogrZtkinter.messageboxZ messageboxrNZtkinter.simpledialogrZidlelibZidlelib.configrZtestingrcZlocale setlocaleLC_CTYPE ImportErrorErrorZ locale_decoderZgetdefaultlocaleZlocale_encodingrr nl_langinfoCODESET NameErrorrk ValueErrorlowerrASCIIrrrrrrZunittestrwZidlelib.idle_test.htestrrrrrsj          )($