Formatted some paragraphs

This commit is contained in:
Guido van Rossum 1999-01-04 13:05:58 +00:00
parent 94e82ceeac
commit f903898fff
3 changed files with 45 additions and 56 deletions

View File

@ -10,9 +10,9 @@ a Tkinter-based IDE for Python. It has the following features:
- 100% pure Python - 100% pure Python
- works on Windows and Unix (probably works on Mac too) - works on Windows and Unix (probably works on Mac too)
The main program is in the file "idle"; on Windows you can use The main program is in the file "idle"; on Windows you can use idle.pyw
idle.pyw to avoid popping up a DOS console. Any arguments passed are to avoid popping up a DOS console. Any arguments passed are interpreted
interpreted as files that will be opened for editing. as files that will be opened for editing.
IDLE requires Python 1.5.2, so it is currently only usable with the IDLE requires Python 1.5.2, so it is currently only usable with the
Python 1.5.2 beta distribution (luckily, IDLE is bundled with Python Python 1.5.2 beta distribution (luckily, IDLE is bundled with Python
@ -119,8 +119,8 @@ Notes after trying to run Grail
------------------------------- -------------------------------
- Grail does stuff to sys.path based on sys.argv[0]; you must set - Grail does stuff to sys.path based on sys.argv[0]; you must set
sys.argv[0] to something decent first (it is normally set to the path sys.argv[0] to something decent first (it is normally set to the path of
of the idle script). the idle script).
- Grail must be exec'ed in __main__ because that's imported by some - Grail must be exec'ed in __main__ because that's imported by some
other parts of Grail. other parts of Grail.

View File

@ -1,24 +1,24 @@
Writing an IDLE extension Writing an IDLE extension
An IDLE extension can define new key bindings and menu entries for An IDLE extension can define new key bindings and menu entries for IDLE
IDLE edit windows. There is a simple mechanism to load extensions edit windows. There is a simple mechanism to load extensions when IDLE
when IDLE starts up and to attach them to each edit window. starts up and to attach them to each edit window. (It is also possible
(It is also possible to make other changes to IDLE, but this must to make other changes to IDLE, but this must be done by editing the IDLE
be done by editing the IDLE source code.) source code.)
The list of extensions loaded at startup time is configured by editing The list of extensions loaded at startup time is configured by editing
the file extend.py; see below for details. the file extend.py; see below for details.
An IDLE extension is defined by a class. Methods of the class define An IDLE extension is defined by a class. Methods of the class define
actions that are invoked by those bindings or menu entries. actions that are invoked by those bindings or menu entries. Class (or
Class (or instance) variables define the bindings and menu additions; instance) variables define the bindings and menu additions; these are
these are automatically applied by IDLE when the extension is linked automatically applied by IDLE when the extension is linked to an edit
to an edit window. window.
An IDLE extension class is instantiated with a single argument, An IDLE extension class is instantiated with a single argument,
`editwin', an EditorWindow instance. `editwin', an EditorWindow instance. The extension cannot assume much
The extension cannot assume much about this argument, but it about this argument, but it is guarateed to have the following instance
is guarateed to have the following instance variables: variables:
text a Text instance (a widget) text a Text instance (a widget)
io an IOBinding instance (more about this later) io an IOBinding instance (more about this later)
@ -33,8 +33,8 @@ variables that define mappings between virtual events and key sequences,
e.g. <Alt-F2>. When the extension is loaded, these key sequences will e.g. <Alt-F2>. When the extension is loaded, these key sequences will
be bound to the corresponding virtual events, and the virtual events be bound to the corresponding virtual events, and the virtual events
will be bound to the corresponding methods. (This indirection is done will be bound to the corresponding methods. (This indirection is done
so that the key bindings can easily be changed, and so that other sources so that the key bindings can easily be changed, and so that other
of virtual events can exist, such as menu entries.) sources of virtual events can exist, such as menu entries.)
The following class or instance variables are used to define key The following class or instance variables are used to define key
bindings for virtual events: bindings for virtual events:
@ -49,18 +49,18 @@ keys are virtual events, and whose values are lists of key sequences.
An extension can define menu entries in a similar fashion. This is done An extension can define menu entries in a similar fashion. This is done
with a class or instance variable named menudefs; it should be a list of with a class or instance variable named menudefs; it should be a list of
pair, where each pair is a menu name (lowercase) and a list of menu entries. pair, where each pair is a menu name (lowercase) and a list of menu
Each menu entry is either None (to insert a separator entry) or a pair of entries. Each menu entry is either None (to insert a separator entry) or
strings (menu_label, virtual_event). Here, menu_label is the label of the a pair of strings (menu_label, virtual_event). Here, menu_label is the
menu entry, and virtual_event is the virtual event to be generated when the label of the menu entry, and virtual_event is the virtual event to be
entry is selected. An underscore in the menu label is removed; the generated when the entry is selected. An underscore in the menu label
character following the underscore is displayed underlined, to indicate the is removed; the character following the underscore is displayed
shortcut character (for Windows). underlined, to indicate the shortcut character (for Windows).
At the moment, extensions cannot define whole new menus; they must define At the moment, extensions cannot define whole new menus; they must
entries in existing menus. Some menus are not present on some windows; define entries in existing menus. Some menus are not present on some
such entry definitions are then ignored, but the key bindings are still windows; such entry definitions are then ignored, but the key bindings
applied. (This should probably be refined in the future.) are still applied. (This should probably be refined in the future.)
Here is a complete example example: Here is a complete example example:
@ -87,19 +87,20 @@ class ZoomHeight:
"...Do what you want here..." "...Do what you want here..."
The final piece of the puzzle is the file "extend.py", which contains a The final piece of the puzzle is the file "extend.py", which contains a
simple table used to configure the loading of extensions. This file currently simple table used to configure the loading of extensions. This file
contains a single list variable named "standard", which is a list of extension currently contains a single list variable named "standard", which is a
names that are to be loaded. (In the future, other configuration variables list of extension names that are to be loaded. (In the future, other
may be added to this module.) configuration variables may be added to this module.)
Extensions can define key bindings and menu entries that reference events they Extensions can define key bindings and menu entries that reference
don't implement (including standard events); however this is not recommended events they don't implement (including standard events); however this is
(and may be forbidden in the future). not recommended (and may be forbidden in the future).
Extensions are not required to define menu entries for all events Extensions are not required to define menu entries for all events they
they implement. implement.
Note: in order to change key bindings, you must currently edit the file Note: in order to change key bindings, you must currently edit the file
keydefs. It contains two dictionaries named and formatted like the keydefs. It contains two dictionaries named and formatted like the
keydefs dictionaries described above, one for the Unix bindings and one for keydefs dictionaries described above, one for the Unix bindings and one
the Windows bindings. In the future, a better mechanism will be provided. for the Windows bindings. In the future, a better mechanism will be
provided.

View File

@ -2,18 +2,6 @@
File menu: File menu:
New window -- create a new editing window
Open file... -- open an existing file from a dialog box
Open module... -- asks for a module name, finds it on sys.path,
and opens it; if there's a selection, it's the module name
Class browser... -- open a class browser for the current module
---
Save -- save the current window to its associated file
Save As... -- save to a new file from a dialog box
Save Copy As... -- save to a new file without changing window name
---
Close -- close current window; asks to save if unsaved
Exit -- close all windows; asks to save unsaved windows
Edit menu: Edit menu:
@ -90,6 +78,6 @@ Tips:
to, e.g., to, e.g.,
text['font'] = ("courier new", 10) text['font'] = ("courier new", 10)
To change the Python syntax colors, edit the tagdefs table To change the Python syntax colors, edit the tagdefs table in
in ColorDelegator.py; to change the shell colors, edit the ColorDelegator.py; to change the shell colors, edit the tagdefs
tagdefs table in PyShell.py. table in PyShell.py.