1README.txt: an index to idlelib files and the IDLE menu.
2
3IDLE is Python's Integrated Development and Learning
4Environment. The user documentation is part of the Library Reference and
5is available in IDLE by selecting Help => IDLE Help. This README documents
6idlelib for IDLE developers and curious users.
7
8IDLELIB FILES lists files alphabetically by category,
9with a short description of each.
10
11IDLE MENU show the menu tree, annotated with the module
12or module object that implements the corresponding function.
13
14This file is descriptive, not prescriptive, and may have errors
15and omissions and lag behind changes in idlelib.
16
17
18IDLELIB FILES
19Implementation files not in IDLE MENU are marked (nim).
20Deprecated files and objects are listed separately as the end.
21
22Startup
23-------
24__init__.py # import, does nothing
25__main__.py # -m, starts IDLE
26idle.bat
27idle.py
28idle.pyw
29
30Implementation
31--------------
32autocomplete.py # Complete attribute names or filenames.
33autocomplete_w.py # Display completions.
34autoexpand.py # Expand word with previous word in file.
35browser.py # Create module browser window.
36calltip_w.py # Display calltip.
37calltips.py # Create calltip text.
38codecontext.py # Show compound statement headers otherwise not visible.
39colorizer.py # Colorize text (nim)
40config.py # Load, fetch, and save configuration (nim).
41configdialog.py # Display user configuration dialogs.
42config_help.py # Specify help source in configdialog.
43config_key.py # Change keybindings.
44dynoption.py # Define mutable OptionMenu widget (nim).
45debugobj.py # Define class used in stackviewer.
46debugobj_r.py # Communicate objects between processes with rpc (nim).
47debugger.py # Debug code run from shell or editor; show window.
48debugger_r.py # Debug code run in remote process.
49delegator.py # Define base class for delegators (nim).
50editor.py # Define most of editor and utility functions.
51filelist.py # Open files and manage list of open windows (nim).
52grep.py # Find all occurrences of pattern in multiple files.
53help.py # Display IDLE's html doc.
54help_about.py # Display About IDLE dialog.
55history.py # Get previous or next user input in shell (nim)
56hyperparser.py # Parse code around a given index.
57iomenu.py # Open, read, and write files
58macosx.py # Help IDLE run on Macs (nim).
59mainmenu.py # Define most of IDLE menu.
60multicall.py # Wrap tk widget to allow multiple calls per event (nim).
61outwin.py # Create window for grep output.
62paragraph.py # Re-wrap multiline strings and comments.
63parenmatch.py # Match fenceposts: (), [], and {}.
64pathbrowser.py # Create path browser window.
65percolator.py # Manage delegator stack (nim).
66pyparse.py # Give information on code indentation
67pyshell.py # Start IDLE, manage shell, complete editor window
68query.py # Query user for information
69redirector.py # Intercept widget subcommands (for percolator) (nim).
70replace.py # Search and replace pattern in text.
71rpc.py # Communicate between idle and user processes (nim).
72rstrip.py # Strip trailing whitespace.
73run.py # Manage user code execution subprocess.
74runscript.py # Check and run user code.
75scrolledlist.py # Define scrolledlist widget for IDLE (nim).
76search.py # Search for pattern in text.
77searchbase.py # Define base for search, replace, and grep dialogs.
78searchengine.py # Define engine for all 3 search dialogs.
79stackviewer.py # View stack after exception.
80statusbar.py # Define status bar for windows (nim).
81tabbedpages.py # Define tabbed pages widget (nim).
82textview.py # Define read-only text widget (nim).
83tree.py # Define tree widget, used in browsers (nim).
84undo.py # Manage undo stack.
85util.py # Define objects imported elsewhere with no dependencies (nim)
86windows.py # Manage window list and define listed top level.
87zoomheight.py # Zoom window to full height of screen.
88
89Configuration
90-------------
91config-extensions.def # Defaults for extensions
92config-highlight.def # Defaults for colorizing
93config-keys.def # Defaults for key bindings
94config-main.def # Defaults for font and general tabs
95
96Text
97----
98CREDITS.txt # not maintained, displayed by About IDLE
99HISTORY.txt # NEWS up to July 2001
100NEWS.txt # commits, displayed by About IDLE
101README.txt # this file, displayed by About IDLE
102TODO.txt # needs review
103extend.txt # about writing extensions
104help.html # copy of idle.html in docs, displayed by IDLE Help
105
106Subdirectories
107--------------
108Icons # small image files
109idle_test # files for human test and automated unit tests
110
111Unused and Deprecated files and objects (nim)
112---------------------------------------------
113tooltip.py # unused
114
115
116
117IDLE MENUS
118Top level items and most submenu items are defined in mainmenu.
119Extensions add submenu items when active. The names given are
120found, quoted, in one of these modules, paired with a '<<pseudoevent>>'.
121Each pseudoevent is bound to an event handler. Some event handlers
122call another function that does the actual work. The annotations below
123are intended to at least give the module where the actual work is done.
124'eEW' = editor.EditorWindow
125
126File
127 New File # eEW.new_callback
128 Open... # iomenu.open
129 Open Module # eEw.open_module
130 Recent Files
131 Class Browser # eEW.open_class_browser, browser.ClassBrowser
132 Path Browser # eEW.open_path_browser, pathbrowser
133 ---
134 Save # iomenu.save
135 Save As... # iomenu.save_as
136 Save Copy As... # iomenu.save_a_copy
137 ---
138 Print Window # iomenu.print_window
139 ---
140 Close # eEW.close_event
141 Exit # flist.close_all_callback (bound in eEW)
142
143Edit
144 Undo # undodelegator
145 Redo # undodelegator
146 --- # eEW.right_menu_event
147 Cut # eEW.cut
148 Copy # eEW.copy
149 Paste # eEW.past
150 Select All # eEW.select_all (+ see eEW.remove_selection)
151 --- # Next 5 items use searchengine; dialogs use searchbase
152 Find # eEW.find_event, search.SearchDialog.find
153 Find Again # eEW.find_again_event, sSD.find_again
154 Find Selection # eEW.find_selection_event, sSD.find_selection
155 Find in Files... # eEW.find_in_files_event, grep
156 Replace... # eEW.replace_event, replace.ReplaceDialog.replace
157 Go to Line # eEW.goto_line_event
158 Show Completions # autocomplete extension and autocompleteWidow (&HP)
159 Expand Word # autoexpand extension
160 Show call tip # Calltips extension and CalltipWindow (& Hyperparser)
161 Show surrounding parens # parenmatch (& Hyperparser)
162
163Shell # pyshell
164 View Last Restart # pyshell.PyShell.view_restart_mark
165 Restart Shell # pyshell.PyShell.restart_shell
166 Interrupt Execution # pyshell.PyShell.cancel_callback
167
168Debug (Shell only)
169 Go to File/Line
170 debugger # debugger, debugger_r, PyShell.toggle_debugger
171 Stack Viewer # stackviewer, PyShell.open_stack_viewer
172 Auto-open Stack Viewer # stackviewer
173
174Format (Editor only)
175 Indent Region # eEW.indent_region_event
176 Dedent Region # eEW.dedent_region_event
177 Comment Out Reg. # eEW.comment_region_event
178 Uncomment Region # eEW.uncomment_region_event
179 Tabify Region # eEW.tabify_region_event
180 Untabify Region # eEW.untabify_region_event
181 Toggle Tabs # eEW.toggle_tabs_event
182 New Indent Width # eEW.change_indentwidth_event
183 Format Paragraph # paragraph extension
184 ---
185 Strip tailing whitespace # rstrip extension
186
187Run (Editor only)
188 Python Shell # pyshell
189 ---
190 Check Module # runscript
191 Run Module # runscript
192
193Options
194 Configure IDLE # eEW.config_dialog, configdialog
195 (tabs in the dialog)
196 Font tab # config-main.def
197 Highlight tab # query, config-highlight.def
198 Keys tab # query, config_key, config_keys.def
199 General tab # config_help, config-main.def
200 Extensions tab # config-extensions.def, corresponding .py
201 ---
202 Code Context (ed)# codecontext extension
203
204Window
205 Zoomheight # zoomheight extension
206 ---
207 <open windows> # windows
208
209Help
210 About IDLE # eEW.about_dialog, help_about.AboutDialog
211 ---
212 IDLE Help # eEW.help_dialog, helpshow_idlehelp
213 Python Doc # eEW.python_docs
214 Turtle Demo # eEW.open_turtle_demo
215 ---
216 <other help sources>
217
218<Context Menu> (right click)
219 Defined in editor, PyShelpyshellut
220 Cut
221 Copy
222 Paste
223 ---
224 Go to file/line (shell and output only)
225 Set Breakpoint (editor only)
226 Clear Breakpoint (editor only)
227 Defined in debugger
228 Go to source line
229 Show stack frame
230
231<No menu>
232Center Insert # eEW.center_insert_event
233
234
235CODE STYLE -- Generally PEP 8.
236
237import
238------
239Put import at the top, unless there is a good reason otherwise.
240PEP 8 says to group stdlib, 3rd-party dependencies, and package imports.
241For idlelib, the groups are general stdlib, tkinter, and idlelib.
242Sort modules within each group, except that tkinter.ttk follows tkinter.
243Sort 'from idlelib import mod1' and 'from idlelib.mod2 import object'
244together by module, ignoring within module objects.
245Put 'import __main__' after other idlelib imports.
246
247Imports only needed for testing are put not at the top but in an
248htest function def or "if __name__ == '__main__'" clause.
249
250Within module imports like "from idlelib.mod import class" may cause
251circular imports to deadlock. Even without this, circular imports may
252require at least one of the imports to be delayed until a function call.
253