o
    g#                     @   s   d Z ddlZddlZddlmZmZ ddlmZmZm	Z	m
Z
mZ ddlmZmZmZmZmZmZmZmZmZmZ ddlmZ dd ZG d	d
 d
eZedkrgddlmZ edddd ddlmZ ee dS dS )zAbout Dialog for IDLE

    N)python_versionarchitecture)ToplevelFrameLabelButton
PhotoImage)
SUNKENTOPBOTTOMLEFTXBOTHWEWNSEWE)textviewc                   C   s.   t jdkrt jdkrdS dS t d dd S )zReturn bits for platform.darwinl        Z64Z32r   N   )sysplatformmaxsizer    r   r   H/Users/admin/.pyenv/versions/3.10.0/lib/python3.10/idlelib/help_about.py
build_bits   s   
r   c                   @   sv   e Zd ZdZdddd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dZdddZdS )AboutDialogz!Modal about dialog for idle

    NF)_htest_utestc                C   s   t | | | jdd | d| d | |sdnd f  d| _d| _|   | j	ddd	 | 
|p@d
t  dt  d | | |   | d| j || _| j  | d| j | d| j d| _|| _|sz|   |   dS dS )a  Create popup, do not return until tk widget destroyed.

        parent - parent of this dialog
        title - string which is title of popup dialog
        _htest - bool, change box location when running htest
        _utest - bool, don't wait_window when running unittest
           )borderwidthz+%d+%d   d   z#bbbbbbz#000000F)heightwidthzAbout IDLE z (z bit)ZWM_DELETE_WINDOWz<Return>z<Escape>N)r   __init__Z	configureZgeometryZwinfo_rootxZwinfo_rootybgfgcreate_widgetsZ	resizabletitler   r   Z	transientZgrab_setprotocolokparent	button_okZ	focus_setbind_current_textviewr   Z	deiconifyZwait_window)selfr,   r)   r   r   r   r   r   r%      s4   


zAboutDialog.__init__c                 C   s  t | dtd}t | }|jttd |jtdtd t|d| jd| _	| j	jddd	 t || j
d
}|jdtd t|d| j| j
dd}|jddtddd | jdd}|dkr[dnd}tjtjtjtdd| }t|  |d| _t|| j| j
d}|jddtdddd d}	t||	t| j| j
d}
|
jddtdddd t|d t| j| j
d}|jd!ddtddd" t|d#t d d  d$ t| j| j
d}|jd%ddtddd" t |d&td| j
d'jd(dtdddd t|d)t  | j| j
d*}|jd+dtddd t|d,| | j| j
d*}|jd+d&tddd t || j
d
}|jdddtd- t|d.d(| j
| jd/| _ | j jtddd0 t|d1d(| j
| j!d/| _"| j"jtddd0 t|d2d(| j
| j#d/| _$| j$jtddd0 t |d&td| j
d'jd3dtdddd t|d4t  | j| j
d*}|jd5dtddd t || j
d
}|jd6ddtd- t|d7d(| j
| j%d/| _&| j&jtddd0 t|d8d(| j
| j'd/| _(| j(jtddd0 t|d2d(| j
| j)d/| _*| j*jtddd0 d S )9Nr   )r    relief)sidefillT)r2   expandr3   Close)textcommandr   )padxpady)r&   )r4   r3   ZIDLE)Zcourier   Zbold)r6   r'   r&   Zfontr   
   )rowcolumnstickyr8   r9   infoZ
patchlevelz8.6z.pngz.gifZIconsZidle_48)Zmasterfile)Zimager&   )r<   r=   r>   Zrowspanr8   r9   z=Python's Integrated Development
and Learning Environment




)r6   Zjustifyr'   r&      )r<   r=   r>   
columnspanr8   r9   zemail:  idle-dev@python.org   )r<   r=   rB   r>   r8   r9   zhttps://docs.python.org/z/library/idle.html      )r    r1   r#   r&      zPython version:  )r6   r'   r&   	   zTk version:  )r<   r=   rB   r>   ZLicense)r6   r$   Zhighlightbackgroundr7   )r2   r8   r9   Z	CopyrightZCredits   zIDLE version:         ZREADMEZNEWS)+r   r	   packr   r   r
   r   r   r+   r-   r&   r   r'   Zgridr   Ztkcallospathjoinabspathdirname__file__r   _rootZ
icon_imager   r   r   r   r   show_py_licenseZ
py_licenseshow_py_copyrightZpy_copyrightshow_py_creditsZ
py_creditsshow_readmeZreadmeshow_idle_newsZ	idle_newsshow_idle_creditsZidle_credits)r0   frameZframe_buttonsZframe_backgroundheaderZtk_patchlevelextZiconZlogoZbyline_textZbylineZemailZdocsZpyverZtkverZ
py_buttonsZidleverZidle_buttonsr   r   r   r(   <   s   




zAboutDialog.create_widgetsc                 C      |  dt dS )zHandle License button event.zAbout - LicenseN)display_printer_textlicenser0   r   r   r   rT         zAboutDialog.show_py_licensec                 C   r]   )zHandle Copyright button event.zAbout - CopyrightN)r^   	copyrightr`   r   r   r   rU      ra   zAboutDialog.show_py_copyrightc                 C   r]   )z#Handle Python Credits button event.zAbout - Python CreditsN)r^   creditsr`   r   r   r   rV      ra   zAboutDialog.show_py_creditsc                 C      |  ddd dS )z!Handle Idle Credits button event.zAbout - CreditszCREDITS.txtutf-8Ndisplay_file_textr`   r   r   r   rY         zAboutDialog.show_idle_creditsc                 C   rd   )zHandle Readme button event.zAbout - Readmez
README.txtasciiNrf   r`   r   r   r   rW      rh   zAboutDialog.show_readmec                 C   rd   )zHandle News button event.zAbout - NEWSzNEWS.txtre   Nrf   r`   r   r   r   rX      rh   zAboutDialog.show_idle_newsc                 C   s.   |   d|j}tj| ||| jd| _dS )a  Create textview for built-in constants.

        Built-in constants have type _sitebuiltins._Printer.  The
        text is extracted from the built-in and then sent to a text
        viewer with self as the parent and title as the title of
        the popup.
        
r   N)_Printer__setuprO   _Printer__linesr   Z	view_textr   r/   )r0   r)   Zprinterr6   r   r   r   r^      s
   
z AboutDialog.display_printer_textc                 C   s:   t jt jt jt|}tj| |||| jd| _	dS )zCreate textview for filename.

        The filename needs to be in the current directory.  The path
        is sent to a text viewer with self as the parent, title as
        the title of the popup, and the file encoding.
        rk   N)
rM   rN   rO   rP   rQ   rR   r   Z	view_filer   r/   )r0   r)   filenameencodingfnr   r   r   rg      s   zAboutDialog.display_file_textc                 C   s   |    |   dS )zDismiss help_about dialog.N)Zgrab_releaseZdestroy)r0   eventr   r   r   r+      s   zAboutDialog.ok)N)__name__
__module____qualname____doc__r%   r(   rT   rU   rV   rY   rW   rX   r^   rg   r+   r   r   r   r   r      s    "V
r   __main__)mainz!idlelib.idle_test.test_help_aboutr   F)	verbosityexit)run)ru   rM   r   r   r   r   tkinterr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Zidlelibr   r   r   rr   Zunittestrw   Zidlelib.idle_test.htestrz   r   r   r   r   <module>   s     0 5