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
- works on Windows and Unix (probably works on Mac too)
The main program is in the file "idle"; on Windows you can use
idle.pyw to avoid popping up a DOS console. Any arguments passed are
interpreted as files that will be opened for editing.
The main program is in the file "idle"; on Windows you can use idle.pyw
to avoid popping up a DOS console. Any arguments passed are interpreted
as files that will be opened for editing.
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
@ -119,8 +119,8 @@ Notes after trying to run Grail
-------------------------------
- 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
of the idle script).
sys.argv[0] to something decent first (it is normally set to the path of
the idle script).
- Grail must be exec'ed in __main__ because that's imported by some
other parts of Grail.

View File

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

View File

@ -2,18 +2,6 @@
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:
@ -90,6 +78,6 @@ Tips:
to, e.g.,
text['font'] = ("courier new", 10)
To change the Python syntax colors, edit the tagdefs table
in ColorDelegator.py; to change the shell colors, edit the
tagdefs table in PyShell.py.
To change the Python syntax colors, edit the tagdefs table in
ColorDelegator.py; to change the shell colors, edit the tagdefs
table in PyShell.py.