Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
a7d0b8d0
Commit
a7d0b8d0
authored
Jan 04, 1999
by
Guido van Rossum
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Formatted some paragraphs
parent
23dd48dd
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
46 additions
and
57 deletions
+46
-57
Tools/idle/README.txt
Tools/idle/README.txt
+5
-5
Tools/idle/extend.txt
Tools/idle/extend.txt
+38
-37
Tools/idle/help.txt
Tools/idle/help.txt
+3
-15
No files found.
Tools/idle/README.txt
View file @
a7d0b8d0
...
...
@@ -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.
...
...
Tools/idle/extend.txt
View file @
a7d0b8d0
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 th
e
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.)
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 b
e
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
a
re still a
pplied. (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
c
ontains 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
c
urrently 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.
Tools/idle/help.txt
View file @
a7d0b8d0
...
...
@@ -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
ta
gdefs ta
ble 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.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment