mirror of
https://github.com/python/cpython.git
synced 2024-12-15 04:44:47 +08:00
Issue #16893: Add idlelib.help.copy_strip() to copy-rstrip Doc/.../idle.html.
Change destination to help.html. Adjust NEWS entries.
This commit is contained in:
commit
2b0bf5cce9
@ -7,8 +7,8 @@ What's New in IDLE 3.6.0a1?
|
||||
|
||||
- Issue #25199: Idle: add synchronization comments for future maintainers.
|
||||
|
||||
- Issue #16893: Replace help.txt with idle.html for Idle doc display.
|
||||
The new idlelib/idle.html is copied from Doc/build/html/library/idle.html.
|
||||
- Issue #16893: Replace help.txt with help.html for Idle doc display.
|
||||
The new idlelib/help.html is rstripped Doc/build/html/library/idle.html.
|
||||
It looks better than help.txt and will better document Idle as released.
|
||||
The tkinter html viewer that works for this file was written by Mark Roseman.
|
||||
The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.
|
||||
|
@ -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
|
||||
|
||||
HelpText - Displays formatted idle.html.
|
||||
HelpParser - Parse help.html and and render to tk Text.
|
||||
|
||||
HelpFrame - Contains text, scrollbar, and table-of-contents.
|
||||
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 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__':
|
||||
|
28
Misc/NEWS
28
Misc/NEWS
@ -81,10 +81,13 @@ Library
|
||||
IDLE
|
||||
----
|
||||
|
||||
- Issue #24861: Most of idlelib is private and subject to change.
|
||||
Use idleib.idle.* to start Idle. See idlelib.__init__.__doc__.
|
||||
|
||||
- Issue #25199: Idle: add synchronization comments for future maintainers.
|
||||
|
||||
- Issue #16893: Replace help.txt with idle.html for Idle doc display.
|
||||
The new idlelib/idle.html is copied from Doc/build/html/idle.html.
|
||||
- Issue #16893: Replace help.txt with help.html for Idle doc display.
|
||||
The new idlelib/help.html is rstripped Doc/build/html/library/idle.html.
|
||||
It looks better than help.txt and will better document Idle as released.
|
||||
The tkinter html viewer that works for this file was written by Rose Roseman.
|
||||
The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.
|
||||
@ -200,27 +203,6 @@ Library
|
||||
- Issue #23572: Fixed functools.singledispatch on classes with falsy
|
||||
metaclasses. Patch by Ethan Furman.
|
||||
|
||||
IDLE
|
||||
----
|
||||
|
||||
- Issue #24861: Most of idlelib is private and subject to change.
|
||||
Use idleib.idle.* to start Idle. See idlelib.__init__.__doc__.
|
||||
|
||||
- Issue #25199: Idle: add synchronization comments for future maintainers.
|
||||
|
||||
- Issue #16893: Replace help.txt with idle.html for Idle doc display.
|
||||
The new idlelib/idle.html is copied from Doc/build/html/library/idle.html.
|
||||
It looks better than help.txt and will better document Idle as released.
|
||||
The tkinter html viewer that works for this file was written by Mark Roseman.
|
||||
The now unused EditorWindow.HelpDialog class and helt.txt file are deprecated.
|
||||
|
||||
- Issue #24199: Deprecate unused idlelib.idlever with possible removal in 3.6.
|
||||
|
||||
- Issue #24782: In Idle extension config dialog, replace tabs with sorted list.
|
||||
Patch by Mark Roseman.
|
||||
|
||||
- Issue #24790: Remove extraneous code (which also create 2 & 3 conflicts).
|
||||
|
||||
Documentation
|
||||
-------------
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user