PNG  IHDR;IDATxܻn0K )(pA 7LeG{ §㻢|ذaÆ 6lذaÆ 6lذaÆ 6lom$^yذag5bÆ 6lذaÆ 6lذa{ 6lذaÆ `}HFkm,mӪôô! x|'ܢ˟;E:9&ᶒ}{v]n&6 h_tڠ͵-ҫZ;Z$.Pkž)!o>}leQfJTu іچ\X=8Rن4`Vwl>nG^is"ms$ui?wbs[m6K4O.4%/bC%t Mז -lG6mrz2s%9s@-k9=)kB5\+͂Zsٲ Rn~GRC wIcIn7jJhۛNCS|j08yiHKֶۛkɈ+;SzL/F*\Ԕ#"5m2[S=gnaPeғL lذaÆ 6l^ḵaÆ 6lذaÆ 6lذa; _ذaÆ 6lذaÆ 6lذaÆ RIENDB`  pY @s_ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl Z ddl Z ddl Z ddl m Z ddlmZmZyddlTWn2ek reddejejdYnXddljZddlmZmZdd lmZdd lmZdd l m!Z!dd l"m#Z#dd l$m%Z%ddl&m'Z'ddl&m(Z(ddl&m)Z)ddl&m*Z*dZ+dZ,eja-ddl.Z.dddZ/ddddZ0da1ddZ2e2dde j3ddZ4e4e _3GdddeZ5GdddeZ6Gd d!d!eZ7Gd"d#d#e!Z8Gd$d%d%e'j9Z:Gd&d'd'e Z;Gd(d)d)e#Z<Gd*d+d+e j=Z>Gd,d-d-e>Z?Gd.d/d/e>Z@d0d1ZAd2ZBd3d4ZCeDd5krQejEd5ejEd)>> )warning_streamwriterAttributeErrorOSError)rrrrrrrrridle_showwarning=s  r$cCsF|r'tdkrBtjatt_ntdk rBtt_dadS)z>Replace warning.showwarning with idle_showwarning, or reverse.N)_warnings_showwarningwarnings showwarningr$)capturerrrcapture_warningsPs     r)TcCsxtj}i}xKt|D]=}|dd|dddkr|j||| entries Rather than repeating the linecache code, patch it to save the entries, call the original linecache.checkcache() (skipping them), and then restore the saved entries. orig_checkcache is bound at definition time to the original method, allowing it to be patched. Nrz<>)rcachelistpopupdate)rZorig_checkcacher+savekeyrrrextended_linecache_checkcache_s $ r1c@seZdZdZddZd'd(d)d*d+d,gZdddZddZd ddZd ddZ ddZ ddZ dd Z d!d"Z d#d$Zd%d&Zd S)-PyShellEditorWindowz6Regular text edit window in IDLE, supports breakpointscGsg|_tj|||jjd|j|jjd|j|jjd|jjt j j t j d|_|jj|dd}|jj||jjr|j|jdS)Nz<>z<>z<>zbreakpoints.lstcSs|j|dS)N)restore_file_breaks)Zold_hookselfrrrfilename_changed_hooks z;PyShellEditorWindow.__init__..filename_changed_hook) breakpointsr__init__textbindset_breakpoint_hereclear_breakpoint_hereflist open_shellospathjoinrZ GetUserCfgDirbreakpointPathioZfilename_change_hookZset_filename_change_hookrr3color_breakpoint_text)r4argsr5rrrr7ys     zPyShellEditorWindow.__init__Cut<>rmenu_check_cutCopy<>rmenu_check_copyPaste <>rmenu_check_pasteNSet Breakpoint<>Clear Breakpoint<>TcCsc|jdkrdS|r:tj}tj|d}nddddi}|jjd|dS)z,Turn colorizing of breakpoint text on or offNbreak foreground backgroundBREAK)rBr CurrentTheme GetHighlightr8Z tag_config)r4ZcolorthemeZcfgrrrrCs z)PyShellEditorWindow.color_breakpoint_textcCs|j}|jj}|jdd|d|dy|jj|Wn"tk rl|jj|YnXy&|jj j j }|j ||WnYnXdS)NrVz%d.0r) r8rBrtag_addr6index ValueErrorappendr<pyshellinterpdebuggerr:)r4rr8rdebugrrrset_breakpoints   z"PyShellEditorWindow.set_breakpointcCsU|j}|jj}|s)|jdStt|jd}|j|dS)Ninsert)r8rBrbellintfloatr[rb)r4eventr8rrrrrr:s   z'PyShellEditorWindow.set_breakpoint_herecCs|j}|jj}|s)|jdStt|jd}y|jj|WnYnX|j dddy&|j j j j }|j||WnYnXdS)NrcrVzinsert linestartzinsert lineend +1char)r8rBrrdrerfr[r6remove tag_remover<r^r_r`r;)r4rgr8rrrarrrr;s"    z)PyShellEditorWindow.clear_breakpoint_herec Cs|jr||j}|jj}|s2|jdSg|_|jddty#|jjj j }|j |WnYnXdS)NrVz1.0) r6r8rBrrdriZENDr<r^r_r`clear_file_breaks)r4r8rrarrrrjs     z%PyShellEditorWindow.clear_file_breaksc Cs[|j}|jj}y,t|jd}|j}WdQRXWntk r[g}YnXyt|jdp}x.|D]&}|j|ds{|j|q{W|j |j}|r|j|dt |dWdQRXWnotk rV}zOt |j ddsDd|j _ tjd d d d t |d |jWYdd}~XnXdS)z#Save breakpoints when file is savedrNw= breakpoint_error_displayedFTtitlez IDLE Errorrz$Unable to update breakpoint list: %sparent)r6rBropenrA readlinesr# startswithr!update_breakpointsstrgetattrrootro tkMessageBox showerrorr8)r4ZbreaksrfplinesZnew_filererrrrrstore_file_breakss.       *  z%PyShellEditorWindow.store_file_breaksc Cs|jj|jdkr dS|jj}|dkr<dStjj|jrt|jd}|j }WdQRXx_|D]W}|j |drt |t |dd}x|D]}|j |qWqWdS)Nrkrmr)r8r.rBrr>r?isfilerArrrsrtevallenrb)r4rr{r|rZbreakpoint_linenumbersZbreakpoint_linenumberrrrr3s      z'PyShellEditorWindow.restore_file_breakscCs4|j}|jd}|j|}||_dS)z3Retrieves all the breakpoints in the current windowrVN)r8Z tag_rangesranges_to_linenumbersr6)r4r8rangesZlinenumber_listrrrrus z&PyShellEditorWindow.update_breakpointscCsg}xtdt|dD]f}tt||j}tt||dj}x'||kr|j||d7}q^WqW|S)Nrr)rangerrerfstringr])r4rr|r[rendrrrrs z)PyShellEditorWindow.ranges_to_linenumberscCs|jtj|dS)z7Extend base method - clear breaks when module is closedN)rjr_close)r4rrrr-s zPyShellEditorWindow._close)rErFrG)rHrIrJ)rKrLrM)NNN)rNrON)rPrQN)r __module__ __qualname____doc__r7Z rmenu_specsrCrbr:r;rjr~r3rurrrrrrr2vs$       *   r2c@s1eZdZdZeZdZdddZdS)PyShellFileListz8Extend base class: IDLE supports a shell and breakpointsNcCsN|jr|jjjn+t||_|jrG|jjsGdS|jS)N)r^topwakeupPyShellbegin)r4rgrrrr=<s  zPyShellFileList.open_shell)rrrrr2rr^r=rrrrr3s rc@sFeZdZdZddZddZddZdd Zd S) ModifiedColorDelegatorz8Extend base class: colorizer for the shell window itselfcCstj||jdS)N)r r7 LoadTagDefs)r4rrrr7Js zModifiedColorDelegator.__init__cCs7|jddd|jdddtj|dS)NZTODOz1.0iomarkZSYNC)rirZr recolorize_main)r4rrrrNsz&ModifiedColorDelegator.recolorize_mainc Csutj|tj}|jjdddddidtj|ddtj|ddtj|didS)NstdinrUrSstdoutstderrconsole)r rrrWtagdefsr.rX)r4rYrrrrSs   z"ModifiedColorDelegator.LoadTagDefscCs+x$|jD]}|j|ddq WdS)Nrr)rri)r4tagrrr removecolors]sz#ModifiedColorDelegator.removecolorsN)rrrrr7rrrrrrrrGs    rc@s4eZdZdZdddZdddZdS)ModifiedUndoDelegatorz;Extend base class: forbid insert/delete before the I/O markNc Cs\y-|jj|ddr,|jjdSWntk rAYnXtj||||dS)NZ%dS)?ModifiedInterpretercCsf||_tjdj}tj|d|d|_d|_d|_t |_ |j j j |_dS)N__main__localsF) tkconsolesysmodules__dict__rr7save_warnings_filters restartingsubprocess_arglistPORTportcompilecompilerflagsoriginal_compiler_flags)r4rrrrrr7s     zModifiedInterpreter.__init__NcCs7|jdkr|j|_tj|j|_dS)N)rbuild_subprocess_arglist subprocessPopen rpcsubproc)r4rrrspawn_subprocesssz$ModifiedInterpreter.spawn_subprocesscCsddtjD}tjddddddd }td krSd |f}n d |f}tjg|d |t|jgS)NcSsg|]}d|qS)z-Wr).0rrrr s z@ModifiedInterpreter.build_subprocess_arglist..mainGeneralzdelete-exitfuncdefaultFtypeboolzidlelib.PyShellz&__import__('idlelib.run').run.main(%r)z__import__('run').main(%r)z-c)r warnoptionsr GetOptionr executablervr)r4rlZ del_exitfZcommandrrrrs  z,ModifiedInterpreter.build_subprocess_arglistc Cst|jf}xXtdD]<}tj|yt||_PWqtk rWYqXqW|jdS|jj j d|_t dkr|jj j t jt jd|j|jj jdy|jjWn#t jk r|jdSYnX|jjd|j|jjd|jj|jjd|jj|jjd|jj|jjd |jj|jjd t|jjd ||jd d |j|jS)Nrr rrrrr<rr_with_cwdT)HOSTrrtimesleeprrpccltr#display_port_binding_errorlistening_sock getsocknamer setsockoptsocket SOL_SOCKET SO_REUSEADDRr settimeoutaccepttimeoutdisplay_no_subprocess_errorregisterrrrrr<r transfer_pathpoll_subprocess)r4addrirrrstart_subprocesss>          z$ModifiedInterpreter.start_subprocessFrTcCs|jr|jSd|_|j}|rJytj|jWnYnX|jj|j|j}|j}d|_|j y|jj Wn#t j k r|j dSYnX|jd||j|jjddd|r|nd}t|jt|dd d }|jd j|||jjd d|jjd d |st|j|rtj|j|j|j|jj_d|_|jS)NTFrrzend-1cz RESTART: ZShellrrmz {0} {1} {0}restartleft) rr getdebuggerrZclose_subprocess_debuggercloseterminate_subprocessr executingrrrrrr stop_readliner8rrewidthrr!formatmark_set mark_gravity showpromptZrestart_subprocess_debuggerload_breakpointsrrrr)r4rrrarZ was_executingrZhalfbarrrrrestart_subprocesssH            %   z&ModifiedInterpreter.restart_subprocesscCs|jjddfidS)NexecZinterrupt_the_server)rZ remotecall)r4rrrZ__request_interruptsz'ModifiedInterpreter.__request_interruptcCstjd|jjdS)Ntarget) threadingThread'_ModifiedInterpreter__request_interruptstart)r4rrrinterrupt_subprocesssz(ModifiedInterpreter.interrupt_subprocesscCs|jdk r%|jjj|jy|jjjWntk rMYnXy|jjWntk rsYnX|jd|j_ d|_dS)NF) _afteridrr8Z after_cancelrrrr"rr)r4rrrkill_subprocesss    z#ModifiedInterpreter.kill_subprocesscCsXy|jjWntk r)dSYn+Xy|jjWntk rSdSYnXdS)z"Make sure subprocess is terminatedN)rkillr#wait)r4rrrrs   z(ModifiedInterpreter.terminate_subprocesscCsC|r"dg}|jtjn tj}|jd|fdS)NrTzRif 1: import sys as _sys _sys.path = %r del _sys )extendrr? runcommand)r4rr?rrrrs   z!ModifiedInterpreter.transfer_pathcCs|j}|dkrdSy|j|jdd}Wn;tttfk rr|jjr^dSd}|jYnX|rd|jj d|_|\}}|jj }|dkr|dk r>t t |d|nf|dkr|jj dr>|jn;|dkr>d}t ||dtjt ||d|y|jjWntk rcYnX|jjs|jjj|jj|j|_dS) Nrg?ZOKrZ EXCEPTIONz<>ERRORz/PyShell.ModifiedInterpreter: Subprocess ERROR: )rZ pollresponse active_seqrr#KeyboardInterruptrclosingr resetoutputrprintreprgetvarremote_stack_viewerr __stderr__ endexecutingr"r8after pollintervalrr)r4ZcltresponsehowZwhatrerrmsgrrrr,s@               z#ModifiedInterpreter.poll_subprocesscCs ||_dS)N)r`)r4r`rrr setdebuggerTszModifiedInterpreter.setdebuggercCs|jS)N)r`)r4rrrrWszModifiedInterpreter.getdebuggercCs|jjjd|jdS)aInitiate the remote stack viewer from a separate thread. This method is called from the subprocess, and by returning from this method we allow the subprocess to unblock. After a bit the shell requests the subprocess to open the remote stack viewer which returns a static object looking at the last exception. It is queried through the RPC mechanism. i,N)rr8rr)r4rrropen_remote_stack_viewerZs z,ModifiedInterpreter.open_remote_stack_viewerc Csddlm}|jjdddi}|dkrK|jjjdS|j|j|}ddlm }m }t |jj}t j }t j|dd}||d |d d} | jjd d d d|| jd|} | jdS)Nr)RemoteObjectBrowserrZ stackviewerr<)ScrolledCanvasTreeNodeZnormalrUbgZhighlightthicknessexpandrfillZboth)r<)idlelibr r remotequeuerrxrdZStubObjectTreeItemZidlelib.TreeWidgetr rZToplevelrrWrXframepackZcanvasr) r4r Zoiditemr rrrYrUZscZnoderrrrgs  z'ModifiedInterpreter.remote_stack_viewerrcCs#|j|}|j||dS)z1Like runsource() but assumes complete exec sourceN) stuffsourceexecfile)r4sourcerrrr execsourcezszModifiedInterpreter.execsourcecCs|dkr1tj|}|j}WdQRXyt||d}WnXttfk r|jjtdd|jj t j |||jj YnX|j |dS)zExecute an existing fileNrzB*** Error in script or command! Traceback (most recent call last):r)tokenizerrreadr OverflowError SyntaxErrorrrrrrshowsyntaxerrorrruncode)r4rrr{coderrrrs    zModifiedInterpreter.execfilec Cs|j|}d|_tjdd|_tjdddtztj|||SWd|jdk r|jtjddrrnr)gidsplitrrr+)r4rrr|rrrrs  #zModifiedInterpreter.stuffsourcecCs|jd|fdS)z>Prepend sys.path with file's directory if not already includeda(if 1: _filename = %r import sys as _sys from os.path import dirname as _dirname _dir = _dirname(_filename) if not _dir in _sys.path: _sys.path.insert(0, _dir) del _filename, _sys, _dirname, _dir N)r)r4rrrrprepend_syspathsz#ModifiedInterpreter.prepend_syspathc Cs |j}|j}|jdddtj\}}}t|ddpU|pUd}t|ddpmd}t|d dpd } | d kr|d7}|dkrd | d} nd |d| df} |j|| |j|jd ||j dS)zOverride Interactive Interpreter method: Use Colorizing Color the offending position instead of printing it and pointing at it with a caret. rz1.0rmsgrTzrroffsetrziomark + %d charsz&iomark linestart + %d lines + %d charszSyntaxError: %s N) rr8rirexc_inforwZcolorize_syntax_errorrr!r) r4rrr8rvaluetbr+rr,posrrrrs"      z#ModifiedInterpreter.showsyntaxerrorcCsG|jj|jtj||jjdrC|jjdS)z1Extend base class method to reset output properlyz<>N)rrchecklinecacher showtracebackropen_stack_viewer)r4rrrr2s    z!ModifiedInterpreter.showtracebackcCsUtj}xEt|jD]1}|dd|dddkr||=qWdS)Nrz<>r*)rr+r,keys)r4cr0rrrr1s $z"ModifiedInterpreter.checklinecachecCsV|jjr|jdS|jrB|jjdd|fint||jdS)z*Run the code without invoking the debuggerrrr r)rrdisplay_executing_dialogrrrr)r4r!rrrrs   zModifiedInterpreter.runcommandcCs|jjr|jj|j|jdk rQ|jtjddd?Z(d@dAZ)dBdCZ*dDdEZ+ddFdGZ,ddHdIZ-ddJdKZ.dLdMZ/dNdOZ0fdPdQZ1fdRdSZ2fdTdUZ3S)\rzPython z Shellr_Fileedit_Editra_Debugoptions_Optionswindows_Windowhelp_Helpr)HistoryNc Cstr3|j}|dddkr3|jddt||_|dkrwt}t||jt|}t j ||ddd|_ d|_ d|_ |j}|jdd|jd |j|jd |j|jd |j|jd |j|jd |j|jd|j|jd|jtrr|jd|j|jd|jtj|_tj|_tj|_ ddl!m"}t#|d|j$|_t%|d|j$|_t%|d|j$|_t%|d|j$|_&ts0|jt_|jt_|jt_yddl'}|j(|_)Wntj*t_YnX|j+|j|_,d|_-dS)NrrshellShe_llTwrapcharz<>z<>z<>z<>z<>z<>z<>z<>z<>) IOBindingrrrr2)rHrI).r; menu_specsrcrr_Tkr withdrawrr r7ZusetabsZ indentwidthZcontext_use_ps1r8Z configurer9enter_callbacklinefeed_callbackcancel_callback eof_callbackr3toggle_debuggertoggle_jit_stack_viewerview_restart_mark restart_shellrr save_stdoutr save_stderrr save_stdinrrMPseudoInputFileencodingPseudoOutputFilerpydocZ plainpagerZpagerrrGhistoryr)r4r<msrxr8rMr`rrrr7Ws\                  zPyShell.__init__cCstjddS)NZ shell_onlyT)rZ GetExtensions)r4rrrget_standard_extension_namessz$PyShell.get_standard_extension_namesFcCs |adS)N)r )r4streamrrrset_warning_streamszPyShell.set_warning_streamcCstS)N)r )r4rrrget_warning_streamszPyShell.get_warning_streamcCs`|jr0tjddd|j|jdS|jj}|rR|jn |jdS)NzDon't debug nowz*You can only toggle the debugger when idlerqrR) rryrzr8set_debugger_indicatorr_rclose_debugger open_debugger)r4rgdbrrrrVs     zPyShell.toggle_debuggercCs%|jj}|jd| dS)Nz<>)r_rZsetvar)r4rjrrrrgszPyShell.set_debugger_indicatorcCsdS)Nr)r4rgrrrrWszPyShell.toggle_jit_stack_viewercCs|jj}|r{|jjd|j|jjrNtj|jj|j|jj ddt _ |j |j dS)Nz [DEBUG OFF] z>>> )r_rr rrrZclose_remote_debuggerrrr!rps1rrg)r4rjrrrrhs     zPyShell.close_debuggercCsq|jjr'tj|jj|}ntj|}|jj||jdt_|j |j dS)Nz[DEBUG ON] >>> ) r_rrZstart_remote_debuggerrr rrrkrrg)r4Zdbg_guirrrris     zPyShell.open_debuggercCs|jd|_dS)zHelper for ModifiedInterpreterrN)rr)r4rrrr8s zPyShell.beginexecutingcCs d|_d|_|jdS)zHelper for ModifiedInterpreterrN)rr<r)r4rrrrs  zPyShell.endexecutingcCsc|jr:tjddddd|j}|dkr:dS|jd|_d|_tj|S) zExtend EditorWindow.close()zKill?z7Your program is still running! Do you want to kill it?rokrqFcancelT) rryZ askokcancelr8rr<rrr)r4rrrrrs      z PyShell.closecCsy|jtr|jj|jt_|jt_|j t_ d|_d|_ d|j _ d|_tj|dS)zEExtend EditorWindow._close(), shut down debugger and execution serverN)rhr;r_rrZrrr[rr\rrr<r^rarr)r4rrrrs         zPyShell._closecCsdS)z8Override EditorWindow method: never remove the colorizerTr)r4rrrrispythonsourceszPyShell.ispythonsourcecCs|jS)N) shell_title)r4rrr short_titleszPyShell.short_titlez@Type "copyright", "credits" or "license()" for more information.cCs|jjdd|jtrOd}|jj}|sm|jdSndddd}tjt _|j d t j t j |j |f|jj|jd dl}d|_d S) NrrcrTFz==== No Subprocess ==== z9WARNING: Running IDLE without a Subprocess is deprecated z;and will be removed in a later version. See Help/IDLE Help zfor details. zPython %s on %s %s %srT)r8rrr;r_rrr displayhookrr!versionplatform COPYRIGHTZ focus_forcertkinterZ _default_root)r4Znosubclientrurrrrs$         z PyShell.begincCs'|js dSd|_|jjdS)NT)reading_stop_readline_flagrquit)r4rrrrs  zPyShell.stop_readlinec Cs|j}zd|_|jjWd||_X|jrFd|_dS|jjdd}t|dkrsd}|j|jrd|_t st |j rd|_ d}|S)NrFrTrzend-1crrn) rwrmainlooprxr8getrrr<r;r endoffile)r4r/rrrrreadline"s(          zPyShell.readlinecCsdS)NTr)r4rrrisatty9szPyShell.isattyc Csy |jjdddrdSWnYnX|jp:|jse|j|jjd|jdSd|_d|_ |jr|jj r|jj r|jj n |jj |jr|jjdS)Nz sel.firstz!=zsel.lastzKeyboardInterrupt rRrr)r8rrrwrr_r!rr|r<rrrrrry)r4rgrrrrT<s&       zPyShell.cancel_callbackcCs|jr|j rdS|jjdddoD|jjdddsKdS|jsk|j|jnd|_d|_|jj dS)Nrz==rczend-1crrrR) rrwr8rrrr<r|rry)r4rgrrrrURs      zPyShell.eof_callbackcCs@|jr/|jjdd|jjdn |j|dS)NrcrnrR)rwr8rcseenewline_and_indent_event)r4rgrrrrSas   zPyShell.linefeed_callbackc Cs|jr|j rdSyK|jjdd}|ra|jjdddra|j||dSWnYnX|jjdddr|jjd d}|r|jjdd|d r|j|jj|d |d |dS|jjd d}|rI|jjd d |d rI|j|jj|d |d |dS|jjdd}|r|jj|d ddr|j|jj|d d |n|j|jjdd |dS|jjdddr|jjdd|jjdd}|r/|j r/|jj dd|jjdddrX|j |dS|jjdd|jr|jj dd|jj dn |j ||jjd dd|jj|jr|jjn |jdS)Nz sel.firstzsel.lastz<=rrRrcrziomark linestartrrrzinsert lineendz>=rzinsert linestartzend-1czend-1c linestartrn)rrwr8r{rrecallZ tag_prevrangeZ tag_nextrangerrrrrcrrZZupdate_idletasksrryrunit)r4rgselprevnextindicesrrrrrRjsX"'"'&      zPyShell.enter_callbackc Cstjdd|}tjdd|}|jd}|jjzC|jjddd|jjdd |jjd d}|jj d r|j ||jjd d}|jj d|d j t |d krtjd|d jd }tjd|jd }x^|d dD]L}|j|rg||t |d}|jj dd|jq8WWd|jjd|jjXdS)Nz^\s*\nrTz\n\s*$rnrz1.0rrczend-1czinsert linestart:rrz ^([ \t]*))resubr)r8Zundo_block_startrirr{rstripendswithrrcrrsearchgrouprtrZundo_block_stop)r4rrgr|prefixZorig_base_indentZnew_base_indentrrrrrs*  %zPyShell.recallcCs|jjdd}t|}x.|dkrQ||ddkrQ|d}q$W|dkr|||ddkr||d}x.|dkr||ddkr|d}qW|d|}|jj|dS)Nrzend-1crrz rn)r8r{rr_r')r4rrrrrrs #  #z PyShell.runitc Css|jjr|jjSy tjWn%tjddd|jdSYnXddlm }||j |j dS)NzNo stack tracez@There is no stack trace yet. (sys.last_traceback is not defined)rqr) StackBrowser) r_rrrlast_tracebackryrzr8Zidlelib.StackViewerrrxr<)r4rgrrrrr3s      zPyShell.open_stack_viewercCs$|jjd|jjddS)Nrr)r8r)r4rgrrrrXszPyShell.view_restart_markcCs|jjdddS)z&Callback for Run/Restart Shell Cntl-F6rTN)r_r)r4rgrrrrYszPyShell.restart_shellc Csl|jyttj}Wnd}YnX|jj||jjdd|j|j j dS)NrTrczend-1c) rrvrrkrr!r8rset_line_and_columnrBZ reset_undo)r4rrrrrs   zPyShell.showpromptcCsz|jjdd}|jr.|jj||jjddkrY|jjdd|jjdd|jdS)Nrzend-1czend-2crn)r8r{rastorercrr)r4rrrrrs zPyShell.resetoutputc Cst|trst|rst|dkrsx't|D]\}}|dkr:Pq:Wtd|||ddyB|jjddtj |||d}|jjddWn YnX|j rd|_ t st |S) Nu￿zUCS-2rz%Non-BMP character not supported in Tkrrightrr) isinstancervrmax enumerateUnicodeEncodeErrorr8rr r!r<r;r)r4rrrrLcountrrrr!s"-    z PyShell.writec sFy |jjdddrdSWntk r8dSYnXtjS)Nz sel.firstrrdisabled)r8rrsuperrG)r4) __class__rrrGs   zPyShell.rmenu_check_cutcs)|jjdddrdStjS)Nrcrrr)r8rrrM)r4)rrrrMszPyShell.rmenu_check_paste)rr=)r>r?)rar@)rArB)rCrD)rErF)4rrrrrorr rr rOZidlelib.IdleHistoryrGr7rcrwrr<r|rrxrerfrVrgrWrhrir8rrrrnrprtrrr}r~rTrUrSrRrrr3rXrYrrr!rGrMrr)rrrAsd  :                ?   rc@sOeZdZdddZeddZeddZdd ZdS) PseudoFileNcCs||_||_||_dS)N)rHr _encoding)r4rHrr^rrrr7"s  zPseudoFile.__init__cCs|jS)N)r)r4rrrr^'szPseudoFile.encodingcCs d|jS)Nz<%s>)r)r4rrrname+szPseudoFile.namecCsdS)NTr)r4rrrr~/szPseudoFile.isatty)rrrr7propertyr^rr~rrrrr s rc@s(eZdZddZddZdS)r_cCsdS)NTr)r4rrrwritable5szPseudoOutputFile.writablecCst|jrtdt|tk r^t|tsOtdt|jtj|}|jj ||j S)Nzwrite to closed filezmust be str, not ) closedr\rrvr TypeErrorr__str__rHr!r)r4rrrrr!8s  zPseudoOutputFile.writeN)rrrrr!rrrrr_3s  r_c@sUeZdZdddZddZd ddZdd d Zd d ZdS)r]NcCs#tj||||d|_dS)NrT)rr7 _line_buffer)r4rHrr^rrrr7EszPseudoInputFile.__init__cCsdS)NTr)r4rrrreadableIszPseudoInputFile.readablercCs|jrtd|dkr*d}n(t|tsRtdt|j|j}d|_|dkrx|jj }|sP||7}qsWn\x6t ||kr|jj }|sP||7}qW||d|_|d|}|S)Nzread from closed filerzmust be int, not rTrr*) rr\rrerrrrrHr}r)r4sizeresultrrrrrLs,       zPseudoInputFile.readcCs|jrtd|dkr*d}n(t|tsRtdt|j|jpg|jj }|dkrt |}|j dd|}|dkr|d}||d|_|d|S)Nzread from closed filerzmust be int, not rrnr*) rr\rrerrrrrHr}rfind)r4rrZeolrrrr}cs        zPseudoInputFile.readlinecCs|jjdS)N)rHr)r4rrrrsszPseudoInputFile.closer*r*)rrrr7rrr}rrrrrr]Cs  r]cCsG|jdkrCx1dD])}|j|dd|j|dqWdS) z6Make paste replace selection on x11. See issue #5124.Zx11TextEntrySpinboxz <>z%catch {%W delete sel.first sel.last} N)rrr)Z_windowingsystemZ bind_class)rxclsrrr fix_x11_pastews ra USAGE: idle [-deins] [-t title] [file]* idle [-dns] [-t title] (-c cmd | -r file) [arg]* idle [-dns] [-t title] - [arg]* -h print this help message and exit -n run IDLE without a subprocess (DEPRECATED, see Help/IDLE Help for details) The following options will override the IDLE 'settings' configuration: -e open an edit window -i open a shell window The following options imply -i and will open a shell: -c cmd run the command in a shell, or -r file run script from file -d enable the debugger -s run $IDLESTARTUP or $PYTHONSTARTUP before anything else -t title set title of shell window A default edit window will be bypassed when -c, -r, or - are used. [arg]* are passed to the command (-c) or script (-r) in sys.argv[1:]. Examples: idle Open an edit window or shell depending on IDLE's configuration. idle foo.py foobar.py Edit the files, also open a shell if configured to start with shell. idle -est "Baz" foo.py Run $IDLESTARTUP or $PYTHONSTARTUP, edit foo.py, and open a shell window with the title "Baz". idle -c "import sys; print(sys.argv)" "foo" Open a shell window and run the command, passing "-c" in sys.argv[0] and "foo" in sys.argv[1]. idle -d -s -r foo.py "Hello World" Open a shell window, run a startup script, enable the debugger, and run foo.py, passing "foo.py" in sys.argv[0] and "Hello World" in sys.argv[1]. echo "import sys; print(sys.argv)" | idle - "foobar" Open a shell window, run the script piped in, passing '' in sys.argv[0] and "foobar" in sys.argv[1]. cstddad}d}d}d}d}d}y)tjtjddd\}}WnRtjk r}z/td|tfdtjtj dWYdd}~XnXx*|D]"\} } | dkr| }d}| d krd}d}| d krd}| d kr-tj j ttj | d kr?d}| d krdtddtjda| dkr| }t j j|rntd|tj d}| dkrd}d}| dkr| t_d}qW|r |ddkr tjj}d}x=tttj D]&} t j jtj | tj | rtj?qzWtj@tddS)4NTFrz c:deihnr:st:z Error: %s %srrz-cz-dz-ez-hz-iz-nz: Warning: running IDLE without a subprocess is deprecated.z-rzNo script file: z-sz-tr-rTrrzeditor-on-startuprrZ classNameZIdleZIconsZWindowszidle.icorg!@g333333!@z.pngz.gifcs/g|]%}tjjd|fqS)z idle_%d%s)r>r?r@)rr)exticondirrrrs zmain.. 0cSsg|]}td|qS)r)Z PhotoImage)riconfilerrrrs rzz z<>Z IDLESTARTUPZ PYTHONSTARTUPzbif 1: import sys as _sys _sys.argv = %r del _sys z print('%s'))rrr)Ar)r;getoptrargvr#r usage_msgrexitrr!r>r?rrrorrrrabspathr]dirnamercgetcwdrrrPrxrQr@__file__rZ wm_iconbitmapZ TkVersionZ wm_iconphotor rrr<rZsetupAppZisAquaTkZ unbind_classrrrhnewr=dictrlowerr^rienvironr{r_rrrr*ZtkVersionWarningZ inversedictrzZdestroy)Z enable_shellZ enable_editracmdZscriptZstartupZoptsrDr+oarZpathxrdirZ edit_startrZ iconfilesZiconsrHZtkversionwarningr)rrrrs )                 $       !               rrF)Frr>Zos.pathrrrrrrrrBrr!rrsrrru ImportErrorrrrZtkinter.messageboxZ messageboxryZidlelib.EditorWindowrr Zidlelib.FileListr Zidlelib.ColorDelegatorr Zidlelib.UndoDelegatorr Zidlelib.OutputWindowr Zidlelib.configHandlerrrrrrrrrr r&rr$r%r) checkcacher1r2rrrZ RPCClientrrr TextIOBaserr_r]rrrrrrrrrsz                   4 ?