Show More
@@ -4,7 +4,7 b'' | |||||
4 | All the matplotlib support code was co-developed with John Hunter, |
|
4 | All the matplotlib support code was co-developed with John Hunter, | |
5 | matplotlib's author. |
|
5 | matplotlib's author. | |
6 |
|
6 | |||
7 |
$Id: Shell.py 8 |
|
7 | $Id: Shell.py 882 2005-09-20 23:17:41Z fperez $""" | |
8 |
|
8 | |||
9 | #***************************************************************************** |
|
9 | #***************************************************************************** | |
10 | # Copyright (C) 2001-2004 Fernando Perez <fperez@colorado.edu> |
|
10 | # Copyright (C) 2001-2004 Fernando Perez <fperez@colorado.edu> | |
@@ -34,6 +34,9 b' from IPython.Struct import Struct' | |||||
34 | from IPython.Magic import Magic |
|
34 | from IPython.Magic import Magic | |
35 | from IPython import ultraTB |
|
35 | from IPython import ultraTB | |
36 |
|
36 | |||
|
37 | # global flag to pass around information about Ctrl-C without exceptions | |||
|
38 | KBINT = False | |||
|
39 | ||||
37 | # global flag to turn on/off Tk support. |
|
40 | # global flag to turn on/off Tk support. | |
38 | USE_TK = False |
|
41 | USE_TK = False | |
39 |
|
42 | |||
@@ -241,8 +244,18 b' class IPShellEmbed:' | |||||
241 | #----------------------------------------------------------------------------- |
|
244 | #----------------------------------------------------------------------------- | |
242 | def sigint_handler (signum,stack_frame): |
|
245 | def sigint_handler (signum,stack_frame): | |
243 | """Sigint handler for threaded apps. |
|
246 | """Sigint handler for threaded apps. | |
244 | """ |
|
247 | ||
245 | raise KeyboardInterrupt |
|
248 | This is a horrible hack to pass information about SIGINT _without_ using | |
|
249 | exceptions, since I haven't been able to properly manage cross-thread | |||
|
250 | exceptions in GTK/WX. In fact, I don't think it can be done (or at least | |||
|
251 | that's my understanding from a c.l.py thread where this was discussed).""" | |||
|
252 | ||||
|
253 | global KBINT | |||
|
254 | ||||
|
255 | print '\nKeyboardInterrupt - Press <Enter> to continue.', | |||
|
256 | Term.cout.flush() | |||
|
257 | # Set global flag so that runsource can know that Ctrl-C was hit | |||
|
258 | KBINT = True | |||
246 |
|
259 | |||
247 | class MTInteractiveShell(InteractiveShell): |
|
260 | class MTInteractiveShell(InteractiveShell): | |
248 | """Simple multi-threaded shell.""" |
|
261 | """Simple multi-threaded shell.""" | |
@@ -278,6 +291,13 b' class MTInteractiveShell(InteractiveShell):' | |||||
278 | Modified version of code.py's runsource(), to handle threading issues. |
|
291 | Modified version of code.py's runsource(), to handle threading issues. | |
279 | See the original for full docstring details.""" |
|
292 | See the original for full docstring details.""" | |
280 |
|
293 | |||
|
294 | global KBINT | |||
|
295 | ||||
|
296 | # If Ctrl-C was typed, we reset the flag and return right away | |||
|
297 | if KBINT: | |||
|
298 | KBINT = False | |||
|
299 | return False | |||
|
300 | ||||
281 | try: |
|
301 | try: | |
282 | code = self.compile(source, filename, symbol) |
|
302 | code = self.compile(source, filename, symbol) | |
283 | except (OverflowError, SyntaxError, ValueError): |
|
303 | except (OverflowError, SyntaxError, ValueError): |
General Comments 0
You need to be logged in to leave comments.
Login now