diff options
Diffstat (limited to 'Lib/idlelib/help.py')
-rw-r--r-- | Lib/idlelib/help.py | 53 |
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__': |