
    z%iO.                     (   	 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	e      Z G d
 de      Z G d de      Z G d de
      Zd Zd Zedk(  r d dlmZ  eddd       d dlm Z   e e       yy)    )
HTMLParser)abspathdirnameisfilejoin)python_version)ToplevelTextMenu)Frame
Menubutton	ScrollbarStylefont)idleConfc                   .    e Zd Z	 d ZddZd Zd Zd Zy)
HelpParserc                     t        j                  | d       || _        d| _        d| _        d| _        d| _        d| _        d| _        d| _	        d| _
        d| _        g | _        d| _        d | _        y )NT)convert_charrefs Fr   )r   __init__texttagschartagsshowhdrlinklevelprehprefix	nested_dl
simplelisttocheaderprevtag)selfr   s     @/home/uftp/.pyenv/versions/3.12.0/lib/python3.12/idlelib/help.pyr   zHelpParser.__init__3   sm    D48			
    c                     	 | xj                   |z  c_         | j                   dk(  rd| _        y dt        | j                         z   | _        y )Nr   r   l)r   strr   )r&   amts     r'   indentzHelpParser.indentC   s7    -

c
**/B	s3tzz?/B	r(   c                    	 d}|D ]  \  }}|dk(  s|} d}|dk(  r|dgk(  r	d| _         n|dk(  r|dk(  r	d| _         n|d	k(  rO| j                  rC| j                  d
   s4| j                  j                  dd      }|r|j	                         sdnd}nj|dk(  r|dk(  r	d| _        nW|dk(  r|dk(  r	d| _        nD|dk(  r	d| _        n6|dv r6|j                  d      dk7  r
d}d| _        nd| _        | j                          n|dk(  r| j                  d
kD  rd| _
        n|dk(  r| j                  rdnd}n|dk(  r| j                  sdnd}d| _
        n|dk(  r| j                          d}n|dk(  r7d| _        | j                   r| j                  j                  dd       d| _        nY|dk(  r|dk(  rd| _        nG|d k(  r|| _        n:|d!v r6| j                   r#d| _        | j                  j                  dd       || _        | j                   r3| j                  j                  d|| j                  | j
                  f       d|f| _        y )"Nr   classsection)ididleTdivclearerFpr   zend-1c linestartzend-1cz


spanr   versionmodifiedem)ulolsimpledlliz
* z

* dtddendpreblocka
headerlinkh1)h2h3)r   r%   r   getisspacer   findr"   r-   r   r!   r   insertr   r   r$   )r&   tagattrsclass_rD   vslastlines           r'   handle_starttagzHelpParser.handle_starttagH   s#   ( 	DAqG|	 ).)9 9DIE\f	1DICZDLLa yy}}%7BH"8+;+;+=4AF]v!DMF]v):: DMD[ DML {{8$*"&"'KKMD[zzA~!%D[//xAD["nn$A"DND[KKMAE\DHyy		  /"DICZFl2DLD[DIL yy 		  /DI99IIUA		4=='ABc{r(   c                 r   	 |dv rg| j                   rS|dk(  rdn|dk(  rdnd}| j                  j                  || j                  z   | j                  j                  d      f       d| _        nB|dv rd| _        n6|d	k(  rd
| _        n)|dk(  rd
| _	        d| _        n|dv r| j                  d       d
|f| _        y )NrF   rG   rH   rH   z        rG   z    r   rL   )r7   r9   rD   Fr   )r:   rA   r;   r=   )r   r#   appendr$   r   indexr   r   r   r   r-   r%   )r&   rM   r-   s      r'   handle_endtagzHelpParser.handle_endtag   s    &$$yy(+t*$'4K&  !3TYY__X5N OPDIN"DMCZ DLE\DHDI&&KKOs|r(   c                 Z   	 | j                   r| j                  s| j                  r|n|j                  dd      }| j                  dk(  r	 |d|j                  d       | _        | j                  dv ro| j                  dk7  r=|dt        | j                         | j                  k(  r|t        | j                        d  }| xj                  |j                         z  c_	        | j                  j                  d|| j                  | j                  f       y y y # t        $ r
 d| _        Y w xY w)Nr6    rF   r   r   rU   rB   )r   r   r   replacer   rW   r    
ValueErrorlenr$   stripr   rL   r   )r&   datads      r'   handle_datazHelpParser.handle_data   s    ,99T\\dll4&=AyyD &#$Qqwws|#4DL yy..LLB&aDLL)*dll:#dll+,-Aqwwy(IIUA		4=='AB *9
 " &#%DL&s   D D*)D*N)   )__name__
__module____qualname__r   r-   rS   rX   ra    r(   r'   r   r   *   s#     C
8#t$*Cr(   r   c                       e Zd Z	 d Zd Zy)HelpTextc           
         	 t        j                  dddd      }t        j                  dddd      }d|z  dz  }t        j                  | |d	d
dd
||       | j	                  g d      }| j	                  g d      }|df| d<   | j                  d|ddf       | j                  d|ddf       | j                  d|ddf       | j                  d|ddf       | j                  d|dfd       | j                  d|dfd d!d"d#$       | j                  d%d d &       | j                  d'd(d(&       | j                  d)d*d*&       | j                  d+d,d,&       t        |       | _        t        |d-.      5 }|j                         }d d d        | j                  j                         d/| d0<   y # 1 sw Y   *xY w)1NmainEditorWindowwidthint)typeheight      wordr      )wraphighlightthicknesspadxborderwidthrl   ro   )TkDefaultFontarial	helvetica)TkFixedFontmonacocourier   r   r9   italicr   rF      boldrG      rH      r   z#f6f6ff)r   
backgroundrC   
      rb   solidz#eeffcc)r   lmargin1rw   reliefr   l1)r   lmargin2l22   l3K   l4d   zutf-8)encodingdisabledstate)r   	GetOptionr
   r   findfonttag_configurer   parseropenreadfeed)	r&   parentfilenameuwideuhigh
normalfont	fixedfontfcontentss	            r'   r   zHelpText.__init__   s   1""6>7O""6>8%PE	QdFA!5	H ]]#JK
MM"FG	"B'V4z2x&@A4z2v&>?4z2v&>?4z2v&>?5	29M:YObg) 	 	E4"r:4"r:4"r:4#< &(W- 	 vvxH	 ""W	  	 s   :F44F=c                 *   	 |D ]  }|j                         d t        j                  |       D        v r-t        j                  |d|       }|j	                         d   c S |j                         d t        j
                  |       D        v s|c S  y )Nc              3   <   K   | ]  }|j                           y wNlower.0xs     r'   	<genexpr>z$HelpText.findfont.<locals>.<genexpr>   s     Ka	K   )rootT)nameexistsr   familyc              3   <   K   | ]  }|j                           y wr   r   r   s     r'   r   z$HelpText.findfont.<locals>.<genexpr>   s       "G&' #$'') "Gr   )r   tkfontnamesFontactualfamilies)r&   r   r   r   s       r'   r   zHelpText.findfont   s    > 	Dzz|K6<<T3JKK{{TE{{}X.. "G+1??+E"G G	r(   N)rc   rd   re   r   r   rf   r(   r'   rh   rh      s    #:r(   rh   c                       e Zd Z	 d Zd Zy)	HelpFramec                    t        j                  | |       t        | |      x| _        }t	        |      | _        d| d<   | j
                  j                  d|d          | j                  |      x| _        }t        | |j                        x| _        }|j                  |d<   | j                  dd	       | j                  dd	       |j                  ddd
       |j                  ddd       |j                  ddd       y )Nzhelpframe.TFramestyler   )r   )commandyscrollcommandr   rb   weightnw)rowcolumnstickynsew   ns)r   r   rh   r   r   r   	configuretoc_menur#   r   yviewscrollsetrowconfigurecolumnconfiguregrid)r&   r   r   r   r#   r   s         r'   r   zHelpFrame.__init__   s    tV$#D(33	D6]
*W

/D<NOt,,3(tzzBBf!'!A&Qq)Qq.		a&	1!D1r(   c                     	 t        | d      }t        |d      }j                  j                  D ]  \  }}|j	                  ||ffd	        ||d<   |S )NTOC)r   F)tearoffc                 &    j                  |       S r   )r   )dexr   s    r'   <lambda>z$HelpFrame.toc_menu.<locals>.<lambda>   s    tzz# r(   )labelr   menu)r   r   r   r#   add_command)r&   r   r#   droplblr   s    `    r'   r   zHelpFrame.toc_menu   s_    5E*C' 	PHC330NO	PF
r(   N)rc   rd   re   r   r   rf   r(   r'   r   r      s    ,2 r(   r   c                       e Zd Z	 d Zy)
HelpWindowc                    t        j                  | |       | j                  |       | j                  d| j                         t        | |      j                  ddd       | j                  dd       | j                  dd       y )NWM_DELETE_WINDOWr   r   )r   r   r   rb   r   )	r	   r   wm_titleprotocoldestroyr   r   grid_columnconfiguregrid_rowconfigure)r&   r   r   titles       r'   r   zHelpWindow.__init__   ss    $'e($,,7$!&&aQv&F!!!A!.q+r(   N)rc   rd   re   r   rf   r(   r'   r   r      s
    ',r(   r   c                     	 t        t        t        t        t        t                                ddddd      } t        t        t        t                    d      }t	        | d      5 }t	        |d      5 }|D ]$  }|j                  |j                         d	z          & 	 d d d        d d d        t        |  d
|        y # 1 sw Y   "xY w# 1 sw Y   &xY w)NDocbuildhtmllibraryz	idle.html	help.htmlrbwb   
z copied to )r   r   r   __file__r   writerstripprint)srcdstinnoutlines        r'   
copy_stripr      s    , wwwwx'89:;7FI{<C
wwx();
7C	c4 -C	c4- 	-DIIdkkme+,	-- - 
SESE
"#	- - - -s$   (C5*C CC
	CCc                     	 t        t        t        t                    d      }t	        |      sy t        | |dt               z         y )Nr   zIDLE Help (%s))r   r   r   r   r   r   r   )r   r   s     r'   show_idlehelpr     s;    =GGH-.<H(vx!1N4D!DEr(   __main__)rj   zidlelib.idle_test.test_helpr   F)	verbosityexit)runN)!html.parserr   os.pathr   r   r   r   platformr   tkinterr	   r
   r   tkinter.ttkr   r   r   r   r   r   idlelib.configr   r   rh   r   r   r   r   rc   unittestrj   idlelib.idle_test.htestr   rf   r(   r'   <module>r     s   4 # 2 2 # ( ( ; ; " #{C {C|'t 'T 8, ,$@F z	&!%@+ r(   