o
     JAf8
                     @   sv   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r9d dlmZ ed	d
d dS 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
   %/usr/lib/python3.10/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w |   d S r   )r   r   KeyErrorr   r   r
   r
   r   delete   s   zWindowList.deletec              	   C   sv   g }| j D ]}| j | }z| }W n	 ty   Y qw ||||f q|  |D ]\}}}|j||jd q+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 r   )r   r   r	   callbackr
   r
   r   register_callback$   s   zWindowList.register_callbackc                 C   s(   z	| j | W d S  ty   Y d S w r   )r   remove
ValueErrorr   r
   r
   r   unregister_callback'   s
   zWindowList.unregister_callbackc              	   C   s@   | j D ]}z|  W q   t \}}}td|d| Y 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 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   z|   dkr|   |   |   | j  W d S  ty$   Y d S w )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)tkinterr   r   r#   r   r-   r   r   r!   r,   r)   Zunittestr4   r
   r
   r
   r   <module>   s    1#