o
    gK.                     @   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#   B/Users/admin/.pyenv/versions/3.10.0/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krd| _ n|dkr*|dkr*d| _ n|dkrH| jrH| jd	 sH| jd
d}|rE| sEdnd}n|dkrT|dkrTd| _n|dkr`|dkr`d| _n|dkrhd| _n|dv r|ddkryd}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   classZdivZsectionTZsphinxsidebarF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"   tagattrsZclass_r5   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r6   r7   r8   r8   z        r7   z    r   r<   )r,   r-   r5   Fr   )r.   r2   r/   r1   )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+    r6   r   r   rB   r3   )r   r   r   replacer   rD   r   
ValueErrorlenr    stripr   r<   r   )r"   datadr#   r#   r$   handle_data   s"   



zHelpParser.handle_dataN)r%   )__name__
__module____qualname__r   r(   rA   rE   rM   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      )ZwrapZhighlightthicknessZpadxborderwidthrT   rW   )ZTkDefaultFontZarialZ	helvetica)ZTkFixedFontZmonacoZcourier   r   r-   Zitalicr   r6      Zboldr7      r8      r   z#f6f6ff)r   
backgroundr4   
      r%   Zsolidz#eeffcc)r   lmargin1r[   Zreliefr`   l1)rc   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   rv   rw   rx   rz   r#   r#   r$   r}      s    )ry   tkfontnamesZFontactualfamilies)r"   r   r   r   r#   r#   r$   rn      s   
zHelpText.findfontN)rN   rO   rP   r   rn   r#   r#   r#   r$   rR      s    rR   c                   @   rQ   )	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styler`   )r`   )commandZyscrollcommandr   r%   ZweightZnw)rowcolumnstickynsew   ns)r   r   rR   r   r   r   Z	configuretoc_menur   r   yviewscrollsetZrowconfigureZcolumnconfiguregrid)r"   rr   rs   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 rw   )r   )dexr   r#   r$   <lambda>   s   
 z$HelpFrame.toc_menu.<locals>.<lambda>)Zlabelr   Zmenu)r   r
   ro   r   Zadd_command)r"   r   r   ZdropZlblr   r#   r   r$   r      s   zHelpFrame.toc_menuN)rN   rO   rP   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"   rr   rs   titler#   r#   r$   r      s   
zHelpWindow.__init__N)rN   rO   rP   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__rp   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   )rr   rs   r#   r#   r$   show_idlehelp  s
   r   __main__)rS   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   rR   r   r   r   r   rN   ZunittestrS   Zidlelib.idle_test.htestr   r#   r#   r#   r$   <module>   s(    ~* 