diff options
-rw-r--r-- | Lib/idlelib/EditorWindow.py | 12 | ||||
-rw-r--r-- | Lib/idlelib/help.py | 233 | ||||
-rw-r--r-- | Lib/idlelib/help.txt | 4 | ||||
-rw-r--r-- | Lib/idlelib/idle.html | 671 | ||||
-rw-r--r-- | Lib/idlelib/idle_test/htest.py | 14 | ||||
-rw-r--r-- | Lib/idlelib/macosxSupport.py | 5 |
6 files changed, 927 insertions, 12 deletions
diff --git a/Lib/idlelib/EditorWindow.py b/Lib/idlelib/EditorWindow.py index 3ac68bb..09f2b28 100644 --- a/Lib/idlelib/EditorWindow.py +++ b/Lib/idlelib/EditorWindow.py @@ -21,6 +21,7 @@ from idlelib import PyParse from idlelib.configHandler import idleConf from idlelib import aboutDialog, textView, configDialog from idlelib import macosxSupport +from idlelib import help # The default tab setting for a Text widget, in average-width characters. TK_TABWIDTH_DEFAULT = 8 @@ -42,6 +43,11 @@ def _sphinx_version(): class HelpDialog(object): def __init__(self): + import warnings as w + w.warn("EditorWindow.HelpDialog is no longer used by Idle.\n" + "It will be removed in 3.6 or later.\n" + "It has been replaced by private help.HelpWindow\n", + DeprecationWarning, stacklevel=2) self.parent = None # parent of help window self.dlg = None # the help window iteself @@ -539,11 +545,13 @@ class EditorWindow(object): configDialog.ConfigExtensionsDialog(self.top) def help_dialog(self, event=None): + "Handle help doc event." + # edit maxosxSupport.overrideRootMenu.help_dialog to match if self.root: parent = self.root else: parent = self.top - helpDialog.display(parent, near=self.top) + help.show_idlehelp(parent) def python_docs(self, event=None): if sys.platform[:3] == 'win': @@ -1716,4 +1724,4 @@ def _editor_window(parent): # htest # if __name__ == '__main__': from idlelib.idle_test.htest import run - run(_help_dialog, _editor_window) + run(_editor_window) diff --git a/Lib/idlelib/help.py b/Lib/idlelib/help.py new file mode 100644 index 0000000..b1047c8 --- /dev/null +++ b/Lib/idlelib/help.py @@ -0,0 +1,233 @@ +""" +help.py implements the Idle help menu and is subject to change. + +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. + +HelpText - Displays formatted idle.html. + +HelpFrame - Contains text, scrollbar, and table-of-contents. +(This will be needed for display in a future tabbed window.) + +HelpWindow - Display idleframe in a standalone window. + +show_idlehelp - Create HelpWindow. Called in EditorWindow.help_dialog. +""" +from html.parser import HTMLParser +from os.path import abspath, dirname, isdir, isfile, join +from tkinter import Tk, Toplevel, Frame, Text, Scrollbar, Menu, Menubutton +from tkinter import font as tkfont + +use_ttk = False # until available to import +if use_ttk: + from tkinter.ttk import Menubutton + +## About IDLE ## + + +## IDLE Help ## + +class HelpParser(HTMLParser): + """Render idle.html generated by Sphinx from idle.rst. + + 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. + """ + def __init__(self, text): + HTMLParser.__init__(self, convert_charrefs=True) + self.text = text # text widget we're rendering into + self.tags = '' # current text tags to apply + 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 = '' # strip e.g. '25.5' from headings + self.nested_dl = False # if we're in a nested <dl> + self.simplelist = False # simple list (no double spacing) + self.tocid = 1 # id for table of contents entries + self.contents = [] # map toc ids to section titles + self.data = '' # to record data 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 idle.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.tags = 'pre' + elif tag == 'span' and class_ == 'versionmodified': + self.tags = 'em' + elif tag == 'em': + self.tags = '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.text.mark_set('toc'+str(self.tocid), + self.text.index('end-1line')) + self.tags = tag + elif tag in ['h2', 'h3']: + if self.show: + self.data = '' + self.text.mark_set('toc'+str(self.tocid), + self.text.index('end-1line')) + self.text.insert('end', '\n\n') + self.tags = tag + if self.show: + self.text.insert('end', s, self.tags) + + def handle_endtag(self, tag): + "Handle endtags in idle.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']: + title = self.data + self.contents.append(('toc'+str(self.tocid), title)) + self.tocid += 1 + 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 idle.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.data += d + self.text.insert('end', d, self.tags) + + +class HelpText(Text): + "Display idle.html." + def __init__(self, parent, filename): + "Configure tags and feed file to parser." + Text.__init__(self, parent, wrap='word', highlightthickness=0, + padx=5, borderwidth=0) + + 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)) + 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, encoding='utf-8') as f: + contents = f.read() + 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): + 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 + text.grid(column=1, row=0, sticky='nsew') + scroll.grid(column=2, row=0, sticky='ns') + self.grid_columnconfigure(1, weight=1) + self.grid_rowconfigure(0, weight=1) + toc = self.contents_widget(text) + toc.grid(column=0, row=0, sticky='nw') + + def contents_widget(self, text): + toc = Menubutton(self, text='TOC') + drop = Menu(toc, tearoff=False) + for tag, lbl in text.parser.contents: + drop.add_command(label=lbl, command=lambda mark=tag:text.see(mark)) + toc['menu'] = drop + return toc + + +class HelpWindow(Toplevel): + + 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 show_idlehelp(parent): + filename = join(abspath(dirname(__file__)), 'idle.html') + if not isfile(filename): + dirpath = join(abspath(dirname(dirname(dirname(__file__)))), + 'Doc', 'build', 'html', 'library') + HelpWindow(parent, filename, 'IDLE Help') + +if __name__ == '__main__': + from idlelib.idle_test.htest import run + run(show_idlehelp) diff --git a/Lib/idlelib/help.txt b/Lib/idlelib/help.txt index 3f7bb23..89fbe0b 100644 --- a/Lib/idlelib/help.txt +++ b/Lib/idlelib/help.txt @@ -1,3 +1,7 @@ +This file, idlelib/help.txt is out-of-date and no longer used by Idle. +It is deprecated and will be removed in the future, possibly in 3.6 +---------------------------------------------------------------------- + [See the end of this file for ** TIPS ** on using IDLE !!] IDLE is the Python IDE built with the tkinter GUI toolkit. diff --git a/Lib/idlelib/idle.html b/Lib/idlelib/idle.html new file mode 100644 index 0000000..6e8d89b --- /dev/null +++ b/Lib/idlelib/idle.html @@ -0,0 +1,671 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" + "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> + + +<html xmlns="http://www.w3.org/1999/xhtml"> + <head> + <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> + + <title>25.5. IDLE — Python 3.4.3 documentation</title> + + <link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" /> + <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> + + <script type="text/javascript"> + var DOCUMENTATION_OPTIONS = { + URL_ROOT: '../', + VERSION: '3.4.3', + COLLAPSE_INDEX: false, + FILE_SUFFIX: '.html', + HAS_SOURCE: true + }; + </script> + <script type="text/javascript" src="../_static/jquery.js"></script> + <script type="text/javascript" src="../_static/underscore.js"></script> + <script type="text/javascript" src="../_static/doctools.js"></script> + <script type="text/javascript" src="../_static/sidebar.js"></script> + <link rel="search" type="application/opensearchdescription+xml" + title="Search within Python 3.4.3 documentation" + href="../_static/opensearch.xml"/> + <link rel="author" title="About these documents" href="../about.html" /> + <link rel="copyright" title="Copyright" href="../copyright.html" /> + <link rel="top" title="Python 3.4.3 documentation" href="../index.html" /> + <link rel="up" title="25. Graphical User Interfaces with Tk" href="tk.html" /> + <link rel="next" title="25.6. Other Graphical User Interface Packages" href="othergui.html" /> + <link rel="prev" title="25.4. tkinter.scrolledtext — Scrolled Text Widget" href="tkinter.scrolledtext.html" /> + <link rel="shortcut icon" type="image/png" href="../_static/py.png" /> + <script type="text/javascript" src="../_static/copybutton.js"></script> + + + + + </head> + <body> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + accesskey="I">index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="othergui.html" title="25.6. Other Graphical User Interface Packages" + accesskey="N">next</a> |</li> + <li class="right" > + <a href="tkinter.scrolledtext.html" title="25.4. tkinter.scrolledtext — Scrolled Text Widget" + accesskey="P">previous</a> |</li> + <li><img src="../_static/py.png" alt="" + style="vertical-align: middle; margin-top: -1px"/></li> + <li><a href="https://www.python.org/">Python</a> »</li> + <li> + <a href="../index.html">3.4.3 Documentation</a> » + </li> + + <li><a href="index.html" >The Python Standard Library</a> »</li> + <li><a href="tk.html" accesskey="U">25. Graphical User Interfaces with Tk</a> »</li> + </ul> + </div> + + <div class="document"> + <div class="documentwrapper"> + <div class="bodywrapper"> + <div class="body"> + + <div class="section" id="idle"> +<span id="id1"></span><h1>25.5. IDLE<a class="headerlink" href="#idle" title="Permalink to this headline">¶</a></h1> +<p id="index-0">IDLE is the Python IDE built with the <a class="reference internal" href="tkinter.html#module-tkinter" title="tkinter: Interface to Tcl/Tk for graphical user interfaces"><tt class="xref py py-mod docutils literal"><span class="pre">tkinter</span></tt></a> GUI toolkit.</p> +<p>IDLE has the following features:</p> +<ul class="simple"> +<li>coded in 100% pure Python, using the <a class="reference internal" href="tkinter.html#module-tkinter" title="tkinter: Interface to Tcl/Tk for graphical user interfaces"><tt class="xref py py-mod docutils literal"><span class="pre">tkinter</span></tt></a> GUI toolkit</li> +<li>cross-platform: works on Windows, Unix, and Mac OS X</li> +<li>multi-window text editor with multiple undo, Python colorizing, +smart indent, call tips, and many other features</li> +<li>Python shell window (a.k.a. interactive interpreter)</li> +<li>debugger (not complete, but you can set breakpoints, view and step)</li> +</ul> +<div class="section" id="menus"> +<h2>25.5.1. Menus<a class="headerlink" href="#menus" title="Permalink to this headline">¶</a></h2> +<p>IDLE has two main window types, the Shell window and the Editor window. It is +possible to have multiple editor windows simultaneously. Output windows, such +as used for Edit / Find in Files, are a subtype of edit window. They currently +have the same top menu as Editor windows but a different default title and +context menu.</p> +<p>IDLE’s menus dynamically change based on which window is currently selected. +Each menu documented below indicates which window type it is associated with.</p> +<div class="section" id="file-menu-shell-and-editor"> +<h3>25.5.1.1. File menu (Shell and Editor)<a class="headerlink" href="#file-menu-shell-and-editor" title="Permalink to this headline">¶</a></h3> +<dl class="docutils"> +<dt>New File</dt> +<dd>Create a new file editing window.</dd> +<dt>Open...</dt> +<dd>Open an existing file with an Open dialog.</dd> +<dt>Recent Files</dt> +<dd>Open a list of recent files. Click one to open it.</dd> +<dt>Open Module...</dt> +<dd>Open an existing module (searches sys.path).</dd> +</dl> +<dl class="docutils" id="index-1"> +<dt>Class Browser</dt> +<dd>Show functions, classes, and methods in the current Editor file in a +tree structure. In the shell, open a module first.</dd> +<dt>Path Browser</dt> +<dd>Show sys.path directories, modules, functions, classes and methods in a +tree structure.</dd> +<dt>Save</dt> +<dd>Save the current window to the associated file, if there is one. Windows +that have been changed since being opened or last saved have a * before +and after the window title. If there is no associated file, +do Save As instead.</dd> +<dt>Save As...</dt> +<dd>Save the current window with a Save As dialog. The file saved becomes the +new associated file for the window.</dd> +<dt>Save Copy As...</dt> +<dd>Save the current window to different file without changing the associated +file.</dd> +<dt>Print Window</dt> +<dd>Print the current window to the default printer.</dd> +<dt>Close</dt> +<dd>Close the current window (ask to save if unsaved).</dd> +<dt>Exit</dt> +<dd>Close all windows and quit IDLE (ask to save unsaved windows).</dd> +</dl> +</div> +<div class="section" id="edit-menu-shell-and-editor"> +<h3>25.5.1.2. Edit menu (Shell and Editor)<a class="headerlink" href="#edit-menu-shell-and-editor" title="Permalink to this headline">¶</a></h3> +<dl class="docutils"> +<dt>Undo</dt> +<dd>Undo the last change to the current window. A maximum of 1000 changes may +be undone.</dd> +<dt>Redo</dt> +<dd>Redo the last undone change to the current window.</dd> +<dt>Cut</dt> +<dd>Copy selection into the system-wide clipboard; then delete the selection.</dd> +<dt>Copy</dt> +<dd>Copy selection into the system-wide clipboard.</dd> +<dt>Paste</dt> +<dd>Insert contents of the system-wide clipboard into the current window.</dd> +</dl> +<p>The clipboard functions are also available in context menus.</p> +<dl class="docutils"> +<dt>Select All</dt> +<dd>Select the entire contents of the current window.</dd> +<dt>Find...</dt> +<dd>Open a search dialog with many options</dd> +<dt>Find Again</dt> +<dd>Repeat the last search, if there is one.</dd> +<dt>Find Selection</dt> +<dd>Search for the currently selected string, if there is one.</dd> +<dt>Find in Files...</dt> +<dd>Open a file search dialog. Put results in an new output window.</dd> +<dt>Replace...</dt> +<dd>Open a search-and-replace dialog.</dd> +<dt>Go to Line</dt> +<dd>Move cursor to the line number requested and make that line visible.</dd> +<dt>Show Completions</dt> +<dd>Open a scrollable list allowing selection of keywords and attributes. See +Completions in the Tips sections below.</dd> +<dt>Expand Word</dt> +<dd>Expand a prefix you have typed to match a full word in the same window; +repeat to get a different expansion.</dd> +<dt>Show call tip</dt> +<dd>After an unclosed parenthesis for a function, open a small window with +function parameter hints.</dd> +<dt>Show surrounding parens</dt> +<dd>Highlight the surrounding parenthesis.</dd> +</dl> +</div> +<div class="section" id="format-menu-editor-window-only"> +<h3>25.5.1.3. Format menu (Editor window only)<a class="headerlink" href="#format-menu-editor-window-only" title="Permalink to this headline">¶</a></h3> +<dl class="docutils"> +<dt>Indent Region</dt> +<dd>Shift selected lines right by the indent width (default 4 spaces).</dd> +<dt>Dedent Region</dt> +<dd>Shift selected lines left by the indent width (default 4 spaces).</dd> +<dt>Comment Out Region</dt> +<dd>Insert ## in front of selected lines.</dd> +<dt>Uncomment Region</dt> +<dd>Remove leading # or ## from selected lines.</dd> +<dt>Tabify Region</dt> +<dd>Turn <em>leading</em> stretches of spaces into tabs. (Note: We recommend using +4 space blocks to indent Python code.)</dd> +<dt>Untabify Region</dt> +<dd>Turn <em>all</em> tabs into the correct number of spaces.</dd> +<dt>Toggle Tabs</dt> +<dd>Open a dialog to switch between indenting with spaces and tabs.</dd> +<dt>New Indent Width</dt> +<dd>Open a dialog to change indent width. The accepted default by the Python +community is 4 spaces.</dd> +<dt>Format Paragraph</dt> +<dd>Reformat the current blank-line-delimited paragraph in comment block or +multiline string or selected line in a string. All lines in the +paragraph will be formatted to less than N columns, where N defaults to 72.</dd> +<dt>Strip trailing whitespace</dt> +<dd>Remove any space characters after the last non-space character of a line.</dd> +</dl> +</div> +<div class="section" id="run-menu-editor-window-only"> +<span id="index-2"></span><h3>25.5.1.4. Run menu (Editor window only)<a class="headerlink" href="#run-menu-editor-window-only" title="Permalink to this headline">¶</a></h3> +<dl class="docutils"> +<dt>Python Shell</dt> +<dd>Open or wake up the Python Shell window.</dd> +<dt>Check Module</dt> +<dd>Check the syntax of the module currently open in the Editor window. If the +module has not been saved IDLE will either prompt the user to save or +autosave, as selected in the General tab of the Idle Settings dialog. If +there is a syntax error, the approximate location is indicated in the +Editor window.</dd> +<dt>Run Module</dt> +<dd>Do Check Module (above). If no error, restart the shell to clean the +environment, then execute the module.</dd> +</dl> +</div> +<div class="section" id="shell-menu-shell-window-only"> +<h3>25.5.1.5. Shell menu (Shell window only)<a class="headerlink" href="#shell-menu-shell-window-only" title="Permalink to this headline">¶</a></h3> +<dl class="docutils"> +<dt>View Last Restart</dt> +<dd>Scroll the shell window to the last Shell restart.</dd> +<dt>Restart Shell</dt> +<dd>Restart the shell to clean the environment.</dd> +</dl> +</div> +<div class="section" id="debug-menu-shell-window-only"> +<h3>25.5.1.6. Debug menu (Shell window only)<a class="headerlink" href="#debug-menu-shell-window-only" title="Permalink to this headline">¶</a></h3> +<dl class="docutils"> +<dt>Go to File/Line</dt> +<dd>Look on the current line. with the cursor, and the line above for a filename +and line number. If found, open the file if not already open, and show the +line. Use this to view source lines referenced in an exception traceback +and lines found by Find in Files. Also available in the context menu of +the Shell window and Output windows.</dd> +</dl> +<dl class="docutils" id="index-3"> +<dt>Debugger (toggle)</dt> +<dd>When actived, code entered in the Shell or run from an Editor will run +under the debugger. In the Editor, breakpoints can be set with the context +menu. This feature is still incomplete and somewhat experimental.</dd> +<dt>Stack Viewer</dt> +<dd>Show the stack traceback of the last exception in a tree widget, with +access to locals and globals.</dd> +<dt>Auto-open Stack Viewer</dt> +<dd>Toggle automatically opening the stack viewer on an unhandled exception.</dd> +</dl> +</div> +<div class="section" id="options-menu-shell-and-editor"> +<h3>25.5.1.7. Options menu (Shell and Editor)<a class="headerlink" href="#options-menu-shell-and-editor" title="Permalink to this headline">¶</a></h3> +<dl class="docutils"> +<dt>Configure IDLE</dt> +<dd>Open a configuration dialog. Fonts, indentation, keybindings, and color +themes may be altered. Startup Preferences may be set, and additional +help sources can be specified. Non-default user setting are saved in a +.idlerc directory in the user’s home directory. Problems caused by bad user +configuration files are solved by editing or deleting one or more of the +files in .idlerc. On OS X, open the configuration dialog by selecting +Preferences in the application menu.</dd> +<dt>Configure Extensions</dt> +<dd>Open a configuration dialog for setting preferences for extensions +(discussed below). See note above about the location of user settings.</dd> +<dt>Code Context (toggle)(Editor Window only)</dt> +<dd>Open a pane at the top of the edit window which shows the block context +of the code which has scrolled above the top of the window.</dd> +</dl> +</div> +<div class="section" id="window-menu-shell-and-editor"> +<h3>25.5.1.8. Window menu (Shell and Editor)<a class="headerlink" href="#window-menu-shell-and-editor" title="Permalink to this headline">¶</a></h3> +<dl class="docutils"> +<dt>Zoom Height</dt> +<dd>Toggles the window between normal size and maximum height. The initial size +defaults to 40 lines by 80 chars unless changed on the General tab of the +Configure IDLE dialog.</dd> +</dl> +<p>The rest of this menu lists the names of all open windows; select one to bring +it to the foreground (deiconifying it if necessary).</p> +</div> +<div class="section" id="help-menu-shell-and-editor"> +<h3>25.5.1.9. Help menu (Shell and Editor)<a class="headerlink" href="#help-menu-shell-and-editor" title="Permalink to this headline">¶</a></h3> +<dl class="docutils"> +<dt>About IDLE</dt> +<dd>Display version, copyright, license, credits, and more.</dd> +<dt>IDLE Help</dt> +<dd>Display a help file for IDLE detailing the menu options, basic editing and +navigation, and other tips.</dd> +<dt>Python Docs</dt> +<dd>Access local Python documentation, if installed, or start a web browser +and open docs.python.org showing the latest Python documentation.</dd> +<dt>Turtle Demo</dt> +<dd>Run the turtledemo module with example python code and turtle drawings.</dd> +</dl> +<p>Additional help sources may be added here with the Configure IDLE dialog under +the General tab.</p> +</div> +<div class="section" id="context-menus"> +<span id="index-4"></span><h3>25.5.1.10. Context Menus<a class="headerlink" href="#context-menus" title="Permalink to this headline">¶</a></h3> +<p>Open a context menu by right-clicking in a window (Control-click on OS X). +Context menus have the standard clipboard functions also on the Edit menu.</p> +<dl class="docutils"> +<dt>Cut</dt> +<dd>Copy selection into the system-wide clipboard; then delete the selection.</dd> +<dt>Copy</dt> +<dd>Copy selection into the system-wide clipboard.</dd> +<dt>Paste</dt> +<dd>Insert contents of the system-wide clipboard into the current window.</dd> +</dl> +<p>Editor windows also have breakpoint functions. Lines with a breakpoint set are +specially marked. Breakpoints only have an effect when running under the +debugger. Breakpoints for a file are saved in the user’s .idlerc directory.</p> +<dl class="docutils"> +<dt>Set Breakpoint</dt> +<dd>Set a breakpoint on the current line.</dd> +<dt>Clear Breakpoint</dt> +<dd>Clear the breakpoint on that line.</dd> +</dl> +<p>Shell and Output windows have the following.</p> +<dl class="docutils"> +<dt>Go to file/line</dt> +<dd>Same as in Debug menu.</dd> +</dl> +</div> +</div> +<div class="section" id="editing-and-navigation"> +<h2>25.5.2. Editing and navigation<a class="headerlink" href="#editing-and-navigation" title="Permalink to this headline">¶</a></h2> +<p>In this section, ‘C’ refers to the <tt class="kbd docutils literal"><span class="pre">Control</span></tt> key on Windows and Unix and +the <tt class="kbd docutils literal"><span class="pre">Command</span></tt> key on Mac OSX.</p> +<ul> +<li><p class="first"><tt class="kbd docutils literal"><span class="pre">Backspace</span></tt> deletes to the left; <tt class="kbd docutils literal"><span class="pre">Del</span></tt> deletes to the right</p> +</li> +<li><p class="first"><tt class="kbd docutils literal"><span class="pre">C-Backspace</span></tt> delete word left; <tt class="kbd docutils literal"><span class="pre">C-Del</span></tt> delete word to the right</p> +</li> +<li><p class="first">Arrow keys and <tt class="kbd docutils literal"><span class="pre">Page</span> <span class="pre">Up</span></tt>/<tt class="kbd docutils literal"><span class="pre">Page</span> <span class="pre">Down</span></tt> to move around</p> +</li> +<li><p class="first"><tt class="kbd docutils literal"><span class="pre">C-LeftArrow</span></tt> and <tt class="kbd docutils literal"><span class="pre">C-RightArrow</span></tt> moves by words</p> +</li> +<li><p class="first"><tt class="kbd docutils literal"><span class="pre">Home</span></tt>/<tt class="kbd docutils literal"><span class="pre">End</span></tt> go to begin/end of line</p> +</li> +<li><p class="first"><tt class="kbd docutils literal"><span class="pre">C-Home</span></tt>/<tt class="kbd docutils literal"><span class="pre">C-End</span></tt> go to begin/end of file</p> +</li> +<li><p class="first">Some useful Emacs bindings are inherited from Tcl/Tk:</p> +<blockquote> +<div><ul class="simple"> +<li><tt class="kbd docutils literal"><span class="pre">C-a</span></tt> beginning of line</li> +<li><tt class="kbd docutils literal"><span class="pre">C-e</span></tt> end of line</li> +<li><tt class="kbd docutils literal"><span class="pre">C-k</span></tt> kill line (but doesn’t put it in clipboard)</li> +<li><tt class="kbd docutils literal"><span class="pre">C-l</span></tt> center window around the insertion point</li> +<li><tt class="kbd docutils literal"><span class="pre">C-b</span></tt> go backwards one character without deleting (usually you can +also use the cursor key for this)</li> +<li><tt class="kbd docutils literal"><span class="pre">C-f</span></tt> go forward one character without deleting (usually you can +also use the cursor key for this)</li> +<li><tt class="kbd docutils literal"><span class="pre">C-p</span></tt> go up one line (usually you can also use the cursor key for +this)</li> +<li><tt class="kbd docutils literal"><span class="pre">C-d</span></tt> delete next character</li> +</ul> +</div></blockquote> +</li> +</ul> +<p>Standard keybindings (like <tt class="kbd docutils literal"><span class="pre">C-c</span></tt> to copy and <tt class="kbd docutils literal"><span class="pre">C-v</span></tt> to paste) +may work. Keybindings are selected in the Configure IDLE dialog.</p> +<div class="section" id="automatic-indentation"> +<h3>25.5.2.1. Automatic indentation<a class="headerlink" href="#automatic-indentation" title="Permalink to this headline">¶</a></h3> +<p>After a block-opening statement, the next line is indented by 4 spaces (in the +Python Shell window by one tab). After certain keywords (break, return etc.) +the next line is dedented. In leading indentation, <tt class="kbd docutils literal"><span class="pre">Backspace</span></tt> deletes up +to 4 spaces if they are there. <tt class="kbd docutils literal"><span class="pre">Tab</span></tt> inserts spaces (in the Python +Shell window one tab), number depends on Indent width. Currently tabs +are restricted to four spaces due to Tcl/Tk limitations.</p> +<p>See also the indent/dedent region commands in the edit menu.</p> +</div> +<div class="section" id="completions"> +<h3>25.5.2.2. Completions<a class="headerlink" href="#completions" title="Permalink to this headline">¶</a></h3> +<p>Completions are supplied for functions, classes, and attributes of classes, +both built-in and user-defined. Completions are also provided for +filenames.</p> +<p>The AutoCompleteWindow (ACW) will open after a predefined delay (default is +two seconds) after a ‘.’ or (in a string) an os.sep is typed. If after one +of those characters (plus zero or more other characters) a tab is typed +the ACW will open immediately if a possible continuation is found.</p> +<p>If there is only one possible completion for the characters entered, a +<tt class="kbd docutils literal"><span class="pre">Tab</span></tt> will supply that completion without opening the ACW.</p> +<p>‘Show Completions’ will force open a completions window, by default the +<tt class="kbd docutils literal"><span class="pre">C-space</span></tt> will open a completions window. In an empty +string, this will contain the files in the current directory. On a +blank line, it will contain the built-in and user-defined functions and +classes in the current name spaces, plus any modules imported. If some +characters have been entered, the ACW will attempt to be more specific.</p> +<p>If a string of characters is typed, the ACW selection will jump to the +entry most closely matching those characters. Entering a <tt class="kbd docutils literal"><span class="pre">tab</span></tt> will +cause the longest non-ambiguous match to be entered in the Editor window or +Shell. Two <tt class="kbd docutils literal"><span class="pre">tab</span></tt> in a row will supply the current ACW selection, as +will return or a double click. Cursor keys, Page Up/Down, mouse selection, +and the scroll wheel all operate on the ACW.</p> +<p>“Hidden” attributes can be accessed by typing the beginning of hidden +name after a ‘.’, e.g. ‘_’. This allows access to modules with +<tt class="docutils literal"><span class="pre">__all__</span></tt> set, or to class-private attributes.</p> +<p>Completions and the ‘Expand Word’ facility can save a lot of typing!</p> +<p>Completions are currently limited to those in the namespaces. Names in +an Editor window which are not via <tt class="docutils literal"><span class="pre">__main__</span></tt> and <a class="reference internal" href="sys.html#sys.modules" title="sys.modules"><tt class="xref py py-data docutils literal"><span class="pre">sys.modules</span></tt></a> will +not be found. Run the module once with your imports to correct this situation. +Note that IDLE itself places quite a few modules in sys.modules, so +much can be found by default, e.g. the re module.</p> +<p>If you don’t like the ACW popping up unbidden, simply make the delay +longer or disable the extension. Or another option is the delay could +be set to zero. Another alternative to preventing ACW popups is to +disable the call tips extension.</p> +</div> +<div class="section" id="python-shell-window"> +<h3>25.5.2.3. Python Shell window<a class="headerlink" href="#python-shell-window" title="Permalink to this headline">¶</a></h3> +<ul> +<li><p class="first"><tt class="kbd docutils literal"><span class="pre">C-c</span></tt> interrupts executing command</p> +</li> +<li><p class="first"><tt class="kbd docutils literal"><span class="pre">C-d</span></tt> sends end-of-file; closes window if typed at a <tt class="docutils literal"><span class="pre">>>></span></tt> prompt</p> +</li> +<li><p class="first"><tt class="kbd docutils literal"><span class="pre">Alt-/</span></tt> (Expand word) is also useful to reduce typing</p> +<p>Command history</p> +<ul class="simple"> +<li><tt class="kbd docutils literal"><span class="pre">Alt-p</span></tt> retrieves previous command matching what you have typed. On +OS X use <tt class="kbd docutils literal"><span class="pre">C-p</span></tt>.</li> +<li><tt class="kbd docutils literal"><span class="pre">Alt-n</span></tt> retrieves next. On OS X use <tt class="kbd docutils literal"><span class="pre">C-n</span></tt>.</li> +<li><tt class="kbd docutils literal"><span class="pre">Return</span></tt> while on any previous command retrieves that command</li> +</ul> +</li> +</ul> +</div> +</div> +<div class="section" id="syntax-colors"> +<h2>25.5.3. Syntax colors<a class="headerlink" href="#syntax-colors" title="Permalink to this headline">¶</a></h2> +<p>The coloring is applied in a background “thread,” so you may occasionally see +uncolorized text. To change the color scheme, edit the <tt class="docutils literal"><span class="pre">[Colors]</span></tt> section in +<tt class="file docutils literal"><span class="pre">config.txt</span></tt>.</p> +<dl class="docutils"> +<dt>Python syntax colors:</dt> +<dd><dl class="first last docutils"> +<dt>Keywords</dt> +<dd>orange</dd> +<dt>Strings</dt> +<dd>green</dd> +<dt>Comments</dt> +<dd>red</dd> +<dt>Definitions</dt> +<dd>blue</dd> +</dl> +</dd> +<dt>Shell colors:</dt> +<dd><dl class="first last docutils"> +<dt>Console output</dt> +<dd>brown</dd> +<dt>stdout</dt> +<dd>blue</dd> +<dt>stderr</dt> +<dd>dark green</dd> +<dt>stdin</dt> +<dd>black</dd> +</dl> +</dd> +</dl> +</div> +<div class="section" id="startup"> +<h2>25.5.4. Startup<a class="headerlink" href="#startup" title="Permalink to this headline">¶</a></h2> +<p>Upon startup with the <tt class="docutils literal"><span class="pre">-s</span></tt> option, IDLE will execute the file referenced by +the environment variables <span class="target" id="index-5"></span><tt class="xref std std-envvar docutils literal"><span class="pre">IDLESTARTUP</span></tt> or <span class="target" id="index-6"></span><a class="reference internal" href="../using/cmdline.html#envvar-PYTHONSTARTUP"><tt class="xref std std-envvar docutils literal"><span class="pre">PYTHONSTARTUP</span></tt></a>. +IDLE first checks for <tt class="docutils literal"><span class="pre">IDLESTARTUP</span></tt>; if <tt class="docutils literal"><span class="pre">IDLESTARTUP</span></tt> is present the file +referenced is run. If <tt class="docutils literal"><span class="pre">IDLESTARTUP</span></tt> is not present, IDLE checks for +<tt class="docutils literal"><span class="pre">PYTHONSTARTUP</span></tt>. Files referenced by these environment variables are +convenient places to store functions that are used frequently from the IDLE +shell, or for executing import statements to import common modules.</p> +<p>In addition, <tt class="docutils literal"><span class="pre">Tk</span></tt> also loads a startup file if it is present. Note that the +Tk file is loaded unconditionally. This additional file is <tt class="docutils literal"><span class="pre">.Idle.py</span></tt> and is +looked for in the user’s home directory. Statements in this file will be +executed in the Tk namespace, so this file is not useful for importing +functions to be used from IDLE’s Python shell.</p> +<div class="section" id="command-line-usage"> +<h3>25.5.4.1. Command line usage<a class="headerlink" href="#command-line-usage" title="Permalink to this headline">¶</a></h3> +<div class="highlight-python3"><div class="highlight"><pre>idle.py [-c command] [-d] [-e] [-s] [-t title] [arg] ... + +-c command run this command +-d enable debugger +-e edit mode; arguments are files to be edited +-s run $IDLESTARTUP or $PYTHONSTARTUP first +-t title set title of shell window +</pre></div> +</div> +<p>If there are arguments:</p> +<ol class="arabic simple"> +<li>If <tt class="docutils literal"><span class="pre">-e</span></tt> is used, arguments are files opened for editing and +<tt class="docutils literal"><span class="pre">sys.argv</span></tt> reflects the arguments passed to IDLE itself.</li> +<li>Otherwise, if <tt class="docutils literal"><span class="pre">-c</span></tt> is used, all arguments are placed in +<tt class="docutils literal"><span class="pre">sys.argv[1:...]</span></tt>, with <tt class="docutils literal"><span class="pre">sys.argv[0]</span></tt> set to <tt class="docutils literal"><span class="pre">'-c'</span></tt>.</li> +<li>Otherwise, if neither <tt class="docutils literal"><span class="pre">-e</span></tt> nor <tt class="docutils literal"><span class="pre">-c</span></tt> is used, the first +argument is a script which is executed with the remaining arguments in +<tt class="docutils literal"><span class="pre">sys.argv[1:...]</span></tt> and <tt class="docutils literal"><span class="pre">sys.argv[0]</span></tt> set to the script name. If the +script name is ‘-‘, no script is executed but an interactive Python session +is started; the arguments are still available in <tt class="docutils literal"><span class="pre">sys.argv</span></tt>.</li> +</ol> +</div> +<div class="section" id="running-without-a-subprocess"> +<h3>25.5.4.2. Running without a subprocess<a class="headerlink" href="#running-without-a-subprocess" title="Permalink to this headline">¶</a></h3> +<p>If IDLE is started with the -n command line switch it will run in a +single process and will not create the subprocess which runs the RPC +Python execution server. This can be useful if Python cannot create +the subprocess or the RPC socket interface on your platform. However, +in this mode user code is not isolated from IDLE itself. Also, the +environment is not restarted when Run/Run Module (F5) is selected. If +your code has been modified, you must reload() the affected modules and +re-import any specific items (e.g. from foo import baz) if the changes +are to take effect. For these reasons, it is preferable to run IDLE +with the default subprocess if at all possible.</p> +<div class="deprecated"> +<p><span class="versionmodified">Deprecated since version 3.4.</span></p> +</div> +</div> +</div> +<div class="section" id="help-and-preferences"> +<h2>25.5.5. Help and preferences<a class="headerlink" href="#help-and-preferences" title="Permalink to this headline">¶</a></h2> +<div class="section" id="additional-help-sources"> +<h3>25.5.5.1. Additional help sources<a class="headerlink" href="#additional-help-sources" title="Permalink to this headline">¶</a></h3> +<p>IDLE includes a help menu entry called “Python Docs” that will open the +extensive sources of help, including tutorials, available at docs.python.org. +Selected URLs can be added or removed from the help menu at any time using the +Configure IDLE dialog. See the IDLE help option in the help menu of IDLE for +more information.</p> +</div> +<div class="section" id="setting-preferences"> +<h3>25.5.5.2. Setting preferences<a class="headerlink" href="#setting-preferences" title="Permalink to this headline">¶</a></h3> +<p>The font preferences, highlighting, keys, and general preferences can be +changed via Configure IDLE on the Option menu. Keys can be user defined; +IDLE ships with four built in key sets. In addition a user can create a +custom key set in the Configure IDLE dialog under the keys tab.</p> +</div> +<div class="section" id="extensions"> +<h3>25.5.5.3. Extensions<a class="headerlink" href="#extensions" title="Permalink to this headline">¶</a></h3> +<p>IDLE contains an extension facility. Peferences for extensions can be +changed with Configure Extensions. See the beginning of config-extensions.def +in the idlelib directory for further information. The default extensions +are currently:</p> +<ul class="simple"> +<li>FormatParagraph</li> +<li>AutoExpand</li> +<li>ZoomHeight</li> +<li>ScriptBinding</li> +<li>CallTips</li> +<li>ParenMatch</li> +<li>AutoComplete</li> +<li>CodeContext</li> +<li>RstripExtension</li> +</ul> +</div> +</div> +</div> + + + </div> + </div> + </div> + <div class="sphinxsidebar"> + <div class="sphinxsidebarwrapper"> + <h3><a href="../contents.html">Table Of Contents</a></h3> + <ul> +<li><a class="reference internal" href="#">25.5. IDLE</a><ul> +<li><a class="reference internal" href="#menus">25.5.1. Menus</a><ul> +<li><a class="reference internal" href="#file-menu-shell-and-editor">25.5.1.1. File menu (Shell and Editor)</a></li> +<li><a class="reference internal" href="#edit-menu-shell-and-editor">25.5.1.2. Edit menu (Shell and Editor)</a></li> +<li><a class="reference internal" href="#format-menu-editor-window-only">25.5.1.3. Format menu (Editor window only)</a></li> +<li><a class="reference internal" href="#run-menu-editor-window-only">25.5.1.4. Run menu (Editor window only)</a></li> +<li><a class="reference internal" href="#shell-menu-shell-window-only">25.5.1.5. Shell menu (Shell window only)</a></li> +<li><a class="reference internal" href="#debug-menu-shell-window-only">25.5.1.6. Debug menu (Shell window only)</a></li> +<li><a class="reference internal" href="#options-menu-shell-and-editor">25.5.1.7. Options menu (Shell and Editor)</a></li> +<li><a class="reference internal" href="#window-menu-shell-and-editor">25.5.1.8. Window menu (Shell and Editor)</a></li> +<li><a class="reference internal" href="#help-menu-shell-and-editor">25.5.1.9. Help menu (Shell and Editor)</a></li> +<li><a class="reference internal" href="#context-menus">25.5.1.10. Context Menus</a></li> +</ul> +</li> +<li><a class="reference internal" href="#editing-and-navigation">25.5.2. Editing and navigation</a><ul> +<li><a class="reference internal" href="#automatic-indentation">25.5.2.1. Automatic indentation</a></li> +<li><a class="reference internal" href="#completions">25.5.2.2. Completions</a></li> +<li><a class="reference internal" href="#python-shell-window">25.5.2.3. Python Shell window</a></li> +</ul> +</li> +<li><a class="reference internal" href="#syntax-colors">25.5.3. Syntax colors</a></li> +<li><a class="reference internal" href="#startup">25.5.4. Startup</a><ul> +<li><a class="reference internal" href="#command-line-usage">25.5.4.1. Command line usage</a></li> +<li><a class="reference internal" href="#running-without-a-subprocess">25.5.4.2. Running without a subprocess</a></li> +</ul> +</li> +<li><a class="reference internal" href="#help-and-preferences">25.5.5. Help and preferences</a><ul> +<li><a class="reference internal" href="#additional-help-sources">25.5.5.1. Additional help sources</a></li> +<li><a class="reference internal" href="#setting-preferences">25.5.5.2. Setting preferences</a></li> +<li><a class="reference internal" href="#extensions">25.5.5.3. Extensions</a></li> +</ul> +</li> +</ul> +</li> +</ul> + + <h4>Previous topic</h4> + <p class="topless"><a href="tkinter.scrolledtext.html" + title="previous chapter">25.4. <tt class="docutils literal"><span class="pre">tkinter.scrolledtext</span></tt> — Scrolled Text Widget</a></p> + <h4>Next topic</h4> + <p class="topless"><a href="othergui.html" + title="next chapter">25.6. Other Graphical User Interface Packages</a></p> +<h3>This Page</h3> +<ul class="this-page-menu"> + <li><a href="../bugs.html">Report a Bug</a></li> + <li><a href="../_sources/library/idle.txt" + rel="nofollow">Show Source</a></li> +</ul> + +<div id="searchbox" style="display: none"> + <h3>Quick search</h3> + <form class="search" action="../search.html" method="get"> + <input type="text" name="q" /> + <input type="submit" value="Go" /> + <input type="hidden" name="check_keywords" value="yes" /> + <input type="hidden" name="area" value="default" /> + </form> + <p class="searchtip" style="font-size: 90%"> + Enter search terms or a module, class or function name. + </p> +</div> +<script type="text/javascript">$('#searchbox').show(0);</script> + </div> + </div> + <div class="clearer"></div> + </div> + <div class="related"> + <h3>Navigation</h3> + <ul> + <li class="right" style="margin-right: 10px"> + <a href="../genindex.html" title="General Index" + >index</a></li> + <li class="right" > + <a href="../py-modindex.html" title="Python Module Index" + >modules</a> |</li> + <li class="right" > + <a href="othergui.html" title="25.6. Other Graphical User Interface Packages" + >next</a> |</li> + <li class="right" > + <a href="tkinter.scrolledtext.html" title="25.4. tkinter.scrolledtext — Scrolled Text Widget" + >previous</a> |</li> + <li><img src="../_static/py.png" alt="" + style="vertical-align: middle; margin-top: -1px"/></li> + <li><a href="https://www.python.org/">Python</a> »</li> + <li> + <a href="../index.html">3.4.3 Documentation</a> » + </li> + + <li><a href="index.html" >The Python Standard Library</a> »</li> + <li><a href="tk.html" >25. Graphical User Interfaces with Tk</a> »</li> + </ul> + </div> + <div class="footer"> + © <a href="../copyright.html">Copyright</a> 1990-2015, Python Software Foundation. + <br /> + The Python Software Foundation is a non-profit corporation. + <a href="https://www.python.org/psf/donations/">Please donate.</a> + <br /> + Last updated on Sep 12, 2015. + <a href="../bugs.html">Found a bug</a>? + <br /> + Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.2.3. + </div> + + </body> +</html>
\ No newline at end of file diff --git a/Lib/idlelib/idle_test/htest.py b/Lib/idlelib/idle_test/htest.py index aa7f2e8..3a9885c 100644 --- a/Lib/idlelib/idle_test/htest.py +++ b/Lib/idlelib/idle_test/htest.py @@ -194,13 +194,6 @@ _grep_dialog_spec = { "should open that file \nin a new EditorWindow." } -_help_dialog_spec = { - 'file': 'EditorWindow', - 'kwds': {}, - 'msg': "If the help text displays, this works.\n" - "Text is selectable. Window is scrollable." - } - _io_binding_spec = { 'file': 'IOBinding', 'kwds': {}, @@ -279,6 +272,13 @@ _scrolled_list_spec = { "Right clicking an item will display a popup." } +show_idlehelp_spec = { + 'file': 'help', + 'kwds': {}, + 'msg': "If the help text displays, this works.\n" + "Text is selectable. Window is scrollable." + } + _stack_viewer_spec = { 'file': 'StackViewer', 'kwds': {}, diff --git a/Lib/idlelib/macosxSupport.py b/Lib/idlelib/macosxSupport.py index 77330cf..1030afe 100644 --- a/Lib/idlelib/macosxSupport.py +++ b/Lib/idlelib/macosxSupport.py @@ -174,9 +174,8 @@ def overrideRootMenu(root, flist): configDialog.ConfigDialog(root, 'Settings') def help_dialog(event=None): - from idlelib import textView - fn = path.join(path.abspath(path.dirname(__file__)), 'help.txt') - textView.view_file(root, 'Help', fn) + from idlelib import help + help.show_idlehelp(root) root.bind('<<about-idle>>', about_dialog) root.bind('<<open-config-dialog>>', config_dialog) |