ipythonqt.py
80 lines
| 3.0 KiB
| text/x-python
|
PythonLexer
epatters
|
r2801 | #!/usr/bin/env python | ||
""" A minimal application using the Qt console-style IPython frontend. | ||||
epatters
|
r2758 | """ | ||
# Systemm library imports | ||||
from PyQt4 import QtCore, QtGui | ||||
# Local imports | ||||
from IPython.external.argparse import ArgumentParser | ||||
epatters
|
r2801 | from IPython.frontend.qt.console.frontend_widget import FrontendWidget | ||
from IPython.frontend.qt.console.ipython_widget import IPythonWidget | ||||
from IPython.frontend.qt.console.rich_ipython_widget import RichIPythonWidget | ||||
epatters
|
r2758 | from IPython.frontend.qt.kernelmanager import QtKernelManager | ||
epatters
|
r2823 | # Constants | ||
LOCALHOST = '127.0.0.1' | ||||
epatters
|
r2758 | |||
def main(): | ||||
epatters
|
r2801 | """ Entry point for application. | ||
epatters
|
r2758 | """ | ||
# Parse command line arguments. | ||||
parser = ArgumentParser() | ||||
epatters
|
r2823 | parser.add_argument('-e', '--existing', action='store_true', | ||
help='connect to an existing kernel') | ||||
parser.add_argument('--ip', type=str, default=LOCALHOST, | ||||
help='set the kernel\'s IP address [default localhost]') | ||||
parser.add_argument('--xreq', type=int, metavar='PORT', default=0, | ||||
help='set the XREQ channel port [default random]') | ||||
parser.add_argument('--sub', type=int, metavar='PORT', default=0, | ||||
help='set the SUB channel port [default random]') | ||||
parser.add_argument('--rep', type=int, metavar='PORT', default=0, | ||||
help='set the REP channel port [default random]') | ||||
epatters
|
r2778 | group = parser.add_mutually_exclusive_group() | ||
group.add_argument('--pure', action='store_true', help = \ | ||||
'use a pure Python kernel instead of an IPython kernel') | ||||
group.add_argument('--pylab', action='store_true', | ||||
help='use a kernel with PyLab enabled') | ||||
epatters
|
r2758 | parser.add_argument('--rich', action='store_true', | ||
epatters
|
r2778 | help='use a rich text frontend') | ||
epatters
|
r2823 | args = parser.parse_args() | ||
epatters
|
r2758 | |||
# Don't let Qt or ZMQ swallow KeyboardInterupts. | ||||
import signal | ||||
signal.signal(signal.SIGINT, signal.SIG_DFL) | ||||
# Create a KernelManager and start a kernel. | ||||
epatters
|
r2823 | kernel_manager = QtKernelManager(xreq_address=(args.ip, args.xreq), | ||
sub_address=(args.ip, args.sub), | ||||
rep_address=(args.ip, args.rep)) | ||||
if args.ip == LOCALHOST and not args.existing: | ||||
if args.pure: | ||||
kernel_manager.start_kernel(ipython=False) | ||||
elif args.pylab: | ||||
if args.rich: | ||||
kernel_manager.start_kernel(pylab='payload-svg') | ||||
else: | ||||
kernel_manager.start_kernel(pylab='qt4') | ||||
epatters
|
r2758 | else: | ||
epatters
|
r2823 | kernel_manager.start_kernel() | ||
epatters
|
r2758 | kernel_manager.start_channels() | ||
# Launch the application. | ||||
app = QtGui.QApplication([]) | ||||
epatters
|
r2823 | if args.pure: | ||
kind = 'rich' if args.rich else 'plain' | ||||
epatters
|
r2778 | widget = FrontendWidget(kind=kind) | ||
epatters
|
r2823 | elif args.rich: | ||
widget = RichIPythonWidget() | ||||
epatters
|
r2758 | else: | ||
epatters
|
r2823 | widget = IPythonWidget() | ||
epatters
|
r2758 | widget.kernel_manager = kernel_manager | ||
epatters
|
r2823 | widget.setWindowTitle('Python' if args.pure else 'IPython') | ||
epatters
|
r2758 | widget.show() | ||
app.exec_() | ||||
if __name__ == '__main__': | ||||
main() | ||||