1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253 |
- """ Defines a KernelClient that provides signals and slots.
- """
- from qtpy import QtCore
- # Local imports
- from traitlets import Bool, DottedObjectName
- from jupyter_client import KernelManager
- from jupyter_client.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(round(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"""
- client_class = DottedObjectName('qtconsole.client.QtKernelClient')
- 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,
- parent=self,
- log=self.log,
- )
- self._restarter.add_callback(self._handle_kernel_restarted)
- 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()
|