B
    2*\&                 @   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|kr,dan,d|kr:dand| jd	d
dk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)rootZws r   9C:\ALexclude\prg\programme\Python37\Lib\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   r   
isCarbonTk-   s    r   c               C   s   t s
t  t dkS )Nr	   )r   r   r   r   r   r   	isCocoaTk6   s    r   c               C   s   t s
t  t dkS )Nr   )r   r   r   r   r   r   	isXQuartz>   s    r   c             C   s2   t  r*| jdd}|dk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 http://www.python.org/download/mac/tcltk/ for current information.)r   r   r   format)r   r   r   r   r   tkVersionWarningG   s    	r   c           	   C   sN   t dkrd S td} y t| d}t|S Q R X W n tk
rH   d S X 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   x| D ]}  | qW 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.   y| j dd W n tjk
r(   Y nX d S )NZconsoleZ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         )menur,   )nameZtearoffZWindow)labelr3   Z	underlinec                s8   |  d}|d krd}|dkr*| d|  |  d S )Nendr1   r   )indexdeleteZadd_windows_to_menu)r3   r6   )r,   r   r   postwindowsmenu   s    
z)overrideRootMenu.<locals>.postwindowsmenuc                s   ddl m} |  d S )Nr   )
help_about)idlelibr:   ZAboutDialog)eventr:   )r   r   r   about_dialog   s    z&overrideRootMenu.<locals>.about_dialogc                s$   ddl m}  j_|d d S )Nr   )configdialogZSettings)r;   r>   ZinversedictZinstance_dictZConfigDialog)r<   r>   )r%   r   r   r   config_dialog   s    z'overrideRootMenu.<locals>.config_dialogc                s   ddl m} |  d S )Nr   )help)r;   r@   Zshow_idlehelp)r<   r@   )r   r   r   help_dialog   s    z%overrideRootMenu.<locals>.help_dialogz<<about-idle>>z<<open-config-dialog>>z::tk::mac::ShowPreferencesz<<close-all-windows>>exitZappleZapplicationZIDLE)r5   r3   )z
About IDLEz<<about-idle>>ZtkAboutDialogz::tk::mac::ShowHelp)N)N)N)r   r*   r;   r+   r,   ZmenudefsinsertZ	configureZadd_cascadeZregister_callbackZbindr'   Zclose_all_callbackr   r   )r   r%   r*   r+   Z	closeItemZmenubarZmenudictr3   r9   r=   r?   rA   r   )r%   r   r,   r   overrideRootMenu   sH    

rD   c             C   s(   |  dd |  dd |  dd d S )NZTextz<B2>z<B2-Motion>z<<PasteSelection>>)Zunbind_class)r   r   r   r   fixb2context   s    rE   c             C   s.   t  r*t|  t| | t| | t|  d S )N)r   r)   rD   r(   rE   )r   r%   r   r   r   setupApp  s
    

rF   __main__)mainzidlelib.idle_test.test_macosxr2   )	verbosity)Zos.pathr   r   sysr   r   r   r   r   r   r   r   r   r   r"   r(   r)   rD   rE   rF   __name__ZunittestrH   r   r   r   r   <module>   s(   		h
