o
    g%                     @   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r]d dlmZ ed d!d" dS dS )#    )
expanduserN)platformc                  C   sn   	 t dkr3t } | jdd}d|v rdand|vrdand| jd	d
dv r+danda|   d S 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   D/Users/admin/.pyenv/versions/3.10.0/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   
isCarbonTk-   s   r   c                   C   r   )Nr	   r   r   r   r   r   	isCocoaTk6      r   c                   C   r   )Nr   r   r   r   r   r   	isXQuartz>   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   tkVersionWarningG   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   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 d S  tjy   Y d S w )NZconsolehide)r   r   r   ZTclErrorr   r   r   r   hideTkConsole   s
   r1   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         )menur5   )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<   r?   r4   r   r   postwindowsmenu   s   
z)overrideRootMenu.<locals>.postwindowsmenuc                       	 ddl m} |  d S )Nr   )
help_about)idlelibrD   ZAboutDialog)eventrD   r0   r   r   about_dialog      z&overrideRootMenu.<locals>.about_dialogc                    s&   	 ddl m}  j_|d d S )Nr   )configdialogZSettings)rE   rI   ZinversedictZinstance_dictZConfigDialog)rF   rI   )r+   r   r   r   config_dialog   s   z'overrideRootMenu.<locals>.config_dialogc                    rC   )Nr   )help)rE   rK   Zshow_idlehelp)rF   rK   r0   r   r   help_dialog   rH   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 IDLErM   ZtkAboutDialogz::tk::mac::ShowHelpr'   )r   r2   rE   r3   r5   ZmenudefsinsertZ	configureZadd_cascadeZregister_callbackbindr-   Zclose_all_callbackr   r   )r   r+   r2   r3   Z	closeItemZmenubarZmenudictr<   rB   rG   rJ   rL   r   )r+   r   r5   r   overrideRootMenu   sR   
rQ   c                 C   s*   	 |  dd |  dd |  dd d S )NZTextz<B2>z<B2-Motion>z<<PasteSelection>>)Zunbind_classr0   r   r   r   fixb2context   s   rR   c                 C   s4   	 t  rt|  t| | t| | t|  d S d S r'   )r   r1   rQ   r.   rR   )r   r+   r   r   r   setupApp  s   

rS   __main__)mainzidlelib.idle_test.test_macosxr;   )	verbosity)Zos.pathr   r    sysr   r   r   r   r   r   r   r   r   r#   r&   r.   r1   rQ   rR   rS   __name__ZunittestrU   r   r   r   r   <module>   s.    		h
