Widget displaying console output and accepting command input.
Implements:
- eval python expressions / exec python statements
- storable history of commands
- exception handling allowing commands to be interpreted in the context of any level in the exception stack frame
Why not just use python in an interactive shell (or ipython) ? There are a few reasons:
- pyside does not yet allow Qt event processing and interactive shell at the same time
- on some systems, typing in the console _blocks_ the qt event loop until the user presses enter. This can
be baffling and frustrating to users since it would appear the program has frozen.
- some terminals (eg windows cmd.exe) have notoriously unfriendly interfaces
- ability to add extra features like exception stack introspection
- ability to have multiple interactive prompts, including for spawned sub-processes
-
catchAllExceptions(catch=True)
If True, the console will catch all unhandled exceptions and display the stack
trace. Each exception caught clears the last.
-
catchNextException(catch=True)
If True, the console will catch the next unhandled exception and display the stack
trace.
-
displayException()
Display the current exception and stack.
-
loadHistory()
Return the list of previously-invoked command strings (or None).
-
saveHistory(history)
Store the list of previously-invoked command strings.