a
    ze%                     @   s   d dl mZ d dlZd dlmZ d dlZdadd Zdd Zdd	 Z	d
d Z
dd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zedkrd dlmZ ed d!d" dS )#    )
expanduserN)platformc                  C   sj   t dkrbt } | jdd}d|v r,dan,d|vr:dand| jd	d
dv rTdanda|   ndad S )NdarwintkZwindowingsystemZx11xquartzZaquaotherZAppKitZwinfoZserver.cocoacarbon)r   tkinterZTkr   call_tk_typeZdestroy)rootws r   $/usr/lib/python3.9/idlelib/macosx.py_init_tk_type   s    
r   c                   C   s   t s
t  t dkpt dkS )Nr	   r
   r   r   r   r   r   r   isAquaTk%   s    r   c                   C   s   t s
t  t dkS )Nr
   r   r   r   r   r   
isCarbonTk-   s    r   c                   C   s   t s
t  t dkS )Nr	   r   r   r   r   r   	isCocoaTk6   s    r   c                   C   s   t s
t  t dkS )Nr   r   r   r   r   r   	isXQuartz>   s    r   c                 C   s2   t  r*| jdd}|dvr dS d|S dS d S )Ninfo
patchlevel)z8.5.7z8.5.9FzWARNING: The version of Tcl/Tk ({0}) in use may be unstable.
Visit https://www.python.org/download/mac/tcltk/ for current information.)r   r   r   format)r   r   r   r   r   tkVersionWarningG   s    	r   c                  C   sh   t dkrd S td} z:t| d}t|W  d    W S 1 sB0    Y  W n tyb   Y d S 0 d S )Nr   z.~/Library/Preferences/.GlobalPreferences.plistrb)r   r   openplistlibloadOSError)Z
plist_pathZ
plist_filer   r   r   readSystemPreferences\   s    .r!   c                  C   s,   t dkrd S t } | r(| ddkr(dS d S )Nr   ZAppleWindowTabbingModealwayszWARNING: The system preference "Prefer tabs when opening documents" is set to "Always". This will cause various problems with IDLE. For the best experience, change this setting when running IDLE (via System Preferences -> Dock).)r   r!   get)Zprefsr   r   r   preferTabsPreferenceWarningk   s    r$   c                    s    fdd}|  d| d S )Nc                     s   | D ]}  | qd S N)r   )argsfnflistr   r   
doOpenFile   s    z'addOpenEventSupport.<locals>.doOpenFilez::tk::mac::OpenDocument)createcommand)r   r)   r*   r   r(   r   addOpenEventSupport   s    r,   c                 C   s,   z| j dd W n tjy&   Y n0 d S )NZconsolehide)r   r   r   ZTclErrorr   r   r   r   hideTkConsole   s    r/   c                    s  ddl m} ddlm} ddlm |jd d d }|jd d dd = |jd d d| |jd	 d dd
= |jd d dd
= |}j|d i }||ddd |d< }|jd|dd |ffdd	}	| d$fdd	}	d% fdd	}
d&fdd	}
d|	 
d|
 d|
  rR
d j d j t r||ddd |d< }|jd|d  |jddd!d gf t rĈd"|	 d#| |jd	 d d= d S )'Nr   )Menu)mainmenuwindow         )menur3   )nameZtearoffZWindow)labelr:   Z	underlinec                    s8   |  d}|d u rd}|dkr*| d|  |  d S )Nendr8   r   )indexdeleteZadd_windows_to_menu)r:   r=   r2   r   r   postwindowsmenu   s    
z)overrideRootMenu.<locals>.postwindowsmenuc                    s   ddl m} |  d S )Nr   )
help_about)idlelibrA   ZAboutDialog)eventrA   r.   r   r   about_dialog   s    z&overrideRootMenu.<locals>.about_dialogc                    s$   ddl m}  j_|d d S )Nr   )configdialogZSettings)rB   rE   ZinversedictZinstance_dictZConfigDialog)rC   rE   )r)   r   r   r   config_dialog   s    z'overrideRootMenu.<locals>.config_dialogc                    s   ddl m} |  d S )Nr   )help)rB   rG   Zshow_idlehelp)rC   rG   r.   r   r   help_dialog   s    z%overrideRootMenu.<locals>.help_dialog<<about-idle>>z<<open-config-dialog>>z::tk::mac::ShowPreferencesz<<close-all-windows>>exitZappleZapplicationZIDLE)r<   r:   )z
About IDLErI   ZtkAboutDialogz::tk::mac::ShowHelp)N)N)N)r   r0   rB   r1   r3   ZmenudefsinsertZ	configureZadd_cascadeZregister_callbackbindr+   Zclose_all_callbackr   r   )r   r)   r0   r1   Z	closeItemZmenubarZmenudictr:   r@   rD   rF   rH   r   )r)   r   r3   r   overrideRootMenu   sN    
rM   c                 C   s(   |  dd |  dd |  dd d S )NTextz<B2>z<B2-Motion>z<<PasteSelection>>)Zunbind_classr.   r   r   r   fixb2context   s    rO   c                 C   s.   t  r*t|  t| | t| | t|  d S r%   )r   r/   rM   r,   rO   )r   r)   r   r   r   setupApp  s
    

rP   __main__)mainzidlelib.idle_test.test_macosxr9   )	verbosity)Zos.pathr   r   sysr   r   r   r   r   r   r   r   r   r!   r$   r,   r/   rM   rO   rP   __name__ZunittestrR   r   r   r   r   <module>   s(   		h
