3
tY]#                 @   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rddlmZ edddd ddlmZ ee 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   s2   t jdkrt jdkrdS dS t d dd S dS )	zReturn bits for platform.darwin       Z64Z32r   Nl        )sysplatformmaxsizer    r   r   #lib/python3.6/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| | | jdd | jd|j d |j |s6dnd f  d| _d| _| j  | j	ddd	 | j
|pd
t  dt  d | j| | j  | jd| j || _| jj  | jd| j | jd| j d| _|| _|s| j  | j  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_setZprotocolokparent	button_okZ	focus_setZbind_current_textviewr   Z	deiconifyZwait_window)selfr,   r*   r   r   r   r   r   r&      s.    


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jdd}|dkrdnd}tjjtjjtjjtdd| }t| j |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d0 t|d1d+| j
| jd2| _ | j jtddd3 t|d4d+| j
| j!d2| _"| j"jtddd3 t|d5d+| j
| j#d2| _$| j$jtddd3 t |d)td| j
d*jd6dtd!ddd" t|d7t  | j| j
d-}|jd8dtddd t || j
d
}|jd9dd!td0 t|d:d+| j
| j%d2| _&| j&jtddd3 t|d;d+| j
| j'd2| _(| j(jtddd3 t|d5d+| j
| j)d2| _*| j*jtddd3 d S )?Nr   )r!   relief)sidefillT)r1   expandr2   ZClose)textcommandr    )padxpady)r'   )r3   r2   ZIDLEcourier   bold)r4   r(   r'   Zfontr   
   )rowcolumnstickyr6   r7   infoZ
patchlevelz8.6z.pngz.gifZIconsZidle_48)Zmasterfile)Zimager'   )r<   r=   r>   Zrowspanr6   r7   z8Python's Integrated Development
and Learning Environment
)r4   Zjustifyr(   r'      )r<   r=   r>   
columnspanr6   r7   zemail:  idle-dev@python.org   )r<   r=   rC   r>   r6   r7   zhttps://docs.python.org/z/library/idle.html      )r!   r0   r$   r'      zPython version:  )r4   r(   r'   	   zTk version:  )r<   r=   rC   r>   ZLicense)r4   r%   Zhighlightbackgroundr5   )r1   r6   r7   Z	CopyrightZCredits   zIDLE version:         ZREADMEZNEWS)r8   r9   r:   z




z=Python's Integrated Development
and Learning Environment




)+r   r	   Zpackr   r   r
   r   r   r+   r-   r'   r   r(   Zgridr   ZtkZcallospathjoinabspathdirname__file__r   Z_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)r/   frameZframe_buttonsZframe_backgroundheaderZtk_patchlevelZextZiconZlogoZbyline_textZbylineZemailZdocsZpyverZtkverZ
py_buttonsZidleverZidle_buttonsr   r   r   r)   <   s    

zAboutDialog.create_widgetsc             C   s   | j dt dS )zHandle License button event.zAbout - LicenseN)display_printer_textlicense)r/   r   r   r   rR      s    zAboutDialog.show_py_licensec             C   s   | j dt dS )zHandle Copyright button event.zAbout - CopyrightN)rZ   	copyright)r/   r   r   r   rS      s    zAboutDialog.show_py_copyrightc             C   s   | j dt dS )z#Handle Python Credits button event.zAbout - Python CreditsN)rZ   credits)r/   r   r   r   rT      s    zAboutDialog.show_py_creditsc             C   s   | j ddd dS )z!Handle Idle Credits button event.zAbout - CreditszCREDITS.txtzutf-8N)display_file_text)r/   r   r   r   rW      s    zAboutDialog.show_idle_creditsc             C   s   | j ddd dS )zHandle Readme button event.zAbout - Readmez
README.txtasciiN)r^   )r/   r   r   r   rU      s    zAboutDialog.show_readmec             C   s   | j ddd dS )zHandle News button event.zAbout - NEWSzNEWS.txtzutf-8N)r^   )r/   r   r   r   rV      s    zAboutDialog.show_idle_newsc             C   s.   |j   dj|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.
        rA   )r   N)_Printer__setuprN   _Printer__linesr   Z	view_textr   r.   )r/   r*   Zprinterr4   r   r   r   rZ      s    z AboutDialog.display_printer_textc             C   s:   t jjt jjt j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.
        )r   N)
rL   rM   rN   rO   rP   rQ   r   Z	view_filer   r.   )r/   r*   filenameencodingfnr   r   r   r^      s    zAboutDialog.display_file_textc             C   s   | j   | j  dS )zDismiss help_about dialog.N)Zgrab_releaseZdestroy)r/   Zeventr   r   r   r+      s    zAboutDialog.ok)N)N)N)__name__
__module____qualname____doc__r&   r)   rR   rS   rT   rW   rU   rV   rZ   r^   r+   r   r   r   r   r      s   "V
r   __main__)mainz!idlelib.idle_test.test_help_aboutr   F)	verbosityexit)run)rh   rL   r   r   r   r   Ztkinterr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   Zidlelibr   r   r   re   Zunittestrj   Zidlelib.idle_test.htestrm   r   r   r   r   <module>   s   0 5