a
    If8
                     @   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.9/idlelib/window.py__init__   s    zWindowList.__init__c                 C   s   | | j || jt|< d S r   )Z
after_idlecall_callbacksr   strr	   windowr
   r
   r   add   s    zWindowList.addc                 C   s0   z| j t|= W n ty"   Y n0 |   d S r   )r   r   KeyErrorr   r   r
   r
   r   delete   s
    zWindowList.deletec              	   C   sz   g }| j D ]B}| j | }z| }W n ty:   Y q
Y n0 ||||f q
|  |D ]\}}}|j||jd qZd 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 r   )r   r   r	   callbackr
   r
   r   register_callback$   s    zWindowList.register_callbackc                 C   s(   z| j | W n ty"   Y n0 d S r   )r   remove
ValueErrorr   r
   r
   r   unregister_callback'   s    zWindowList.unregister_callbackc              	   C   sD   | j D ]8}z
|  W q   t \}}}td|d| Y q0 q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 r   )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 r   )r-   r   r   destroyr   quitr   r
   r
   r   r0   D   s    

zListedToplevel.destroyc                 C   s   t   d S r   )r-   r   r   r
   r
   r   update_windowlist_registryL   s    z)ListedToplevel.update_windowlist_registryc                 C   s   |   S r   )Zwm_titler   r
   r
   r   r   O   s    zListedToplevel.get_titlec                 C   sJ   z2|   dkr|   |   |   | j  W n tyD   Y n0 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   r0   r2   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unittestr4   r
   r
   r
   r   <module>   s   1#