o
    EXh'                     @   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   s   	 t dkrVddlm}  | r(ddlm}m} z|d W n |y'   daY d S w t }|j	
dd}d	|v r:d
and|vrAdand|j	
dddv rNdanda|  d S dad S )Ndarwinr   )testing)requiresResourceDeniedZguicocoatkZwindowingsystemZx11xquartzZaquaotherZAppKitZwinfoZserver.carbon)r   Zidlelib.__init__r   Ztest.supportr   r   _tk_typetkinterZTkr	   callZdestroy)r   r   r   rootws r   8/opt/python-3.10.19/usr/lib/python3.10/idlelib/macosx.py_init_tk_type   s0   r   c                   C   s   	 t st  t dkpt dkS )Nr   r   r   r   r   r   r   r   isAquaTk3   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   	isCocoaTkD      r   c                   C   r   )Nr
   r   r   r   r   r   	isXQuartzL   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   tkVersionWarningU   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   readSystemPreferencesj   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   preferTabsPreferenceWarningy   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   r1   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
   r4   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         )menur8   )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?   rB   r7   r   r   postwindowsmenu   s   
z)overrideRootMenu.<locals>.postwindowsmenuc                       	 ddl m} |  d S )Nr   )
help_about)idlelibrG   ZAboutDialog)eventrG   r3   r   r   about_dialog      z&overrideRootMenu.<locals>.about_dialogc                    s&   	 ddl m}  j_|d d S )Nr   )configdialogZSettings)rH   rL   ZinversedictZinstance_dictZConfigDialog)rI   rL   )r.   r   r   r   config_dialog   s   z'overrideRootMenu.<locals>.config_dialogc                    rF   )Nr   )help)rH   rN   Zshow_idlehelp)rI   rN   r3   r   r   help_dialog   rK   z%overrideRootMenu.<locals>.help_dialog<<about-idle>>z<<open-config-dialog>>z::tk::mac::ShowPreferencesz<<close-all-windows>>exitZappleZapplicationZIDLE)rA   r?   )z
About IDLErP   ZtkAboutDialogz::tk::mac::ShowHelpr*   )r   r5   rH   r6   r8   ZmenudefsinsertZ	configureZadd_cascadeZregister_callbackbindr0   Zclose_all_callbackr   r   )r   r.   r5   r6   Z	closeItemZmenubarZmenudictr?   rE   rJ   rM   rO   r   )r.   r   r8   r   overrideRootMenu   sR   
rT   c                 C   s*   	 |  dd |  dd |  dd d S )NZTextz<B2>z<B2-Motion>z<<PasteSelection>>)Zunbind_classr3   r   r   r   fixb2context
  s   rU   c                 C   s4   	 t  rt|  t| | t| | t|  d S d S r*   )r   r4   rT   r1   rU   )r   r.   r   r   r   setupApp  s   

rV   __main__)mainzidlelib.idle_test.test_macosxr>   )	verbosity)Zos.pathr   r#   sysr   r   r   r   r   r   r   r   r    r&   r)   r1   r4   rT   rU   rV   __name__ZunittestrX   r   r   r   r   <module>   s.    #		h
