Changeset 391 for python/trunk/Lib/idlelib/ScriptBinding.py
- Timestamp:
- Mar 19, 2014, 11:31:01 PM (11 years ago)
- Location:
- python/trunk
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
python/trunk
-
Property svn:mergeinfo
set to
/python/vendor/Python-2.7.6 merged eligible /python/vendor/current merged eligible
-
Property svn:mergeinfo
set to
-
python/trunk/Lib/idlelib/ScriptBinding.py
r2 r391 24 24 import tokenize 25 25 import tkMessageBox 26 import PyShell 27 28 from configHandler import idleConf 26 from idlelib import PyShell 27 28 from idlelib.configHandler import idleConf 29 from idlelib import macosxSupport 29 30 30 31 IDENTCHARS = string.ascii_letters + string.digits + "_" … … 54 55 self.root = self.editwin.root 55 56 57 if macosxSupport.runningAsOSXApp(): 58 self.editwin.text_frame.bind('<<run-module-event-2>>', self._run_module_event) 59 56 60 def check_module_event(self, event): 57 61 filename = self.getfilename() … … 67 71 try: 68 72 tabnanny.process_tokens(tokenize.generate_tokens(f.readline)) 69 except tokenize.TokenError ,msg:73 except tokenize.TokenError as msg: 70 74 msgtxt, (lineno, start) = msg 71 75 self.editwin.gotoline(lineno) … … 73 77 "Token Error: %s" % msgtxt) 74 78 return False 75 except tabnanny.NannyNag ,nag:79 except tabnanny.NannyNag as nag: 76 80 # The error messages from tabnanny are too confusing... 77 81 self.editwin.gotoline(nag.get_lineno()) … … 84 88 saved_stream = shell.get_warning_stream() 85 89 shell.set_warning_stream(shell.stderr) 86 f = open(filename, 'r') 87 source = f.read() 88 f.close() 90 with open(filename, 'r') as f: 91 source = f.read() 89 92 if '\r' in source: 90 93 source = re.sub(r"\r\n", "\n", source) … … 98 101 # If successful, return the compiled code 99 102 return compile(source, filename, "exec") 100 except (SyntaxError, OverflowError ),err:103 except (SyntaxError, OverflowError, ValueError) as err: 101 104 try: 102 105 msg, (errorfilename, lineno, offset, line) = err … … 143 146 if not self.tabnanny(filename): 144 147 return 'break' 145 shell = self.shell 146 interp = shell.interp 148 interp = self.shell.interp 147 149 if PyShell.use_subprocess: 148 shell.restart_shell()150 interp.restart_subprocess(with_cwd=False) 149 151 dirname = os.path.dirname(filename) 150 152 # XXX Too often this discards arguments the user just set... 151 153 interp.runcommand("""if 1: 152 _ filename = %r154 __file__ = {filename!r} 153 155 import sys as _sys 154 156 from os.path import basename as _basename 155 157 if (not _sys.argv or 156 _basename(_sys.argv[0]) != _basename(_ filename)):157 _sys.argv = [_ filename]158 _basename(_sys.argv[0]) != _basename(__file__)): 159 _sys.argv = [__file__] 158 160 import os as _os 159 _os.chdir( %r)160 del _ filename, _sys, _basename, _os161 \n""" % (filename,dirname))161 _os.chdir({dirname!r}) 162 del _sys, _basename, _os 163 \n""".format(filename=filename, dirname=dirname)) 162 164 interp.prepend_syspath(filename) 163 165 # XXX KBK 03Jul04 When run w/o subprocess, runtime warnings still … … 166 168 interp.runcode(code) 167 169 return 'break' 170 171 if macosxSupport.runningAsOSXApp(): 172 # Tk-Cocoa in MacOSX is broken until at least 173 # Tk 8.5.9, and without this rather 174 # crude workaround IDLE would hang when a user 175 # tries to run a module using the keyboard shortcut 176 # (the menu item works fine). 177 _run_module_event = run_module_event 178 179 def run_module_event(self, event): 180 self.editwin.text_frame.after(200, 181 lambda: self.editwin.text_frame.event_generate('<<run-module-event-2>>')) 182 return 'break' 168 183 169 184 def getfilename(self): … … 185 200 self.editwin.io.save(None) 186 201 else: 187 reply= self.ask_save_dialog()202 confirm = self.ask_save_dialog() 188 203 self.editwin.text.focus_set() 189 if reply == "ok":204 if confirm: 190 205 self.editwin.io.save(None) 191 206 filename = self.editwin.io.filename … … 196 211 def ask_save_dialog(self): 197 212 msg = "Source Must Be Saved\n" + 5*' ' + "OK to Save?" 198 mb = tkMessageBox.Message(title="Save Before Run or Check", 199 message=msg, 200 icon=tkMessageBox.QUESTION, 201 type=tkMessageBox.OKCANCEL, 202 default=tkMessageBox.OK, 203 master=self.editwin.text) 204 return mb.show() 213 confirm = tkMessageBox.askokcancel(title="Save Before Run or Check", 214 message=msg, 215 default=tkMessageBox.OK, 216 master=self.editwin.text) 217 return confirm 205 218 206 219 def errorbox(self, title, message):
Note:
See TracChangeset
for help on using the changeset viewer.