î
\á[\¨	  ã               @   s[   d  d l  TGd d „  d ƒ Z e ƒ  Z e j Z e j Z e j Z Gd d „  d e ƒ Z d S)é    )Ú*c               @   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.4/idlelib/WindowList.pyÚ__init__   s    	zWindowList.__init__c             C   s'   | j  |  j ƒ | |  j t | ƒ <d  S)N)Z
after_idleÚcall_callbacksr   Ústr)r   Úwindowr   r   r   Úadd	   s    zWindowList.addc             C   s7   y |  j  t | ƒ =Wn t k
 r( Yn X|  j ƒ  d  S)N)r   r   ÚKeyErrorr
   )r   r   r   r   r   Údelete   s
    zWindowList.deletec             C   s¦   g  } x\ |  j  D]Q } |  j  | } y | j ƒ  } Wn t k
 rJ w Yn X| j | | | f ƒ q W| j ƒ  x0 | D]( \ } } } | j d | d | j ƒ qv Wd  S)NZlabelZcommand)r   Ú	get_titleÚTclErrorÚ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  j | ƒ d  S)N)r   r   )r   Úcallbackr   r   r   Úregister_callback"   s    zWindowList.register_callbackc             C   s-   y |  j  j | ƒ Wn t k
 r( Yn Xd  S)N)r   ÚremoveÚ
ValueError)r   r   r   r   r   Úunregister_callback%   s    zWindowList.unregister_callbackc             C   sV   xO |  j  D]D } y | ƒ  Wq
 t j ƒ  \ } } } t d | d | ƒ Yq
 Xq
 Wd  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               @   sL   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  j |  | | ƒ t j |  ƒ |  |  _ d  S)N)ÚToplevelr	   Úregistryr   Úfocused_widget)r   ZmasterÚkwr   r   r   r	   <   s    zListedToplevel.__init__c             C   s4   t  j |  ƒ t j |  ƒ t  j s0 |  j ƒ  n  d  S)N)r*   r   r)   Údestroyr   Zquit)r   r   r   r   r-   A   s    	zListedToplevel.destroyc             C   s   t  j ƒ  d  S)N)r*   r
   )r   r   r   r   r   Úupdate_windowlist_registryI   s    z)ListedToplevel.update_windowlist_registryc             C   s
   |  j  ƒ  S)N)Zwm_title)r   r   r   r   r   L   s    zListedToplevel.get_titlec             C   s]   yD |  j  ƒ  d k r, |  j ƒ  |  j ƒ  n  |  j ƒ  |  j j ƒ  Wn t k
 rX Yn Xd  S)NZiconic)Zwm_stateZwm_withdrawZwm_deiconifyZtkraiser+   Z	focus_setr   )r   r   r   r   r   P   s    

zListedToplevel.wakeupN)r%   r&   r'   r	   r-   r.   r   r   r   r   r   r   r(   :   s
   r(   N)Ztkinterr   r*   r   r   r   r)   r(   r   r   r   r   Ú<module>   s   
0				