o
    Koi                     @   s|   d dl mZ d dlZd dlZejdk rd dlZnd dlZd dlZd dlm	Z	 d dl
m
Z
 d dlmZmZ G dd deZdS )	    )print_functionN)   )Tk)ScrolledText)MonitorTerminatedProcessc                   @   s   e Zd ZdZdddZejdddefddd	 Zejdddefdd
d Z	ejdddefddd Z
dd Zdd Zdd ZdS )	TkMonitorz
    An interface over a dictionary {taskno: scrolledtext widget}, with
    methods add_listener, del_listener, notify_listener and start/stop.
    Nc                 C   s   t | || i | _d S N)r   __init__widgets)selfnamequeue r   ;/home/ubuntu/.local/lib/python3.10/site-packages/plac_tk.pyr
      s   
zTkMonitor.__init__ztask number
positional)tasknoc                 C   s4   t | jdd}|dd|  |  || j|< dS )z%There is a ScrolledText for each task   )heightendzOutput of task %d
N)r   rootinsertpackr   )r   r   str   r   r   add_listener   s   zTkMonitor.add_listenerc                 C   s   | j |= d S r	   )r   )r   r   r   r   r   del_listener   s   zTkMonitor.del_listenerc                 C   s&   | j | }|d|d  |  d S )Nr   
)r   r   update)r   r   msgwr   r   r   notify_listener#   s   
zTkMonitor.notify_listenerc                 C   s   t  | _| j| j | jd| j | jd| j z| j  W dS  t	y8   t
dt  tjd Y dS  tyA   Y dS w )zStart the mainloopWM_DELETE_WINDOWr   zProcess %d killed by CTRL-C)fileN)r   r   titler   wm_protocolstopafter
read_queuemainloopKeyboardInterruptprintosgetpidsysstderrr   r   r   r   r   start)   s   zTkMonitor.startc                 C   s   | j   d S r	   )r   quitr/   r   r   r   r%   6   s   zTkMonitor.stopc                 C   sR   z| j  }W n
 t jy   Y nw t| |d |dd    | jd| j d S )Nr      d   )r   
get_nowaitEmptygetattrr   r&   r'   )r   cmd_argsr   r   r   r'   9   s   zTkMonitor.read_queuer	   )__name__
__module____qualname____doc__r
   	plac_coreannotationsintr   r   r    r0   r%   r'   r   r   r   r   r      s    



r   )
__future__r   r+   r-   version_infoQueuer   r<   Tkinterr   r   plac_extr   r   r   r   r   r   r   <module>   s    

