Ignore:
Timestamp:
Mar 19, 2014, 11:31:01 PM (11 years ago)
Author:
dmik
Message:

python: Merge vendor 2.7.6 to trunk.

Location:
python/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • python/trunk

  • python/trunk/Lib/idlelib/ScriptBinding.py

    r2 r391  
    2424import tokenize
    2525import tkMessageBox
    26 import PyShell
    27 
    28 from configHandler import idleConf
     26from idlelib import PyShell
     27
     28from idlelib.configHandler import idleConf
     29from idlelib import macosxSupport
    2930
    3031IDENTCHARS = string.ascii_letters + string.digits + "_"
     
    5455        self.root = self.editwin.root
    5556
     57        if macosxSupport.runningAsOSXApp():
     58            self.editwin.text_frame.bind('<<run-module-event-2>>', self._run_module_event)
     59
    5660    def check_module_event(self, event):
    5761        filename = self.getfilename()
     
    6771        try:
    6872            tabnanny.process_tokens(tokenize.generate_tokens(f.readline))
    69         except tokenize.TokenError, msg:
     73        except tokenize.TokenError as msg:
    7074            msgtxt, (lineno, start) = msg
    7175            self.editwin.gotoline(lineno)
     
    7377                          "Token Error: %s" % msgtxt)
    7478            return False
    75         except tabnanny.NannyNag, nag:
     79        except tabnanny.NannyNag as nag:
    7680            # The error messages from tabnanny are too confusing...
    7781            self.editwin.gotoline(nag.get_lineno())
     
    8488        saved_stream = shell.get_warning_stream()
    8589        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()
    8992        if '\r' in source:
    9093            source = re.sub(r"\r\n", "\n", source)
     
    98101                # If successful, return the compiled code
    99102                return compile(source, filename, "exec")
    100             except (SyntaxError, OverflowError), err:
     103            except (SyntaxError, OverflowError, ValueError) as err:
    101104                try:
    102105                    msg, (errorfilename, lineno, offset, line) = err
     
    143146        if not self.tabnanny(filename):
    144147            return 'break'
    145         shell = self.shell
    146         interp = shell.interp
     148        interp = self.shell.interp
    147149        if PyShell.use_subprocess:
    148             shell.restart_shell()
     150            interp.restart_subprocess(with_cwd=False)
    149151        dirname = os.path.dirname(filename)
    150152        # XXX Too often this discards arguments the user just set...
    151153        interp.runcommand("""if 1:
    152             _filename = %r
     154            __file__ = {filename!r}
    153155            import sys as _sys
    154156            from os.path import basename as _basename
    155157            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__]
    158160            import os as _os
    159             _os.chdir(%r)
    160             del _filename, _sys, _basename, _os
    161             \n""" % (filename, dirname))
     161            _os.chdir({dirname!r})
     162            del _sys, _basename, _os
     163            \n""".format(filename=filename, dirname=dirname))
    162164        interp.prepend_syspath(filename)
    163165        # XXX KBK 03Jul04 When run w/o subprocess, runtime warnings still
     
    166168        interp.runcode(code)
    167169        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'
    168183
    169184    def getfilename(self):
     
    185200                self.editwin.io.save(None)
    186201            else:
    187                 reply = self.ask_save_dialog()
     202                confirm = self.ask_save_dialog()
    188203                self.editwin.text.focus_set()
    189                 if reply == "ok":
     204                if confirm:
    190205                    self.editwin.io.save(None)
    191206                    filename = self.editwin.io.filename
     
    196211    def ask_save_dialog(self):
    197212        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
    205218
    206219    def errorbox(self, title, message):
Note: See TracChangeset for help on using the changeset viewer.