manager.py
53 lines
| 1.6 KiB
| text/x-python
|
PythonLexer
MinRK
|
r10308 | """ Defines a KernelClient that provides signals and slots. | ||
""" | ||||
from IPython.external.qt import QtCore | ||||
# Local imports | ||||
MinRK
|
r11457 | from IPython.utils.traitlets import Bool, DottedObjectName | ||
MinRK
|
r10308 | |||
from IPython.kernel import KernelManager | ||||
from IPython.kernel.restarter import KernelRestarter | ||||
from .kernel_mixins import QtKernelManagerMixin, QtKernelRestarterMixin | ||||
class QtKernelRestarter(KernelRestarter, QtKernelRestarterMixin): | ||||
def start(self): | ||||
if self._timer is None: | ||||
self._timer = QtCore.QTimer() | ||||
self._timer.timeout.connect(self.poll) | ||||
self._timer.start(self.time_to_dead * 1000) | ||||
def stop(self): | ||||
self._timer.stop() | ||||
def poll(self): | ||||
super(QtKernelRestarter, self).poll() | ||||
class QtKernelManager(KernelManager, QtKernelManagerMixin): | ||||
"""A KernelManager with Qt signals for restart""" | ||||
MinRK
|
r11457 | client_class = DottedObjectName('IPython.qt.client.QtKernelClient') | ||
MinRK
|
r10308 | autorestart = Bool(True, config=True) | ||
def start_restarter(self): | ||||
if self.autorestart and self.has_kernel: | ||||
if self._restarter is None: | ||||
self._restarter = QtKernelRestarter( | ||||
kernel_manager=self, | ||||
MinRK
|
r11064 | parent=self, | ||
MinRK
|
r10308 | log=self.log, | ||
) | ||||
MinRK
|
r10317 | self._restarter.add_callback(self._handle_kernel_restarted) | ||
MinRK
|
r10308 | self._restarter.start() | ||
def stop_restarter(self): | ||||
if self.autorestart: | ||||
if self._restarter is not None: | ||||
self._restarter.stop() | ||||
def _handle_kernel_restarted(self): | ||||
self.kernel_restarted.emit() | ||||