Improved the RESTART annotation in the shell window when the user

restarts the shell while it is generating output.  Also improved
annotation when user repeatedly hammers the Ctrl-F6 restart.
This commit is contained in:
Kurt B. Kaiser 2003-05-24 21:12:46 +00:00
parent 36364be3bf
commit 6f80594229
1 changed files with 9 additions and 0 deletions

View File

@ -311,6 +311,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
locals = sys.modules['__main__'].__dict__
InteractiveInterpreter.__init__(self, locals=locals)
self.save_warnings_filters = None
self.restarting = False
port = 8833
rpcclt = None
@ -357,6 +358,9 @@ class ModifiedInterpreter(InteractiveInterpreter):
self.poll_subprocess()
def restart_subprocess(self):
if self.restarting:
return
self.restarting = True
# close only the subprocess debugger
debug = self.getdebugger()
if debug:
@ -369,12 +373,16 @@ class ModifiedInterpreter(InteractiveInterpreter):
self.rpcclt.close()
self.unix_terminate()
console = self.tkconsole
was_executing = console.executing
console.executing = False
self.spawn_subprocess()
self.rpcclt.accept()
self.transfer_path()
# annotate restart in shell window and mark it
console.text.delete("iomark", "end-1c")
if was_executing:
console.write('\n')
console.showprompt()
halfbar = ((int(console.width) - 16) // 2) * '='
console.write(halfbar + ' RESTART ' + halfbar)
console.text.mark_set("restart", "end-1c")
@ -386,6 +394,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
gui = RemoteDebugger.restart_subprocess_debugger(self.rpcclt)
# reload remote debugger breakpoints for all PyShellEditWindows
debug.load_breakpoints()
self.restarting = False
def __request_interrupt(self):
self.rpcclt.remotecall("exec", "interrupt_the_server", (), {})