<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>

e f%                 @   sN  d  Z  d d l 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 d d l	 m Z d d l m Z d Z e r d d l m Z n  Gd	 d
   d
 e  Z Gd d   d e  Z Gd d   d e  Z Gd d   d e  Z d d   Z d d   Z e d k rJd d l m Z e e  n  d S)a   help.py: Implement the Idle help menu.
Contents are subject to revision at any time, without notice.


Help => About IDLE: diplay About Idle dialog

<to be moved here from aboutDialog.py>


Help => IDLE Help: Display help.html with proper formatting.
Doc/library/idle.rst (Sphinx)=> Doc/build/html/library/idle.html
(help.copy_strip)=> Lib/idlelib/help.html

HelpParser - Parse help.html and and render to tk Text.

HelpText - Display formatted help.html.

HelpFrame - Contain text, scrollbar, and table-of-contents.
(This will be needed for display in a future tabbed window.)

HelpWindow - Display HelpFrame in a standalone window.

copy_strip - Copy idle.html to help.html, rstripping each line.

show_idlehelp - Create HelpWindow.  Called in EditorWindow.help_dialog.
    )
HTMLParser)abspathdirnameisdirisfilejoin)TkToplevelFrameText	ScrollbarMenu
Menubutton)font)idleConfF)r   c               @   sU   e  Z d  Z d Z d d   Z d d d  Z d d   Z d	 d
   Z d d   Z d S)
HelpParserzRender help.html into a text widget.

    The overridden handle_xyz methods handle a subset of html tags.
    The supplied text should have the needed tag configurations.
    The behavior for unsupported tags, such as table, is undefined.
    c             C   s   t  j |  d d | |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _ d |  _	 d |  _
 d |  _ g  |  _ d |  _ d  S)NZconvert_charrefsT Fr   )r   __init__texttagschartagsshowhdrlinklevelprehprefix	nested_dl
simplelisttocheader)selfr    r!   1/opt/alt/python34/lib64/python3.4/idlelib/help.pyr   1   s    											zHelpParser.__init__   c             C   s>   |  j  | 7_  |  j  d k r$ d n d t |  j   |  _ d  S)Nr   r   l)r   strr   )r    amtr!   r!   r"   indent@   s    zHelpParser.indentc             C   s  d } x) | D]! \ } } | d k r | } q q Wd } | d k r\ | d k r\ d |  _  nD| d k r | d k r d |  _  n | d k r | d	 k r d
 } n| d k r | d k r d |  _ n| d k r | d k r d |  _ n| d k rd |  _ n| d# k rJ| j d  d$ k r4d } d |  _ n	 d |  _ |  j   nV| d k rt|  j d k rd |  _ q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 r$d |  _ |  j  r|  j j	 d d
  n  d |  _
 n| | d k rH| d k rHd |  _ nX | d k r`| |  _
 n@ | d% k r|  j  rd |  _ |  j j	 d d
  n  | |  _
 n  |  j  r|  j j	 d | |  j
 |  j f  n  d" S)&zHandle starttags in help.html.r   classZdivZsectionTZsphinxsidebarFpfirstz

spanr   ZversionmodifiedemulolZsimpler#   
Zdlr   Zliz
* z

* ZdtddendpreblockaZ
headerlinkh1h2h3N)r-   r.   )r5   r6   )r   r   findr   r'   r   r   r   r   insertr   r   r   )r    tagattrsZclass_r3   vsr!   r!   r"   handle_starttagD   sd    		
						zHelpParser.handle_starttagc             C   s   | d k rM |  j  d  |  j r |  j j |  j |  j j d  f  q np | d k re d |  _ nX | d	 k r} d
 |  _ n@ | d k r d
 |  _	 d |  _
 n | d k r |  j  d d  n  d S)zHandle endtags in help.html.r4   r5   r6   r   r9   r+   r,   r   r3   Fr   r-   r0   r.   r&   r#   N)zh1zh2zh3)zspanzem)zulzddzolr7   )r'   r   r   appendr   r   indexr   r   r   r   )r    r:   r!   r!   r"   handle_endtagz   s    	+	zHelpParser.handle_endtagc             C   s   |  j  r |  j r |  j r" | n | j d d  } |  j d k rb | d | j d   |  _ n  |  j d
 k r |  j d k r | d t |  j   |  j k r | t |  j  d  j   } n  |  j	 | 7_	 n  |  j
 j d	 | |  j |  j f  n  d S)z"Handle date segments in help.html.r/    r4   r   r5   r6   r   Nr1   )zh1zh2zh3)r   r   r   replacer   r@   r   lenstripr   r   r9   r   )r    datadr!   r!   r"   handle_data   s    !""zHelpParser.handle_dataN)	__name__
__module____qualname____doc__r   r'   r>   rA   rH   r!   r!   r!   r"   r   *   s   6r   c               @   s.   e  Z d  Z d Z d d   Z d d   Z d S)HelpTextzDisplay help.html.c       	      C   s0  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 d | d | |  j d d d g  } |  j d d d g  } | d f |  d <|  j d d | d d f |  j d d | d d f |  j d d | d d f |  j d d | d  d f |  j d! d | d f d" d# |  j d$ d | d% f d& d' d d( d) d* d" d+ |  j d, d& d' d- d' |  j d. d& d/ d- d/ |  j d0 d& d1 d- d1 |  j d2 d& d3 d- d3 t |   |  _ t | d4 d5  } | j	   } Wd6 QX|  j j
 |  d7 |  d8 <d6 S)9z'Configure tags and feed file to parser.mainZEditorWindowwidthtypeintZheight      ZwrapZwordZhighlightthicknessr   Zpadx   ZborderwidthZTkDefaultFontZarialZ	helveticaZTkFixedFontZmonacoZcourier   r   r,   Zitalicr4      Zboldr5      r6      r   
backgroundz#f6f6ffr2   
   Zlmargin1   r#   ZreliefZsolidz#eeffccl1Zlmargin2l22   l3K   l4d   encodingzutf-8NZ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   s   x | D] } | j    d d   t j d |   D k rd t j d | d d d |   } | j   d S| j    d d   t j d |   D k r | Sq Wd	 S)
z4Return name of first font family derived from names.c             s   s   |  ] } | j    Vq d  S)N)lower).0xr!   r!   r"   	<genexpr>   s    z$HelpText.findfont.<locals>.<genexpr>rootnameexistsTZfamilyc             s   s   |  ] } | j    Vq d  S)N)rm   )rn   ro   r!   r!   r"   rp      s   N)rm   tkfontnamesZFontZactualZfamilies)r    ru   rr   r   r!   r!   r"   re      s    +zHelpText.findfontN)rI   rJ   rK   rL   r   re   r!   r!   r!   r"   rM      s   rM   c               @   s.   e  Z d  Z d Z d d   Z d d   Z d S)	HelpFramez&Display html text, scrollbar, and toc.c             C   s   t  j |  |  t |  |  } | d |  d <t |  d | j } | j | d <|  j d d d |  j d d d |  j |  j	 d d d d d	 d
  | j	 d d d d d	 d  | j	 d d d d d	 d  d  S)NrY   commandZyscrollcommandr   weightr#   columnrowstickyZnwnsew   ns)
r
   r   rM   r   yviewsetZrowconfigureZcolumnconfiguretoc_menugrid)r    ri   rj   r   Zscrollr!   r!   r"   r      s    %zHelpFrame.__init__c          	      st   t  |  d d } t | d d } x?   j j D]1 \ } } | j d | d |   f d d   q1 W| | d	 <| S)
z+Create table of contents as drop-down menu.r   ZTOCZtearoffFZlabelrw   c                s     j  |   S)N)r   )dex)r   r!   r"   <lambda>   s    z$HelpFrame.toc_menu.<locals>.<lambda>Zmenu)r   r   rf   r   Zadd_command)r    r   r   ZdropZlblr   r!   )r   r"   r      s    )
zHelpFrame.toc_menuN)rI   rJ   rK   rL   r   r   r!   r!   r!   r"   rv      s   rv   c               @   s"   e  Z d  Z d Z d d   Z d S)
HelpWindowz!Display frame with rendered html.c             C   s   t  j |  |  |  j |  |  j d |  j  t |  |  j d d d d d d  |  j d d d |  j d d d d  S)	NZWM_DELETE_WINDOWry   r   rz   r{   r|   rx   r#   )	r	   r   Zwm_titleZprotocolZdestroyrv   r   Zgrid_columnconfigureZgrid_rowconfigure)r    ri   rj   titler!   r!   r"   r      s    %zHelpWindow.__init__N)rI   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  G } t | d  / } x% | D] } | j | j   d	  qy WWd
 QXWd
 QXt d  d
 S)zCCopy idle.html to idlelib/help.html, stripping trailing whitespace.ZDocZbuildZhtmlZlibraryz	idle.htmlz	help.htmlrbwbs   
Nzidle.html copied to help.html)r   r   r   __file__rg   writerstripprint)srcZdstZinnoutliner!   r!   r"   
copy_strip   s    'r   c             C   s?   t  t t t   d  } t |  s+ d St |  | d  d S)z7Create HelpWindow; called from Idle Help event handler.z	help.htmlNz	IDLE Help)r   r   r   r   r   r   )ri   rj   r!   r!   r"   show_idlehelp   s    r   __main__)runN) rL   Zhtml.parserr   Zos.pathr   r   r   r   r   Ztkinterr   r	   r
   r   r   r   r   r   rt   Zidlelib.configHandlerr   Zuse_ttkZtkinter.ttkr   rM   rv   r   r   r   rI   Zidlelib.idle_test.htestr   r!   r!   r!   r"   <module>   s"   (4m*