summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib/help.py
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2015-09-22 02:36:42 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2015-09-22 02:36:42 (GMT)
commitcba1a1a0008e7a4c7181758af7fc3aa9dae23f9a (patch)
tree698a1ef11ef3b52e2bda121acb553838cb9ca65c /Lib/idlelib/help.py
parentd9763c2ce47bdda6f48072e7f06c302d74032469 (diff)
downloadcpython-cba1a1a0008e7a4c7181758af7fc3aa9dae23f9a.zip
cpython-cba1a1a0008e7a4c7181758af7fc3aa9dae23f9a.tar.gz
cpython-cba1a1a0008e7a4c7181758af7fc3aa9dae23f9a.tar.bz2
Issue #16893: Add idlelib.help.copy_strip() to copy-rstrip Doc/.../idle.html.
Change destination to help.html. Adjust NEWS entries.
Diffstat (limited to 'Lib/idlelib/help.py')
-rw-r--r--Lib/idlelib/help.py53
1 files changed, 35 insertions, 18 deletions
diff --git a/Lib/idlelib/help.py b/Lib/idlelib/help.py
index b1047c8..562551b 100644
--- a/Lib/idlelib/help.py
+++ b/Lib/idlelib/help.py
@@ -1,23 +1,26 @@
-"""
-help.py implements the Idle help menu and is subject to change.
+""" help.py: Implement the Idle help menu.
+Contents are subject to revision at any time, without notice.
-The 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 idle.html with proper formatting
-HelpParser - Parses idle.html generated from idle.rst by Sphinx
-and renders to tk Text.
+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 - Displays formatted idle.html.
+HelpText - Display formatted help.html.
-HelpFrame - Contains text, scrollbar, and table-of-contents.
+HelpFrame - Contain text, scrollbar, and table-of-contents.
(This will be needed for display in a future tabbed window.)
-HelpWindow - Display idleframe in a standalone 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.
"""
@@ -36,7 +39,7 @@ if use_ttk:
## IDLE Help ##
class HelpParser(HTMLParser):
- """Render idle.html generated by Sphinx from idle.rst.
+ """Render 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.
@@ -62,7 +65,7 @@ class HelpParser(HTMLParser):
self.tags = '' if self.level == 0 else 'l'+str(self.level)
def handle_starttag(self, tag, attrs):
- "Handle starttags in idle.html."
+ "Handle starttags in help.html."
class_ = ''
for a, v in attrs:
if a == 'class':
@@ -120,7 +123,7 @@ class HelpParser(HTMLParser):
self.text.insert('end', s, self.tags)
def handle_endtag(self, tag):
- "Handle endtags in idle.html."
+ "Handle endtags in help.html."
if tag in ['h1', 'h2', 'h3', 'span', 'em']:
self.indent(0) # clear tag, reset indent
if self.show and tag in ['h1', 'h2', 'h3']:
@@ -136,7 +139,7 @@ class HelpParser(HTMLParser):
self.indent(amt=-1)
def handle_data(self, data):
- "Handle date segments in idle.html."
+ "Handle date segments in help.html."
if self.show and not self.hdrlink:
d = data if self.pre else data.replace('\n', ' ')
if self.tags == 'h1':
@@ -149,7 +152,7 @@ class HelpParser(HTMLParser):
class HelpText(Text):
- "Display idle.html."
+ "Display help.html."
def __init__(self, parent, filename):
"Configure tags and feed file to parser."
Text.__init__(self, parent, wrap='word', highlightthickness=0,
@@ -188,6 +191,7 @@ class HelpText(Text):
class HelpFrame(Frame):
+ "Display html text, scrollbar, and toc."
def __init__(self, parent, filename):
Frame.__init__(self, parent)
text = HelpText(self, filename)
@@ -202,6 +206,7 @@ class HelpFrame(Frame):
toc.grid(column=0, row=0, sticky='nw')
def contents_widget(self, text):
+ "Create table of contents."
toc = Menubutton(self, text='TOC')
drop = Menu(toc, tearoff=False)
for tag, lbl in text.parser.contents:
@@ -211,7 +216,7 @@ class HelpFrame(Frame):
class HelpWindow(Toplevel):
-
+ "Display frame with rendered html."
def __init__(self, parent, filename, title):
Toplevel.__init__(self, parent)
self.wm_title(title)
@@ -221,11 +226,23 @@ class HelpWindow(Toplevel):
self.grid_rowconfigure(0, weight=1)
+def copy_strip():
+ "Copy idle.html to idlelib/help.html, stripping trailing whitespace."
+ src = join(abspath(dirname(dirname(dirname(__file__)))),
+ 'Doc', 'build', 'html', 'library', 'idle.html')
+ dst = join(abspath(dirname(__file__)), 'help.html')
+ with open(src, 'rb') as inn,\
+ open(dst, 'wb') as out:
+ for line in inn:
+ out.write(line.rstrip() + '\n')
+ print('idle.html copied to help.html')
+
def show_idlehelp(parent):
- filename = join(abspath(dirname(__file__)), 'idle.html')
+ "Create HelpWindow; called from Idle Help event handler."
+ filename = join(abspath(dirname(__file__)), 'help.html')
if not isfile(filename):
- dirpath = join(abspath(dirname(dirname(dirname(__file__)))),
- 'Doc', 'build', 'html', 'library')
+ # try copy_strip, present message
+ return
HelpWindow(parent, filename, 'IDLE Help')
if __name__ == '__main__':