o
     JAf&                     @   s   	 d dl mZ d dlZd dlmZ d dlmZ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red d lmZ ed!d"d# dS dS )$    )
expanduserN)platform)requiresResourceDeniedc                  C   s   	 t dkrFztd W n ty   daY d S w t } | jdd}d|v r*dand|vr1d	and
| jdddv r>danda|   d S d	ad S )NdarwinZguicocoatkZwindowingsystemZx11xquartzZaquaotherZAppKitZwinfoZserver.carbon)	r   r   r   _tk_typetkinterZTkr   callZdestroy)rootws r   %/usr/lib/python3.10/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      	 t st  t dkS )Nr   r   r   r   r   r   
isCarbonTk1   s   r   c                   C   r   )Nr   r   r   r   r   r   	isCocoaTk:      r   c                   C   r   )Nr	   r   r   r   r   r   	isXQuartzB   r   r   c                 C   s0   	 t  r| jdd}|dvr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   tkVersionWarningK   s   r   c                  C   sh   	 t dkrd S td} zt| d}t|W  d    W S 1 s"w   Y  W d S  ty3   Y d S w )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   s0   	 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   preferTabsPreferenceWarningo   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   r0   c                 C   s,   z
| j dd W d S  tjy   Y d S w )NZconsolehide)r   r   r   ZTclErrorr   r   r   r   hideTkConsole   s
   r3   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|
  r
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 d S )%Nr   )Menu)mainmenuwindow         )menur7   )nameZtearoffZWindow)labelr>   Z	underlinec                    s8   |  d}|d u rd}|dkr| d|  |  d S )Nendr<   r   )indexdeleteZadd_windows_to_menu)r>   rA   r6   r   r   postwindowsmenu   s   
z)overrideRootMenu.<locals>.postwindowsmenuc                       	 ddl m} |  d S )Nr   )
help_about)idlelibrF   ZAboutDialog)eventrF   r2   r   r   about_dialog      z&overrideRootMenu.<locals>.about_dialogc                    s&   	 ddl m}  j_|d d S )Nr   )configdialogZSettings)rG   rK   ZinversedictZinstance_dictZConfigDialog)rH   rK   )r-   r   r   r   config_dialog   s   z'overrideRootMenu.<locals>.config_dialogc                    rE   )Nr   )help)rG   rM   Zshow_idlehelp)rH   rM   r2   r   r   help_dialog   rJ   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 IDLErO   ZtkAboutDialogz::tk::mac::ShowHelpr)   )r   r4   rG   r5   r7   ZmenudefsinsertZ	configureZadd_cascadeZregister_callbackbindr/   Zclose_all_callbackr   r   )r   r-   r4   r5   Z	closeItemZmenubarZmenudictr>   rD   rI   rL   rN   r   )r-   r   r7   r   overrideRootMenu   sR   
rS   c                 C   s*   	 |  dd |  dd |  dd d S )NZTextz<B2>z<B2-Motion>z<<PasteSelection>>)Zunbind_classr2   r   r   r   fixb2context   s   rT   c                 C   s4   	 t  rt|  t| | t| | t|  d S d S r)   )r   r3   rS   r0   rT   )r   r-   r   r   r   setupApp
  s   

rU   __main__)mainzidlelib.idle_test.test_macosxr=   )	verbosity)Zos.pathr   r"   sysr   Ztest.supportr   r   r   r   r   r   r   r   r   r   r%   r(   r0   r3   rS   rT   rU   __name__ZunittestrW   r   r   r   r   <module>   s0    		h
