Current Path: > > lib64 > python2.7 > idlelib
Operation : Linux premium107.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64 Software : Apache Server IP : 198.54.126.246 | Your IP: 216.73.216.181 Domains : 1034 Domain(s) Permission : [ 0755 ]
| Name | Type | Size | Last Modified | Actions |
|---|---|---|---|---|
| Icons | Directory | - | - | |
| idle_test | Directory | - | - | |
| AutoComplete.py | File | 8964 bytes | April 10 2024 04:58:35. | |
| AutoComplete.pyc | File | 8012 bytes | April 10 2024 04:58:46. | |
| AutoComplete.pyo | File | 8012 bytes | April 10 2024 04:58:46. | |
| AutoCompleteWindow.py | File | 17318 bytes | April 10 2024 04:58:35. | |
| AutoCompleteWindow.pyc | File | 12480 bytes | April 10 2024 04:58:46. | |
| AutoCompleteWindow.pyo | File | 12421 bytes | April 10 2024 04:58:43. | |
| AutoExpand.py | File | 3395 bytes | April 10 2024 04:58:35. | |
| AutoExpand.pyc | File | 3502 bytes | April 10 2024 04:58:46. | |
| AutoExpand.pyo | File | 3502 bytes | April 10 2024 04:58:46. | |
| Bindings.py | File | 2976 bytes | April 10 2024 04:58:35. | |
| Bindings.pyc | File | 4695 bytes | April 10 2024 04:58:46. | |
| Bindings.pyo | File | 4695 bytes | April 10 2024 04:58:46. | |
| CREDITS.txt | File | 1866 bytes | April 10 2024 04:58:35. | |
| CallTipWindow.py | File | 6065 bytes | April 10 2024 04:58:35. | |
| CallTipWindow.pyc | File | 6136 bytes | April 10 2024 04:58:46. | |
| CallTipWindow.pyo | File | 6136 bytes | April 10 2024 04:58:46. | |
| CallTips.py | File | 7740 bytes | April 10 2024 04:58:35. | |
| CallTips.pyc | File | 8133 bytes | April 10 2024 04:58:46. | |
| CallTips.pyo | File | 8133 bytes | April 10 2024 04:58:46. | |
| ChangeLog | File | 56393 bytes | April 10 2024 04:58:35. | |
| ClassBrowser.py | File | 6999 bytes | April 10 2024 04:58:35. | |
| ClassBrowser.pyc | File | 9500 bytes | April 10 2024 04:58:46. | |
| ClassBrowser.pyo | File | 9500 bytes | April 10 2024 04:58:46. | |
| CodeContext.py | File | 8342 bytes | April 10 2024 04:58:35. | |
| CodeContext.pyc | File | 6658 bytes | April 10 2024 04:58:46. | |
| CodeContext.pyo | File | 6614 bytes | April 10 2024 04:58:43. | |
| ColorDelegator.py | File | 9762 bytes | April 10 2024 04:58:35. | |
| ColorDelegator.pyc | File | 8898 bytes | April 10 2024 04:58:46. | |
| ColorDelegator.pyo | File | 8898 bytes | April 10 2024 04:58:46. | |
| Debugger.py | File | 18236 bytes | April 10 2024 04:58:35. | |
| Debugger.pyc | File | 17546 bytes | April 10 2024 04:58:46. | |
| Debugger.pyo | File | 17546 bytes | April 10 2024 04:58:46. | |
| Delegator.py | File | 665 bytes | April 10 2024 04:58:35. | |
| Delegator.pyc | File | 1268 bytes | April 10 2024 04:58:46. | |
| Delegator.pyo | File | 1268 bytes | April 10 2024 04:58:46. | |
| EditorWindow.py | File | 65498 bytes | April 10 2024 04:58:35. | |
| EditorWindow.pyc | File | 56858 bytes | April 10 2024 04:58:46. | |
| EditorWindow.pyo | File | 56756 bytes | April 10 2024 04:58:43. | |
| FileList.py | File | 3718 bytes | April 10 2024 04:58:35. | |
| FileList.pyc | File | 4025 bytes | April 10 2024 04:58:46. | |
| FileList.pyo | File | 3992 bytes | April 10 2024 04:58:43. | |
| FormatParagraph.py | File | 7287 bytes | April 10 2024 04:58:35. | |
| FormatParagraph.pyc | File | 7142 bytes | April 10 2024 04:58:46. | |
| FormatParagraph.pyo | File | 7142 bytes | April 10 2024 04:58:46. | |
| GrepDialog.py | File | 5145 bytes | April 10 2024 04:58:35. | |
| GrepDialog.pyc | File | 6425 bytes | April 10 2024 04:58:46. | |
| GrepDialog.pyo | File | 6425 bytes | April 10 2024 04:58:46. | |
| HISTORY.txt | File | 10317 bytes | April 10 2024 04:58:35. | |
| HyperParser.py | File | 10497 bytes | April 10 2024 04:58:35. | |
| HyperParser.pyc | File | 6673 bytes | April 10 2024 04:58:46. | |
| HyperParser.pyo | File | 6673 bytes | April 10 2024 04:58:46. | |
| IOBinding.py | File | 21911 bytes | April 10 2024 04:58:35. | |
| IOBinding.pyc | File | 18535 bytes | April 10 2024 04:58:46. | |
| IOBinding.pyo | File | 18535 bytes | April 10 2024 04:58:46. | |
| IdleHistory.py | File | 4052 bytes | April 10 2024 04:58:35. | |
| IdleHistory.pyc | File | 4060 bytes | April 10 2024 04:58:46. | |
| IdleHistory.pyo | File | 4060 bytes | April 10 2024 04:58:46. | |
| MultiCall.py | File | 17701 bytes | April 10 2024 04:58:35. | |
| MultiCall.pyc | File | 16351 bytes | April 10 2024 04:58:46. | |
| MultiCall.pyo | File | 16277 bytes | April 10 2024 04:58:43. | |
| MultiStatusBar.py | File | 1348 bytes | April 10 2024 04:58:35. | |
| MultiStatusBar.pyc | File | 2279 bytes | April 10 2024 04:58:46. | |
| MultiStatusBar.pyo | File | 2279 bytes | April 10 2024 04:58:46. | |
| NEWS.txt | File | 47247 bytes | April 10 2024 04:58:35. | |
| ObjectBrowser.py | File | 4376 bytes | April 10 2024 04:58:35. | |
| ObjectBrowser.pyc | File | 7067 bytes | April 10 2024 04:58:46. | |
| ObjectBrowser.pyo | File | 7067 bytes | April 10 2024 04:58:46. | |
| OutputWindow.py | File | 4576 bytes | April 10 2024 04:58:35. | |
| OutputWindow.pyc | File | 5232 bytes | April 10 2024 04:58:46. | |
| OutputWindow.pyo | File | 5232 bytes | April 10 2024 04:58:46. | |
| ParenMatch.py | File | 6714 bytes | April 10 2024 04:58:35. | |
| ParenMatch.pyc | File | 7129 bytes | April 10 2024 04:58:46. | |
| ParenMatch.pyo | File | 7129 bytes | April 10 2024 04:58:46. | |
| PathBrowser.py | File | 3009 bytes | April 10 2024 04:58:35. | |
| PathBrowser.pyc | File | 4486 bytes | April 10 2024 04:58:46. | |
| PathBrowser.pyo | File | 4486 bytes | April 10 2024 04:58:46. | |
| Percolator.py | File | 3222 bytes | April 10 2024 04:58:35. | |
| Percolator.pyc | File | 4608 bytes | April 10 2024 04:58:46. | |
| Percolator.pyo | File | 4424 bytes | April 10 2024 04:58:43. | |
| PyParse.py | File | 19510 bytes | April 10 2024 04:58:35. | |
| PyParse.pyc | File | 10005 bytes | April 10 2024 04:58:46. | |
| PyParse.pyo | File | 9567 bytes | April 10 2024 04:58:43. | |
| PyShell.py | File | 58862 bytes | April 10 2024 04:58:35. | |
| PyShell.pyc | File | 52826 bytes | April 10 2024 04:58:46. | |
| PyShell.pyo | File | 52724 bytes | April 10 2024 04:58:43. | |
| README.txt | File | 7890 bytes | April 10 2024 04:58:35. | |
| RemoteDebugger.py | File | 11632 bytes | April 10 2024 04:58:35. | |
| RemoteDebugger.pyc | File | 16325 bytes | April 10 2024 04:58:46. | |
| RemoteDebugger.pyo | File | 16171 bytes | April 10 2024 04:58:43. | |
| RemoteObjectBrowser.py | File | 942 bytes | April 10 2024 04:58:35. | |
| RemoteObjectBrowser.pyc | File | 2150 bytes | April 10 2024 04:58:46. | |
| RemoteObjectBrowser.pyo | File | 2150 bytes | April 10 2024 04:58:46. | |
| ReplaceDialog.py | File | 6639 bytes | April 10 2024 04:58:35. | |
| ReplaceDialog.pyc | File | 7756 bytes | April 10 2024 04:58:46. | |
| ReplaceDialog.pyo | File | 7756 bytes | April 10 2024 04:58:46. | |
| RstripExtension.py | File | 1050 bytes | April 10 2024 04:58:35. | |
| RstripExtension.pyc | File | 1613 bytes | April 10 2024 04:58:46. | |
| RstripExtension.pyo | File | 1613 bytes | April 10 2024 04:58:46. | |
| ScriptBinding.py | File | 8459 bytes | April 10 2024 04:58:35. | |
| ScriptBinding.pyc | File | 8201 bytes | April 10 2024 04:58:46. | |
| ScriptBinding.pyo | File | 8201 bytes | April 10 2024 04:58:46. | |
| ScrolledList.py | File | 4373 bytes | April 10 2024 04:58:35. | |
| ScrolledList.pyc | File | 6482 bytes | April 10 2024 04:58:46. | |
| ScrolledList.pyo | File | 6482 bytes | April 10 2024 04:58:46. | |
| SearchDialog.py | File | 2630 bytes | April 10 2024 04:58:35. | |
| SearchDialog.pyc | File | 3983 bytes | April 10 2024 04:58:46. | |
| SearchDialog.pyo | File | 3983 bytes | April 10 2024 04:58:46. | |
| SearchDialogBase.py | File | 7094 bytes | April 10 2024 04:58:35. | |
| SearchDialogBase.pyc | File | 8462 bytes | April 10 2024 04:58:46. | |
| SearchDialogBase.pyo | File | 8462 bytes | April 10 2024 04:58:46. | |
| SearchEngine.py | File | 7463 bytes | April 10 2024 04:58:35. | |
| SearchEngine.pyc | File | 8302 bytes | April 10 2024 04:58:46. | |
| SearchEngine.pyo | File | 8302 bytes | April 10 2024 04:58:46. | |
| StackViewer.py | File | 4431 bytes | April 10 2024 04:58:35. | |
| StackViewer.pyc | File | 6404 bytes | April 10 2024 04:58:46. | |
| StackViewer.pyo | File | 6404 bytes | April 10 2024 04:58:46. | |
| TODO.txt | File | 8478 bytes | April 10 2024 04:58:35. | |
| ToolTip.py | File | 3173 bytes | April 10 2024 04:58:35. | |
| ToolTip.pyc | File | 4669 bytes | April 10 2024 04:58:46. | |
| ToolTip.pyo | File | 4669 bytes | April 10 2024 04:58:46. | |
| TreeWidget.py | File | 15037 bytes | April 10 2024 04:58:35. | |
| TreeWidget.pyc | File | 17694 bytes | April 10 2024 04:58:46. | |
| TreeWidget.pyo | File | 17694 bytes | April 10 2024 04:58:46. | |
| UndoDelegator.py | File | 10787 bytes | April 10 2024 04:58:35. | |
| UndoDelegator.pyc | File | 13555 bytes | April 10 2024 04:58:46. | |
| UndoDelegator.pyo | File | 13555 bytes | April 10 2024 04:58:46. | |
| WidgetRedirector.py | File | 6906 bytes | April 10 2024 04:58:35. | |
| WidgetRedirector.pyc | File | 7769 bytes | April 10 2024 04:58:46. | |
| WidgetRedirector.pyo | File | 7769 bytes | April 10 2024 04:58:46. | |
| WindowList.py | File | 2473 bytes | April 10 2024 04:58:35. | |
| WindowList.pyc | File | 3636 bytes | April 10 2024 04:58:46. | |
| WindowList.pyo | File | 3636 bytes | April 10 2024 04:58:46. | |
| ZoomHeight.py | File | 1300 bytes | April 10 2024 04:58:35. | |
| ZoomHeight.pyc | File | 1646 bytes | April 10 2024 04:58:46. | |
| ZoomHeight.pyo | File | 1646 bytes | April 10 2024 04:58:46. | |
| __init__.py | File | 288 bytes | April 10 2024 04:58:35. | |
| __init__.pyc | File | 431 bytes | April 10 2024 04:58:46. | |
| __init__.pyo | File | 431 bytes | April 10 2024 04:58:46. | |
| aboutDialog.py | File | 7014 bytes | April 10 2024 04:58:35. | |
| aboutDialog.pyc | File | 6848 bytes | April 10 2024 04:58:46. | |
| aboutDialog.pyo | File | 6848 bytes | April 10 2024 04:58:46. | |
| config-extensions.def | File | 2965 bytes | April 10 2024 04:58:35. | |
| config-highlight.def | File | 2515 bytes | April 10 2024 04:58:35. | |
| config-keys.def | File | 7777 bytes | April 10 2024 04:58:35. | |
| config-main.def | File | 2561 bytes | April 10 2024 04:58:35. | |
| configDialog.py | File | 65958 bytes | April 10 2024 04:58:35. | |
| configDialog.pyc | File | 53291 bytes | April 10 2024 04:58:46. | |
| configDialog.pyo | File | 53291 bytes | April 10 2024 04:58:46. | |
| configHandler.py | File | 32485 bytes | April 10 2024 04:58:35. | |
| configHandler.pyc | File | 29361 bytes | April 10 2024 04:58:46. | |
| configHandler.pyo | File | 29361 bytes | April 10 2024 04:58:46. | |
| configHelpSourceEdit.py | File | 6686 bytes | April 10 2024 04:58:35. | |
| configHelpSourceEdit.pyc | File | 6595 bytes | April 10 2024 04:58:46. | |
| configHelpSourceEdit.pyo | File | 6595 bytes | April 10 2024 04:58:46. | |
| configSectionNameDialog.py | File | 4040 bytes | April 10 2024 04:58:35. | |
| configSectionNameDialog.pyc | File | 4419 bytes | April 10 2024 04:58:46. | |
| configSectionNameDialog.pyo | File | 4419 bytes | April 10 2024 04:58:46. | |
| dynOptionMenuWidget.py | File | 1984 bytes | April 10 2024 04:58:35. | |
| dynOptionMenuWidget.pyc | File | 2790 bytes | April 10 2024 04:58:46. | |
| dynOptionMenuWidget.pyo | File | 2790 bytes | April 10 2024 04:58:46. | |
| extend.txt | File | 3642 bytes | April 10 2024 04:58:35. | |
| help.html | File | 42414 bytes | April 10 2024 04:58:35. | |
| help.py | File | 11035 bytes | April 10 2024 04:58:35. | |
| help.pyc | File | 12270 bytes | April 10 2024 04:58:46. | |
| help.pyo | File | 12270 bytes | April 10 2024 04:58:46. | |
| help.txt | File | 12144 bytes | April 10 2024 04:58:35. | |
| idle.py | File | 453 bytes | April 10 2024 04:58:35. | |
| idle.pyc | File | 410 bytes | April 10 2024 04:58:46. | |
| idle.pyo | File | 410 bytes | April 10 2024 04:58:46. | |
| idle.pyw | File | 563 bytes | April 10 2024 04:58:35. | |
| idlever.py | File | 415 bytes | April 10 2024 04:58:35. | |
| idlever.pyc | File | 578 bytes | April 10 2024 04:58:46. | |
| idlever.pyo | File | 578 bytes | April 10 2024 04:58:46. | |
| keybindingDialog.py | File | 12468 bytes | April 10 2024 04:58:35. | |
| keybindingDialog.pyc | File | 12173 bytes | April 10 2024 04:58:46. | |
| keybindingDialog.pyo | File | 12173 bytes | April 10 2024 04:58:46. | |
| macosxSupport.py | File | 8435 bytes | April 10 2024 04:58:35. | |
| macosxSupport.pyc | File | 8351 bytes | April 10 2024 04:58:46. | |
| macosxSupport.pyo | File | 8213 bytes | April 10 2024 04:58:43. | |
| rpc.py | File | 20150 bytes | April 10 2024 04:58:35. | |
| rpc.pyc | File | 21728 bytes | April 10 2024 04:58:46. | |
| rpc.pyo | File | 21622 bytes | April 10 2024 04:58:43. | |
| run.py | File | 12917 bytes | April 10 2024 04:58:35. | |
| run.pyc | File | 13419 bytes | April 10 2024 04:58:46. | |
| run.pyo | File | 13361 bytes | April 10 2024 04:58:43. | |
| tabbedpages.py | File | 18439 bytes | April 10 2024 04:58:35. | |
| tabbedpages.pyc | File | 18561 bytes | April 10 2024 04:58:46. | |
| tabbedpages.pyo | File | 18561 bytes | April 10 2024 04:58:46. | |
| textView.py | File | 3520 bytes | April 10 2024 04:58:35. | |
| textView.pyc | File | 4025 bytes | April 10 2024 04:58:46. | |
| textView.pyo | File | 4025 bytes | April 10 2024 04:58:46. |
""" 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 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.
"""
from HTMLParser import HTMLParser
from os.path import abspath, dirname, isdir, isfile, join
from platform import python_version
from Tkinter import Tk, Toplevel, Frame, Text, Scrollbar, Menu, Menubutton
import tkFont as tkfont
from idlelib.configHandler import idleConf
use_ttk = False # until available to import
if use_ttk:
from tkinter.ttk import Menubutton
## About IDLE ##
## IDLE Help ##
class HelpParser(HTMLParser):
"""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.
The behavior for unsupported tags, such as table, is undefined.
If the tags generated by Sphinx change, this class, especially
the handle_starttag and handle_endtags methods, might have to also.
"""
def __init__(self, text):
HTMLParser.__init__(self)
self.text = text # text widget we're rendering into
self.tags = '' # current block level text tags to apply
self.chartags = '' # current character level text tags
self.show = False # used so we exclude page navigation
self.hdrlink = False # used so we don't show header links
self.level = 0 # indentation level
self.pre = False # displaying preformatted text
self.hprefix = '' # prefix such as '25.5' to strip from headings
self.nested_dl = False # if we're in a nested <dl>
self.simplelist = False # simple list (no double spacing)
self.toc = [] # pair headers with text indexes for toc
self.header = '' # text within header tags for toc
def indent(self, amt=1):
self.level += amt
self.tags = '' if self.level == 0 else 'l'+str(self.level)
def handle_starttag(self, tag, attrs):
"Handle starttags in help.html."
class_ = ''
for a, v in attrs:
if a == 'class':
class_ = v
s = ''
if tag == 'div' and class_ == 'section':
self.show = True # start of main content
elif tag == 'div' and class_ == 'sphinxsidebar':
self.show = False # end of main content
elif tag == 'p' and class_ != 'first':
s = '\n\n'
elif tag == 'span' and class_ == 'pre':
self.chartags = 'pre'
elif tag == 'span' and class_ == 'versionmodified':
self.chartags = 'em'
elif tag == 'em':
self.chartags = 'em'
elif tag in ['ul', 'ol']:
if class_.find('simple') != -1:
s = '\n'
self.simplelist = True
else:
self.simplelist = False
self.indent()
elif tag == 'dl':
if self.level > 0:
self.nested_dl = True
elif tag == 'li':
s = '\n* ' if self.simplelist else '\n\n* '
elif tag == 'dt':
s = '\n\n' if not self.nested_dl else '\n' # avoid extra line
self.nested_dl = False
elif tag == 'dd':
self.indent()
s = '\n'
elif tag == 'pre':
self.pre = True
if self.show:
self.text.insert('end', '\n\n')
self.tags = 'preblock'
elif tag == 'a' and class_ == 'headerlink':
self.hdrlink = True
elif tag == 'h1':
self.tags = tag
elif tag in ['h2', 'h3']:
if self.show:
self.header = ''
self.text.insert('end', '\n\n')
self.tags = tag
if self.show:
self.text.insert('end', s, (self.tags, self.chartags))
def handle_endtag(self, tag):
"Handle endtags in help.html."
if tag in ['h1', 'h2', 'h3']:
self.indent(0) # clear tag, reset indent
if self.show:
self.toc.append((self.header, self.text.index('insert')))
elif tag in ['span', 'em']:
self.chartags = ''
elif tag == 'a':
self.hdrlink = False
elif tag == 'pre':
self.pre = False
self.tags = ''
elif tag in ['ul', 'dd', 'ol']:
self.indent(amt=-1)
def handle_data(self, data):
"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':
self.hprefix = d[0:d.index(' ')]
if self.tags in ['h1', 'h2', 'h3'] and self.hprefix != '':
if d[0:len(self.hprefix)] == self.hprefix:
d = d[len(self.hprefix):].strip()
self.header += d
self.text.insert('end', d, (self.tags, self.chartags))
def handle_charref(self, name):
if self.show:
self.text.insert('end', unichr(int(name)))
class HelpText(Text):
"Display help.html."
def __init__(self, parent, filename):
"Configure tags and feed file to parser."
uwide = idleConf.GetOption('main', 'EditorWindow', 'width', type='int')
uhigh = idleConf.GetOption('main', 'EditorWindow', 'height', type='int')
uhigh = 3 * uhigh // 4 # lines average 4/3 of editor line height
Text.__init__(self, parent, wrap='word', highlightthickness=0,
padx=5, borderwidth=0, width=uwide, height=uhigh)
normalfont = self.findfont(['TkDefaultFont', 'arial', 'helvetica'])
fixedfont = self.findfont(['TkFixedFont', 'monaco', 'courier'])
self['font'] = (normalfont, 12)
self.tag_configure('em', font=(normalfont, 12, 'italic'))
self.tag_configure('h1', font=(normalfont, 20, 'bold'))
self.tag_configure('h2', font=(normalfont, 18, 'bold'))
self.tag_configure('h3', font=(normalfont, 15, 'bold'))
self.tag_configure('pre', font=(fixedfont, 12), background='#f6f6ff')
self.tag_configure('preblock', font=(fixedfont, 10), lmargin1=25,
borderwidth=1, relief='solid', background='#eeffcc')
self.tag_configure('l1', lmargin1=25, lmargin2=25)
self.tag_configure('l2', lmargin1=50, lmargin2=50)
self.tag_configure('l3', lmargin1=75, lmargin2=75)
self.tag_configure('l4', lmargin1=100, lmargin2=100)
self.parser = HelpParser(self)
with open(filename) as f:
contents = f.read().decode(encoding='utf-8')
self.parser.feed(contents)
self['state'] = 'disabled'
def findfont(self, names):
"Return name of first font family derived from names."
for name in names:
if name.lower() in (x.lower() for x in tkfont.names(root=self)):
font = tkfont.Font(name=name, exists=True, root=self)
return font.actual()['family']
elif name.lower() in (x.lower()
for x in tkfont.families(root=self)):
return name
class HelpFrame(Frame):
"Display html text, scrollbar, and toc."
def __init__(self, parent, filename):
Frame.__init__(self, parent)
text = HelpText(self, filename)
self['background'] = text['background']
scroll = Scrollbar(self, command=text.yview)
text['yscrollcommand'] = scroll.set
self.rowconfigure(0, weight=1)
self.columnconfigure(1, weight=1) # text
self.toc_menu(text).grid(column=0, row=0, sticky='nw')
text.grid(column=1, row=0, sticky='nsew')
scroll.grid(column=2, row=0, sticky='ns')
def toc_menu(self, text):
"Create table of contents as drop-down menu."
toc = Menubutton(self, text='TOC')
drop = Menu(toc, tearoff=False)
for lbl, dex in text.parser.toc:
drop.add_command(label=lbl, command=lambda dex=dex:text.yview(dex))
toc['menu'] = drop
return toc
class HelpWindow(Toplevel):
"Display frame with rendered html."
def __init__(self, parent, filename, title):
Toplevel.__init__(self, parent)
self.wm_title(title)
self.protocol("WM_DELETE_WINDOW", self.destroy)
HelpFrame(self, filename).grid(column=0, row=0, sticky='nsew')
self.grid_columnconfigure(0, weight=1)
self.grid_rowconfigure(0, weight=1)
def copy_strip():
"""Copy idle.html to idlelib/help.html, stripping trailing whitespace.
Files with trailing whitespace cannot be pushed to the hg cpython
repository. For 3.x (on Windows), help.html is generated, after
editing idle.rst in the earliest maintenance version, with
sphinx-build -bhtml . build/html
python_d.exe -c "from idlelib.help import copy_strip; copy_strip()"
After refreshing TortoiseHG workshop to generate a diff,
check both the diff and displayed text. Push the diff along with
the idle.rst change and merge both into default (or an intermediate
maintenance version).
When the 'earlist' version gets its final maintenance release,
do an update as described above, without editing idle.rst, to
rebase help.html on the next version of idle.rst. Do not worry
about version changes as version is not displayed. Examine other
changes and the result of Help -> IDLE Help.
If maintenance and default versions of idle.rst diverge, and
merging does not go smoothly, then consider generating
separate help.html files from separate idle.htmls.
"""
src = join(abspath(dirname(dirname(dirname(__file__)))),
'Doc', 'build', 'html', 'library', 'idle.html')
dst = join(abspath(dirname(__file__)), 'help.html')
with open(src, 'r') as inn,\
open(dst, 'w') as out:
for line in inn:
out.write(line.rstrip() + '\n')
print('idle.html copied to help.html')
def show_idlehelp(parent):
"Create HelpWindow; called from Idle Help event handler."
filename = join(abspath(dirname(__file__)), 'help.html')
if not isfile(filename):
# try copy_strip, present message
return
HelpWindow(parent, filename, 'IDLE Help (%s)' % python_version())
if __name__ == '__main__':
from idlelib.idle_test.htest import run
run(show_idlehelp)
SILENT KILLER Tool