B
    ^ c8
                 @   sr   d dl mZmZ d dlZG dd dZe ZejZejZejZG dd deZ	e
dkrnd dlmZ ed	d
d dS )    )ToplevelTclErrorNc               @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )
WindowListc             C   s   i | _ g | _d S )N)dict	callbacks)self r   lib/python3.7/idlelib/window.py__init__   s    zWindowList.__init__c             C   s   | | j || jt|< d S )N)Z
after_idlecall_callbacksr   str)r   windowr   r   r	   add   s    zWindowList.addc             C   s2   y| j t|= W n tk
r$   Y nX |   d S )N)r   r   KeyErrorr   )r   r   r   r   r	   delete   s
    zWindowList.deletec          	   C   s   g }xL| j D ]B}| j | }y| }W n tk
r<   wY nX ||||f qW |  x"|D ]\}}}|j||jd q`W d S )N)ZlabelZcommand)r   	get_titler   appendsortZadd_commandwakeup)r   Zmenulistkeyr   titler   r   r	   add_windows_to_menu   s    
zWindowList.add_windows_to_menuc             C   s   | j | d S )N)r   r   )r   callbackr   r   r	   register_callback$   s    zWindowList.register_callbackc             C   s*   y| j | W n tk
r$   Y nX d S )N)r   remove
ValueError)r   r   r   r   r	   unregister_callback'   s    zWindowList.unregister_callbackc          	   C   sH   xB| j D ]8}y
|  W q   t \}}}td|d| Y qX qW d S )Nz&warning: callback failed in WindowList:)r   sysexc_infoprint)r   r   tvtbr   r   r	   r   -   s    
zWindowList.call_callbacksN)
__name__
__module____qualname__r
   r   r   r   r   r   r   r   r   r   r	   r      s   r   c               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )ListedToplevelc             K   s"   t | || t|  | | _d S )N)r   r
   registryr   focused_widget)r   Zmasterkwr   r   r	   r
   ?   s    
zListedToplevel.__init__c             C   s&   t |  t|  t js"|   d S )N)r)   r   r   destroyr   quit)r   r   r   r	   r,   D   s    

zListedToplevel.destroyc             C   s   t   d S )N)r)   r   )r   r   r   r   r	   update_windowlist_registryL   s    z)ListedToplevel.update_windowlist_registryc             C   s   |   S )N)Zwm_title)r   r   r   r	   r   O   s    zListedToplevel.get_titlec             C   sL   y2|   dkr|   |   |   | j  W n tk
rF   Y nX d S )NZiconic)Zwm_stateZwm_withdrawZwm_deiconifyZtkraiser*   Z	focus_setr   )r   r   r   r	   r   S   s    zListedToplevel.wakeupN)r%   r&   r'   r
   r,   r.   r   r   r   r   r   r	   r(   =   s
   r(   __main__)mainzidlelib.idle_test.test_window   )	verbosity)Ztkinterr   r   r   r   r)   r   r   r   r(   r%   Zunittestr0   r   r   r   r	   <module>   s   1#