B
    v9a>,                 @   s   d dl mZ d dlmZmZmZmZ d dlmZ d dl	m
Z
mZmZmZ d dlmZmZ d dl	mZ d dlmZ G dd	 d	eZG d
d deZG dd deZG dd de
Zdd Zdd Zedkrd dlmZ edddd d dlmZ ee dS )    )
HTMLParser)abspathdirnameisfilejoin)python_version)ToplevelFrameTextMenu)
Menubutton	Scrollbar)font)idleConfc               @   s6   e Zd Zdd ZdddZdd Zdd	 Zd
d ZdS )
HelpParserc             C   sZ   t j| dd || _d| _d| _d| _d| _d| _d| _d| _	d| _
d| _g | _d| _d S )NT)Zconvert_charrefs Fr   )r   __init__texttagschartagsshowhdrlinklevelprehprefix	nested_dl
simplelisttocheader)selfr    r    /usr/lib/python3.7/help.pyr   3   s    zHelpParser.__init__   c             C   s0   |  j |7  _ | j dkrdndt| j  | _d S )Nr   r   l)r   strr   )r   amtr    r    r!   indentB   s    zHelpParser.indentc             C   s
  d}x|D ]\}}|dkr
|}q
W d}|dkr@|dkr@d| _ n|dkrZ|dkrZd| _ n|dkrr|d	krrd
}nt|dkr|dkrd| _nZ|dkr|dkrd| _n@|dkrd| _n.|dkr|ddkrd}d| _nd| _|   n|dkr| jdkrd| _n|dkr$| jrdnd}n|dkrF| js:d
nd}d| _n|dkr^|   d}n|dkrd| _| j r| j	dd
 d| _
nZ|dkr|dkrd| _n>|dkr|| _
n,|dkr| j rd| _| j	dd
 || _
| j r| j	d|| j
| jf d S ) Nr   classZdivsectionTZsphinxsidebarFpfirstz

spanr   Zversionmodifiedem)ulolZsimple
Zdlr   Zliz
* z

* ZdtddendpreblockaZ
headerlinkh1)h2h3)r   r   findr   r&   r   r   r   r   insertr   r   r   )r   tagZattrsclass_r4   vsr    r    r!   handle_starttagF   sd    












zHelpParser.handle_starttagc             C   s   |dkrT|  d | jr|dkr$dn|dkr0dnd}| j|| j | jdf nJ|d	krdd| _n:|d
krtd| _n*|dkrd| _	d| _
n|dkr| j dd d S )N)r5   r6   r7   r   r7   z        r6   z    r   r9   )r+   r,   r4   Fr   )r-   r1   r.   r/   )r%   )r&   r   r   appendr   r   indexr   r   r   r   )r   r:   r&   r    r    r!   handle_endtag|   s     
 zHelpParser.handle_endtagc             C   s   | j r| js| jr|n
|dd}| jdkr`y|d|d | _W n tk
r^   d| _Y nX | jdkr| jdkr|dt| j | jkr|t| jd  }|  j	|
 7  _	| jd|| j| jf d S )Nr0    r5   r   r   )r5   r6   r7   r2   )r   r   r   replacer   r@   r   
ValueErrorlenr   stripr   r9   r   )r   datadr    r    r!   handle_data   s    


zHelpParser.handle_dataN)r"   )__name__
__module____qualname__r   r&   r>   rA   rI   r    r    r    r!   r   *   s
   	
6r   c               @   s   e Zd Zdd Zdd ZdS )HelpTextc       	   
   C   sv  t jddddd}t jddddd}d| d }tj| |d	d
dd
||d | dddg}| dddg}|df| d< | jd|ddfd | jd|ddfd | jd|ddfd | jd|ddfd | jd|dfd d! | jd"|d#fd$d%d&d'd( | jd)d$d$d* | jd+d,d,d* | jd-d.d.d* | jd/d0d0d* t| | _t|d1d2}|	 }W d Q R X | j
| d3| d4< d S )5NmainZEditorWindowwidthint)typeheight      Zwordr      )wrapZhighlightthicknessZpadxborderwidthrO   rR   ZTkDefaultFontZarialZ	helveticaZTkFixedFontZmonacoZcourier   r   r,   Zitalic)r   r5      Zboldr6      r7      r   z#f6f6ff)r   
backgroundr3   
      r"   Zsolidz#eeffcc)r   lmargin1rW   Zreliefr\   l1)r_   Zlmargin2l22   l3K   l4d   zutf-8)encodingZdisabledstate)r   Z	GetOptionr
   r   findfontZtag_configurer   parseropenreadZfeed)	r   parentfilenameZuwideZuhighZ
normalfontZ	fixedfontfcontentsr    r    r!   r      s0    
zHelpText.__init__c             C   sn   xh|D ]`}|  dd tj| dD krDtj|d| d}| d S |  dd tj| dD kr|S qW d S )Nc             s   s   | ]}|  V  qd S )N)lower).0xr    r    r!   	<genexpr>   s    z$HelpText.findfont.<locals>.<genexpr>)rootT)nameexistsru   Zfamilyc             s   s   | ]}|  V  qd S )N)rq   )rr   rs   r    r    r!   rt      s   )rq   tkfontnamesZFontactualZfamilies)r   ry   rv   r   r    r    r!   ri      s    
zHelpText.findfontN)rJ   rK   rL   r   ri   r    r    r    r!   rM      s   rM   c               @   s   e Zd Zdd Zdd ZdS )	HelpFramec             C   s   t | | t| | | _}|d | d< | | | _}t| |jd | _}|j	|d< | j
ddd | jddd |jdddd |jddd	d |jdd
dd d S )Nr\   )commandZyscrollcommandr   r"   )weightZnw)rowcolumnstickynsew   ns)r	   r   rM   r   toc_menur   r   yviewscrollsetZrowconfigureZcolumnconfiguregrid)r   rm   rn   r   r   r   r    r    r!   r      s    
zHelpFrame.__init__c                sT   t | dd}t|dd}x. jjD ]"\}}|j||f fdd	d q"W ||d< |S )	NZTOC)r   F)Ztearoffc                s
     | S )N)r   )dex)r   r    r!   <lambda>       z$HelpFrame.toc_menu.<locals>.<lambda>)Zlabelr|   Zmenu)r   r   rj   r   Zadd_command)r   r   r   ZdropZlblr   r    )r   r!   r      s    zHelpFrame.toc_menuN)rJ   rK   rL   r   r   r    r    r    r!   r{      s   r{   c               @   s   e Zd Zdd ZdS )
HelpWindowc             C   sZ   t | | | | | d| j t| |jdddd | jddd | jddd d S )NZWM_DELETE_WINDOWr   r   )r   r~   r   r"   )r}   )	r   r   Zwm_titleZprotocolZdestroyr{   r   Zgrid_columnconfigureZgrid_rowconfigure)r   rm   rn   titler    r    r!   r      s    
zHelpWindow.__init__N)rJ   rK   rL   r   r    r    r    r!   r      s   r   c           
   C   s   t tttttddddd} t tttd}t| d<}t|d&}x|D ]}|| d	  qRW W d Q R X W d Q R X t|  d
|  d S )NZDocZbuildZhtmlZlibraryz	idle.htmlz	help.htmlrbwb   
z copied to )r   r   r   __file__rk   writerstripprint)srcdstZinnoutliner    r    r!   
copy_strip   s    
*r   c             C   s4   t tttd}t|sd S t| |dt   d S )Nz	help.htmlzIDLE Help (%s))r   r   r   r   r   r   r   )rm   rn   r    r    r!   show_idlehelp  s    r   __main__)rN   zidlelib.idle_test.test_helpr   F)	verbosityexit)runN) Zhtml.parserr   Zos.pathr   r   r   r   platformr   Ztkinterr   r	   r
   r   Ztkinter.ttkr   r   r   rx   Zidlelib.configr   r   rM   r{   r   r   r   rJ   ZunittestrN   Zidlelib.idle_test.htestr   r    r    r    r!   <module>   s"   v* 