o
     JAfO.                     @   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 d dlmZmZ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 dS )    )
HTMLParser)abspathdirnameisfilejoin)python_version)ToplevelTextMenu)Frame
Menubutton	ScrollbarStylefont)idleConfc                   @   s8   e Zd Z	 dd ZdddZdd Zdd	 Zd
d ZdS )
HelpParserc                 C   s`   t j| dd || _d| _d| _d| _d| _d| _d| _d| _	d| _
d| _g | _d| _d | _d S )NT)Zconvert_charrefs Fr   )r   __init__texttagschartagsshowhdrlinklevelprehprefix	nested_dl
simplelisttocheaderprevtag)selfr    r#   #/usr/lib/python3.10/idlelib/help.pyr   3   s   
zHelpParser.__init__   c                 C   s8   	 |  j |7  _ | j dkrd| _d S dt| j  | _d S )Nr   r   l)r   strr   )r"   Zamtr#   r#   r$   indentC   s   (zHelpParser.indentc                 C   s  	 d}|D ]
\}}|dkr|}qd}|dkr|dgkrd| _ n|dkr+|dkr+d| _ n|d	krI| jrI| jd
 sI| jdd}|rF| sFdnd}n|dkrU|dkrUd| _n|dkra|dkrad| _n|dkrid| _n|dv r|ddkrzd}d| _nd| _|   np|dkr| j	d
krd| _
nc|dkr| jrdnd}nW|dkr| j
sdnd}d| _
nH|dkr|   d}n=|dkrd| _| j r| jdd d| _n(|dkr|dkrd| _n|d kr|| _n|d!v r| j rd| _| jdd || _| j r| jd|| j| jf d|f| _d S )"Nr   classsection)idZidleTZdivZclearerFpr   zend-1c linestartzend-1cz


spanr   Zversionmodifiedem)ulolsimpleZdlZliz
* z

* ZdtddendpreblockaZ
headerlinkh1)h2h3)r   r!   r   getisspacer   findr   r(   r   r   r   insertr   r   r    )r"   tagZattrsclass_r7   vsZlastliner#   r#   r$   handle_starttagH   sn   

zHelpParser.handle_starttagc                 C   s   	 |dv r)| j r%|dkrdn|dkrdnd}| j|| j | jdf d| _n$|dv r1d| _n|d	kr9d
| _n|dkrDd
| _	d| _n	|dv rM| 
d d
|f| _d S )Nr8   r9   r:   r:   z        r9   z    r   r>   )r.   r/   r7   Fr   )r0   r4   r1   r3   )r   r   appendr    r   indexr   r   r   r   r(   r!   )r"   r?   r(   r#   r#   r$   handle_endtag   s&   
zHelpParser.handle_endtagc                 C   s   	 | j rf| jsh| jr|n|dd}| jdkr0z|d|d | _W n ty/   d| _Y nw | jdv rX| jdkrO|dt| j | jkrO|t| jd  }|  j	|
 7  _	| jd|| j| jf d S d S d S )Nr-    r8   r   r   rD   r5   )r   r   r   replacer   rF   r   
ValueErrorlenr    stripr   r>   r   )r"   datadr#   r#   r$   handle_data   s    



zHelpParser.handle_dataN)r%   )__name__
__module____qualname__r   r(   rC   rG   rO   r#   r#   r#   r$   r   *   s    
:r   c                   @      e Zd Z	 dd Zdd ZdS )HelpTextc           	   
   C   s  	 t jddddd}t jddddd}d| d }tj| |d	d
dd
||d | g d}| g 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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+d,d,d& t| | _t|d-d.}|	 }W d    n1 sw   Y  | j
| d/| d0< d S )1NmainZEditorWindowwidthint)typeheight      Zwordr      )wrapZhighlightthicknessZpadxborderwidthrV   rY   )ZTkDefaultFontZarialZ	helvetica)ZTkFixedFontZmonacoZcourier   r   r/   Zitalicr   r8      Zboldr9      r:      r   z#f6f6ff)r   
backgroundr6   
      r%   Zsolidz#eeffcc)r   lmargin1r^   Zreliefrc   l1)rf   Zlmargin2l22   l3K   l4d   zutf-8)encoding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      s8   

zHelpText.__init__c                 C   st   	 |D ]4}|  dd tj| dD v r$tj|d| d}| d   S |  dd tj| dD v r7|  S qd S )Nc                 s       | ]}|  V  qd S Nlower.0xr#   r#   r$   	<genexpr>   s    z$HelpText.findfont.<locals>.<genexpr>)rootT)nameexistsr   familyc                 s   ry   rz   r{   r}   r#   r#   r$   r      s    )r|   tkfontnamesZFontactualfamilies)r"   r   r   r   r#   r#   r$   rq      s   
zHelpText.findfontN)rP   rQ   rR   r   rq   r#   r#   r#   r$   rT      s    rT   c                   @   rS   )	HelpFramec                 C   s   t | | t| | | _}t|| _d| d< | jjd|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 )Nzhelpframe.TFramestylerc   )rc   )commandZyscrollcommandr   r%   ZweightZnw)rowcolumnstickynsew   ns)r   r   rT   r   r   r   Z	configuretoc_menur   r   yviewscrollsetZrowconfigureZcolumnconfiguregrid)r"   ru   rv   r   r   r   r#   r#   r$   r      s   

zHelpFrame.__init__c                    sR   	 t | dd}t|dd} jjD ]\}}|j||f fdd	d q||d< |S )	NZTOCr   F)Ztearoffc                    s
     | S rz   )r   )dexr   r#   r$   <lambda>   s   
 z$HelpFrame.toc_menu.<locals>.<lambda>)Zlabelr   Zmenu)r   r
   rr   r   Zadd_command)r"   r   r   ZdropZlblr   r#   r   r$   r      s   zHelpFrame.toc_menuN)rP   rQ   rR   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_titleprotocolZdestroyr   r   Zgrid_columnconfigureZgrid_rowconfigure)r"   ru   rv   titler#   r#   r$   r      s   
zHelpWindow.__init__N)rP   rQ   rR   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}|D ]}|| d	  q)W d    n1 s?w   Y  W d    n1 sNw   Y  t|  d
|  d S )NZDocZbuildZhtmlZlibraryz	idle.html	help.htmlrbwb   
z copied to )r   r   r   __file__rs   writerstripprint)srcdstZinnoutliner#   r#   r$   
copy_strip   s    
 r   c                 C   s6   	 t tttd}t|sd S t| |dt   d S )Nr   zIDLE Help (%s))r   r   r   r   r   r   r   )ru   rv   r#   r#   r$   show_idlehelp  s
   r   __main__)rU   zidlelib.idle_test.test_helpr   F)	verbosityexit)runN)!Zhtml.parserr   Zos.pathr   r   r   r   platformr   tkinterr   r	   r
   Ztkinter.ttkr   r   r   r   r   r   Zidlelib.configr   r   rT   r   r   r   r   rP   ZunittestrU   Zidlelib.idle_test.htestr   r#   r#   r#   r$   <module>   s(    ~* 