README.txt: an index to idlelib files and the IDLE menu.

IDLE is Python's Integrated Development and Learning
Environment.  The user documentation is part of the Library Reference and
is available in IDLE by selecting Help => IDLE Help.  This README documents
idlelib for IDLE developers and curious users.

IDLELIB FILES lists files alphabetically by category,
with a short description of each.

IDLE MENU show the menu tree, annotated with the module
or module object that implements the corresponding function.

This file is descriptive, not prescriptive, and may have errors
and omissions and lag behind changes in idlelib.


IDLELIB FILES
Implementation files not in IDLE MENU are marked (nim).
Deprecated files and objects are listed separately as the end.

Startup
-------
__init__.py  # import, does nothing
__main__.py  # -m, starts IDLE
idle.bat
idle.py
idle.pyw

Implementation
--------------
AutoComplete.py   # Complete attribute names or filenames.
AutoCompleteWindow.py  # Display completions.
AutoExpand.py     # Expand word with previous word in file.
Bindings.py       # Define most of IDLE menu.
CallTipWindow.py  # Display calltip.
CallTips.py       # Create calltip text.
ClassBrowser.py   # Create module browser window.
CodeContext.py    # Show compound statement headers otherwise not visible.
ColorDelegator.py # Colorize text (nim).
Debugger.py       # Debug code run from editor; show window.
Delegator.py      # Define base class for delegators (nim).
EditorWindow.py   # Define most of editor and utility functions.
FileList.py       # Open files and manage list of open windows (nim).
FormatParagraph.py# Re-wrap multiline strings and comments.
GrepDialog.py     # Find all occurrences of pattern in multiple files.
HyperParser.py    # Parse code around a given index.
IOBinding.py      # Open, read, and write files
IdleHistory.py    # Get previous or next user input in shell (nim)
MultiCall.py      # Wrap tk widget to allow multiple calls per event (nim).
MultiStatusBar.py # Define status bar for windows (nim).
ObjectBrowser.py  # Define class used in StackViewer (nim).
OutputWindow.py   # Create window for grep output.
ParenMatch.py     # Match fenceposts: (), [], and {}.
PathBrowser.py    # Create path browser window.
Percolator.py     # Manage delegator stack (nim).
PyParse.py        # Give information on code indentation
PyShell.py        # Start IDLE, manage shell, complete editor window
RemoteDebugger.py # Debug code run in remote process.
RemoteObjectBrowser.py # Communicate objects between processes with rpc (nim).
ReplaceDialog.py  # Search and replace pattern in text.
RstripExtension.py# Strip trailing whitespace
ScriptBinding.py  # Check and run user code.
ScrolledList.py   # Define ScrolledList widget for IDLE (nim).
SearchDialog.py   # Search for pattern in text.
SearchDialogBase.py  # Define base for search, replace, and grep dialogs.
SearchEngine.py   # Define engine for all 3 search dialogs.
StackViewer.py    # View stack after exception.
TreeWidget.py     # Define tree widger, used in browsers (nim).
UndoDelegator.py  # Manage undo stack.
WidgetRedirector.py # Intercept widget subcommands (for percolator) (nim).
WindowList.py     # Manage window list and define listed top level.
ZoomHeight.py     # Zoom window to full height of screen.
aboutDialog.py    # Display About IDLE dialog.
configDialog.py   # Display user configuration dialogs.
configHandler.py  # Load, fetch, and save configuration (nim).
configHelpSourceEdit.py  # Specify help source.
configSectionNameDialog.py  # Spefify user config section name
dynOptionMenuWidget.py  # define mutable OptionMenu widget (nim).
help.py           # Display IDLE's html doc.
keybindingDialog.py  # Change keybindings.
macosxSupport.py  # Help IDLE run on Macs (nim).
rpc.py            # Commuicate between idle and user processes (nim).
run.py            # Manage user code execution subprocess.
tabbedpages.py    # Define tabbed pages widget (nim).
textView.py       # Define read-only text widget (nim).

Configuration
-------------
config-extensions.def # Defaults for extensions
config-highlight.def  # Defaults for colorizing
config-keys.def       # Defaults for key bindings
config-main.def       # Defai;ts fpr font and geneal

Text
----
CREDITS.txt  # not maintained, displayed by About IDLE
HISTORY.txt  # NEWS up to July 2001
NEWS.txt     # commits, displayed by About IDLE
README.txt   # this file, displeyed by About IDLE
TODO.txt     # needs review
extend.txt   # about writing extensions
help.html    # copy of idle.html in docs, displayed by IDLE Help

Subdirectories
--------------
Icons  # small image files
idle_test  # files for human test and automated unit tests

Unused and Deprecated files and objects (nim)
---------------------------------------------
EditorWindow.py: Helpdialog and helpDialog
ToolTip.py: unused.
help.txt
idlever.py


IDLE MENUS
Top level items and most submenu items are defined in Bindings.
Extenstions add submenu items when active.  The names given are
found, quoted, in one of these modules, paired with a '<<pseudoevent>>'.
Each pseudoevent is bound to an event handler.  Some event handlers
call another function that does the actual work.  The annotations below
are intended to at least give the module where the actual work is done.

File  # IOBindig except as noted
  New File
  Open...  # IOBinding.open
  Open Module
  Recent Files
  Class Browser  # Class Browser
  Path Browser  # Path Browser
  ---
  Save  # IDBinding.save
  Save As...  # IOBinding.save_as
  Save Copy As...  # IOBindling.save_a_copy
  ---
  Print Window  # IOBinding.print_window
  ---
  Close
  Exit

Edit
  Undo  # undoDelegator
  Redo  # undoDelegator
  ---
  Cut
  Copy
  Paste
  Select All
  ---  # Next 5 items use SearchEngine; dialogs use SearchDialogBase
  Find  # Search Dialog
  Find Again
  Find Selection
  Find in Files...  # GrepDialog
  Replace...  # ReplaceDialog
  Go to Line
  Show Completions  # AutoComplete extension and AutoCompleteWidow (&HP)
  Expand Word  # AutoExpand extension
  Show call tip  # Calltips extension and CalltipWindow (& Hyperparser)
  Show surrounding parens  # ParenMatch (& Hyperparser)

Shell  # PyShell
  View Last Restart    # PyShell.PyShell.view_restart_mark
  Restart Shell        # PyShell.PyShell.restart_shell
  Interrupt Execution  # pyshell.PyShell.cancel_callback

Debug (Shell only)
  Go to File/Line
  Debugger               # Debugger, RemoteDebugger, PyShell.toggle_debuger
  Stack Viewer           # StackViewer, PyShell.open_stack_viewer
  Auto-open Stack Viewer # StackViewer

Format (Editor only)
  Indent Region
  Dedent Region
  Comment Out Region
  Uncomment Region
  Tabify Region
  Untabify Region
  Toggle Tabs
  New Indent Width
  Format Paragraph  # FormatParagraph extension
  ---
  Strip tailing whitespace  # RstripExtension extension

Run (Editor only)
  Python Shell  # PyShell
  ---
  Check Module  # ScriptBinding
  Run Module  # ScriptBinding

Options
  Configure IDLE  # configDialog
    (tabs in the dialog)
    Font tab  # onfig-main.def
    Highlight tab  # configSectionNameDialog, config-highlight.def
    Keys tab  # keybindingDialog, configSectionNameDialog, onfig-keus.def
    General tab  # configHelpSourceEdit, config-main.def
  Configure Extensions  # configDialog
    Xyz tab  # xyz.py, config-extensions.def
  ---
  Code Context (editor only)  # CodeContext extension

Window
  Zoomheight  # ZoomHeight extension
  ---
  <open windows>  # WindowList

Help
  About IDLE  # aboutDialog
  ---
  IDLE Help  # help
  Python Doc
  Turtle Demo
  ---
  <other help sources>

<Context Menu> (right click)
Defined in EditorWindow, PyShell, Output
   Cut
   Copy
   Paste
   ---
   Go to file/line (shell and output only)
   Set Breakpoint (editor only)
   Clear Breakpoint (editor only)
 Defined in Debugger
   Go to source line
   Show stack frame
