B
    $n¯V  ã               @   sÀ   d Z ddlmZ ddlmZmZmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZmZ dd	lmZ G d
d„ deeƒZG dd„ deeƒZG dd„ deeƒZG dd„ deeƒZG dd„ deƒZdS )z= Defines an in-process KernelManager with signals and slots.
é    )ÚQtCore)ÚInProcessHBChannelÚInProcessKernelClientÚInProcessKernelManager)ÚInProcessChannel)ÚTypeé   )ÚSuperQObject)ÚQtKernelClientMixinÚQtKernelManagerMixin)ÚRichJupyterWidgetc                   sh   e Zd Ze ¡ Ze ¡ Ze e¡Z‡ fdd„Z	‡ fdd„Z
dd„ Zdd„ Zd	d
„ Zd‡ fdd„	Z‡  ZS )ÚQtInProcessChannelc                s   t t| ƒ ¡  | j ¡  dS )z' Reimplemented to emit signal.
        N)Úsuperr   ÚstartÚstartedÚemit)Úself)Ú	__class__© ú2lib/python3.7/site-packages/qtconsole/inprocess.pyr      s    zQtInProcessChannel.startc                s   t t| ƒ ¡  | j ¡  dS )z' Reimplemented to emit signal.
        N)r   r   ÚstopÚstoppedr   )r   )r   r   r   r   !   s    zQtInProcessChannel.stopc                s"   ‡ ‡‡fdd„}t j d|¡ dS )z* Call the message handlers later.
        c                  s   ˆj ˆ ˆŽS )N)Úcall_handlersr   )ÚargsÚkwdsr   r   r   Ú<lambda>*   s    z8QtInProcessChannel.call_handlers_later.<locals>.<lambda>r   N)r   ZQTimerZ
singleShot)r   r   r   Zdo_laterr   )r   r   r   r   Úcall_handlers_later'   s    z&QtInProcessChannel.call_handlers_laterc             C   s   | j  |¡ d S )N)Úmessage_receivedr   )r   Úmsgr   r   r   r   -   s    z QtInProcessChannel.call_handlersc             C   s   t j ¡  ¡  dS )z) Process any pending GUI events.
        N)r   ZQCoreApplicationÚinstanceZprocessEvents)r   r   r   r   Úprocess_events0   s    z!QtInProcessChannel.process_eventsç      ð?c                s   t t| ƒ ¡  |  ¡  dS )zJ Reimplemented to ensure that signals are dispatched immediately.
        N)r   r   Úflushr    )r   Ztimeout)r   r   r   r"   5   s    zQtInProcessChannel.flush)r!   )Ú__name__Ú
__module__Ú__qualname__r   ÚSignalr   r   Úobjectr   r   r   r   r   r    r"   Ú__classcell__r   r   )r   r   r      s   
r   c               @   s   e Zd Ze ¡ ZdS )ÚQtInProcessHBChannelN)r#   r$   r%   r   r&   Zkernel_diedr   r   r   r   r)   <   s   r)   c               @   s0   e Zd ZdZeeƒZeeƒZeeƒZee	ƒZ
dS )ÚQtInProcessKernelClientz9 An in-process KernelManager with signals and slots.
    N)r#   r$   r%   Ú__doc__r   r   Ziopub_channel_classZshell_channel_classZstdin_channel_classr)   Zhb_channel_classr   r   r   r   r*   A   s
   r*   c               @   s   e Zd Zed ZdS )ÚQtInProcessKernelManagerz.QtInProcessKernelClientN)r#   r$   r%   Zclient_classr   r   r   r   r,   J   s   r,   c               @   s   e Zd ZdZddd„ZdS )ÚQtInProcessRichJupyterWidgetzA An in-process Jupyter Widget that enables multiline editing
    Tc             C   s<   | j jj}|j |¡\}}|d kr(d}nd| }|dk|fS )NÚ ú Z
incomplete)Zkernel_managerZkernelÚshellZinput_transformer_managerZcheck_complete)r   ÚsourceÚinteractiver0   ZstatusZindent_spacesÚindentr   r   r   Ú_is_completeR   s    
z)QtInProcessRichJupyterWidget._is_completeN)T)r#   r$   r%   r+   r4   r   r   r   r   r-   N   s   r-   N)r+   Zqtconsole.qtr   Zipykernel.inprocessr   r   r   Zipykernel.inprocess.channelsr   Z	traitletsr   Úutilr	   Zkernel_mixinsr
   r   Zrich_jupyter_widgetr   r   r)   r*   r,   r-   r   r   r   r   Ú<module>   s   +	