gui/notes/mred/MrEd_100.txt
Matthew Flatt 3025e2fc7d .
original commit: 391b8c1dd9e320325aae231d5347512716d6aff3
1998-10-28 17:04:24 +00:00

1078 lines
44 KiB
Plaintext

******************
* MrEd 100 *
******************
MrEd 100 is the successor to MrEd 53. For MrEd 100, we redesigned the
GUI toolbox interface to make it simpler and more Scheme-like.
Although we preserved the windowing model that underlies the old
toolbox, every MrEd 53 program will require substantial changes to run
in MrEd 100.
The new interface makes MrEd more accessible to new users: class and
method names are more consistent; useless and redundant methods have
been eliminated; and method arguments are more thoroughly checked. Key
portions of the documentation have been re-written.
The implementation behind the new interface is reliable. Previous
versions of MrEd were plagued by bugs and inconsistently implemented
features, whereas the new interface is consistently implemented across
platforms and thoroughly tested. Of course, bugs will always slip
through, but as a result of new testing methods, we expect MrEd 100 to
be far more robust than previous versions.
New Application Architecture
----------------------------
MrEd 53 comprised two parts:
* a core toolbox (containing names prefixed with `wx:') that was too
primitive for real programming (no geometry management); and
* an application framework (containing names prefixed with `mred:')
that provided crucial functionality (e.g., windows with geometry
management) but also much more, making it too heavyweight for
simple GUI programs.
For MrEd 100, we moved the boundary between the core toolbox and the
application framework. "MrEd" now refers to only the core toolbox, but
the new core toolbox includes the most useful `mred:' classes from the
old application framework. We eliminated the `wx:' and `mred:'
prefixes; many of the former `mred:' classes replace the former `wx:'
classes.
All of the core toolbox classes are built into the MrEd executable.
The remaining `mred:' classes were moved into a separate, optional
framework library, which was itself thoroughly revised. Changes to the
framework classes are described in a separate document.
Running MrEd and Developing MrEd Applications
---------------------------------------------
Unlike MrEd 53, MrEd 100 is merely an extension of MzScheme with a GUI
toolbox. Command-line handling for MrEd 100 is the same as for
MzScheme; the only difference is that MrEd executes
`(graphical-read-eval-print-loop)' on startup instead of
`(read-eval-print-loop)'. It is no longer necessary to understand
units and collections to implement a simple MrEd application.
MrEd's `graphical-read-eval-print-loop' implements a rather primitive
REPL, as opposed to the relatively useful REPL provided by the old
MrEd toolbox-framework combination. DrScheme 100 replaces the old
MrEd REPL. Unlike previous releases of DrScheme and MrEd, DrScheme 100
provides a REPL that matches MrEd's language exactly.
Porting to MrEd 100
-------------------
The remainder of this document provides an overview of MrEd 100 with
notes that are useful for upgrading MrEd 53 applications. Section 0
describes a few highlights of the MrEd 100 revision. Section 1 shows
the new interface/class hierarchy for windows and a few other parts of
the toolbox. Section 2 lists all the methods of the new interfaces and
classes. Section 3 lists the complete, new set of MrEd procedures,
showing the arguments for selected new procedures. Section 4 provides
a mapping from the old `wx:const-XXX' constants to the new
symbols. Finally, Section 5 lists some of the small and relatively
subtle changes in MrEd 100 (similar to changes listed in the HISTORY
notes for an average MrEd release).
======================================================================
0. Highlights of the New MrEd Toolbox
======================================================================
* The wx/mred split has been eliminated. The wx methods for manually
managing the geometry of windows have been eliminated; the only way
to set control positions explicitly is to derive a new panel class.
The class hierarchy has been rerranged. For example, dialog% is no
longer a subclass of panel%, which is itself no longer a subclass
of canvas%.
* Interfaces are widely used in the toolbox. The old toolbox had
"classes" like wx:window% that could not be instantiated. The new
toolbox has a window<%> interface ("<%>" is the conventional suffix
for interfaces), and all buit-in classes can be instantiated.
* Instead of null, #f is used for the `no appropriate value' value,
such as the parent argument for a frame that doesn't have a parent
window, or the result for get-label when the menu doesn't have a
label.
* There are hardly any wx:const-... values. Instead, methods that
used to take a single (numerical) wx:const- flag now take a symbol,
and methods that used to take bitwise-ior'd wx:const- integers now
take a list of symbols. For example, wx:const-horizontal was
replaced by 'horizontal, and wx:const-bitmap-type-gif was replaced
with 'gif.
* The old documentation described certain methods as consuming "small
integer" values; the implementation actually accepted any sort of
number and coerced it to a machine-word integer.
Methods now consume an explicitly defined class of numbers. For
example, most windowing methods that formerly consumed "small
integers" now consume "exact integers in [0,10000]". The
implementation signals an exception if provided an inexact number,
a non-integer, or an integer outside the range [0,10000]. A few
methods consume arbitrary exact non-negative integers; those
methods now behave correctly when provided an integer represented
as a bignum.
In the windowing toolbox, object-specific out-of-range errors are
now signalled by a mismatch exception. (Formerly, out-of-range
errors were generally ignored.) For example, if a list-box%
instance contains only 10 items, calling the set-selection method
with the index 11 signals a mismatch exception.
* The menu system was turned upside-down, giving it a structure more
like rest of the toolbox. For example, instead of creating a menu
bar and then calling a frame's set-menu-bar method, the new way to
create a menu bar is to provide the frame as an initialization
argument when creating a menu bar. Menus are created by supplying
the parent menu bar as an initialization argument (or a parent menu
to create a submenu). Menu items are created by instantiating
menu-item% or checkable-menu-item% with a menu argument. There are
no menu ids anywhere; when a menu item is selected, the callback
associated with the menu item is executed (just like when a button
is clicked).
* Initialization arguments for creating windows have been re-ordered.
In general, the order is something like the following:
label [sub-labels] callback parent [init-value] style
^- e.g., items in a radio box
where style is now a list of symbols.
* The "media" names have changed. Roughly, we replaced "media" with
"editor", or dropped "media" it when "editor" isn't useful. Here's
the name mapping for some commonly used classes:
media-canvas% => editor-canvas%
media-buffer% => editor<%>
media-edit% => text%
media-pasteboard% => pasteboard%
snip% => snip%
media-snip% => editor-snip%
text-snip% => string-snip% (to avoid confusion)
Methods of text% (formerly media-edit%) check that position, line,
and paragraph arguments are non-negative. In methods where -1
(really any negative value) had a special meaning, a symbol is now
used. For example, the old call
(send (make-object media-edit%) insert "Hello" 0 -1)
translates to a use of 'same instead of -1:
(send (make-object text%) insert "Hello" 0 'same)
Many of the old on-XXX methods for editors used to return a Boolean
value to indicate whether the action should proceed (e.g.,
on-insert in media-edit%). This did not work well with composing
class extensions. In MrEd 100, there is a parallel set of can-XXX?
methods (e.g., can-insert? in text%) that first determine whether
the opration should proceed; if so, on-XXX is called (its result is
ignored), the operation is performed, and after-XXX is called.
Aside from the renaming and checking, little has changed in the
editor toolbox, but it is a little better integrated with
system-wide keyboard focus methods. For example, a frame% has a
get-focus-window method, which returns the frame's subwindow with
the current focus, but it also has a get-focus-object method, which
will return an editor<%> object if an editor-canvas has the
keyboard focus.
* The text-field% control (formerly wx:text% and wx:multi-text%) now
works well on all platforms because it is implemented using the
editor classes. (The equivalent of a wxmulti-text% is specified via
a style flag when creating a text-field%.)
* The command-event% class was changed to control-event%. It has very
few methods, since the old information can be extracted from the
control.
* Keyboard navigation (in a frame or dialog) works on all platforms.
* Some methods have been renamed to be either more (accurately)
descriptive or more consistent with other method names.
* The device context system has been changed to provide a larger set
of methods that paint consistently on all platforms. Most "logical
functions" (e.g., 'invert, 'src-and, 'no-op) have been eliminated,
but non-rectangular clipping regions and region operations (e.g.,
union and intersect) were added.
The old canvas-dc% class was replaced by pixel-dc<%>. The
memory-dc% class was renamed to bitmap-dc% (which implements
pixel-dc<%>).
The blit method was replaced by draw-bitmap and draw-bitmap-region,
which operate directly on bitmaps. Monochrome bitmaps can be drawn
with either a transparent or solid background. The icon% class and
draw-icon method were removed, since they provide nothing different
from bitmaps.
The xor drawing mode was moved from a setting in the device context
to a style for a pen or brush. Brush stipples work on all platforms
(with consistent opaqueness and colorization). Pen stipples, also
work, but are restricted to 8x8 monochrome bitmaps. The 'stipple
and 'opaque-stipple styles were eliminated; instead, installing a
stipple bitmap into a pen or brush overrides certain style
settings.
The arguments to draw-arc were changed; draw-arc now reliably draws
sections of non-circular ellipses.
The initialization arguments for post-script-dc% and printer-dc%
where changed. Global PostScript settings were replaced with a
parameter containing a ps-setup% object.
The canvas% class no longer supplies drawing methods. Instead,
get-dc to get a drawing context (which always had a more complete
set of methods, anyway).
* American spelling is used everywhere: colour -> color, centre
-> center, grey -> gray.
======================================================================
1. Interface/Class Type Hierarchy (Selected Excerpts)
======================================================================
[To avoid lines that cross or go in the wrong direction, the following
type hierarchy picture is drawn on a cylinder, with lines from
subarea<%> and subwindow<%> wrapping from the left of the diagram to
the right.]
area<%>
_____________________|_______________
| | |
subarea<%> window<%> area-container<%>
<<<____|____ _____|__________ __|___ ___________________<<<
| | | | | |
subwindow<%> | | | |
<<<______________|___________ | | | | _<<<
| | | | pane% |
control<%> | | | |- horizontal-pane% |
|- message% | | | |- vertical-pane% |
|- button% | | | |
|- check-box% | area-container-window<%> |
|- slider% | | |
|- gauge% | | __________________|
|- text-field% | | |
|- radio-box% | |-------- panel%
|- list-control<%> | | |- horizontal-panel%
|- choice% | | |- vertical-panel%
|- list-box% | |
| |- top-level-window<%>
| |- frame%
| |- dialog%
canvas<%>
|- canvas%
|- editor-canvas%
menu-item<%>
|- separator-menu-item%
|- labelled-menu-item<%>
|- shortcut-menu-item<%>
| |- menu-item%
| |- checkable-menu-item%
|- submenu-item<%> (no classes)
menu-item-container<%>
|- menu% (has a submenu-item<%>)
|- menu-bar% (all items are submenu-item<%>s)
|- popup-menu% (not created in a menu-bar; for use with canvas%'s popup-menu)
dc<%>
|- pixel-dc<%> (replaces canvas-dc%)
| |-bitmap-dc% (formerly memory-dc%)
|- printer-dc%
|- postscript-dc%
editor<%> (maybe has an edit-admin% and some editor-canvas<%>s)
|- text%
|- pasteboard%
snip% (as a snip-admin%)
|- text-snip%
| |- tab-snip%
|- image-snip%
|- editor-snip% (formerly media-snip%; has an editor<%>)
editor-admin% (formerly media-admin%)
|- snip-editor-admin%
snip-admin%
event%
|- control-event% (formerly command-event%; for control/menu-item callbacks)
|- mouse-event%
|- key-event%
|- scroll-event% (new; used for on-scroll)
======================================================================
2. Interface/Class Methods (Selected Excerpts)
Method arguments are not generally shown, but the new initialization
arguments are listed after "<=" for classes.
======================================================================
area<%>
get-parent
get-top-level-window - returns the area's frame/dialog
min-width min-height
stretchable-width stretchable-height
subarea<%> : area<%>
horiz-margin vert-margin
window<%> : area<%>
focus has-focus? - focus replaces set-focus
on-focus - on-focus replaces on-set-focus and on-kill-focus
enable is-enabled?
on-size
on-subwindow-char on-subwindow-event - formerly pre-on-...
client->screen screen->client - takes two and returns two values
get-label set-label
get-plain-label - e.g., "Button" instead of "&Button"
get-client-size - returns two values
get-size - returns two values
get-width get-height get-x get-y
get-cursor set-cursor
show is-shown?
refresh
accept-drop-files on-drop-file
area-container<%> : area<%>
container-size
get-children change-children place-children
add-child delete-child
border - parameter-like
spacing - parameter-like
set-alignment - takes two syms: 'left/'center/'right 'top/'center/'bottom
get-alignment - returns two syms...
area-container-window<%> : container<%> window<%>
set-control-font get-control-font
set-label-font get-label-font
set-label-position get-label-position
subwindow<%> : subarea<%> window<%>
panel% : area-container-window<%> subwindow<%>
<= parent [style null]
styles: 'border
horizontal-panel%: panel%
<= parent [style null]
styles: 'border
vertical-panel%: panel%
<= parent [style null]
styles: 'border
pane% : container<%> subwindow<%>
<= parent
horizontal-pane%: pane%
<= parent
vertical-pane%: pane%
<= parent
top-level-window<%> : area-container-window<%>
get-eventspace
on-activate
can-close? on-close
can-exit? on-exit - called when the OS asks MrEd to exit
get-focus-window - the window with the current focus (or #f)
get-edit-target-window - the window to last have the focus (or #f)
get-focus-object - the window/editor with the curent focus (or #f)
get-edit-target-object - the window/editor to last have the focus (or #f)
center move resize
frame% : top-level-window<%>
<= label [parent #f] [width #f] [height #f] [x #f] [y #f] [style null]
styles: 'no-thick-border 'no-resize-border 'no-caption 'no-system-menu
'iconize 'maximize 'mdi-parent 'mdi-child
create-status-line set-status-text has-status-line?
get-menu-bar
iconize is-iconized? set-icon maximize
dialog% : top-level-window<%>
<= label [parent #f] [width #f] [height #f] [x #f] [y #f] [style null]
styles: 'no-caption
control<%> : subwindow<%>
command - just invokes the callback; no longer changes the control value
message% : control<%>
<= label parent [style null]
styles: none
button% : control<%>
<= label parent callback [style null]
styles: 'default
check-box% : control<%>
<= label parent callback [style null]
styles: none
set-value get-value
slider% : control<%>
<= label min-val max-val parent callback [value min-val]
[style '(horizontal)]
styles: 'horizontal 'vertical
set-value get-value
gauge% : control<%>
<= label range parent [style '(horizontal)]
styles: 'horizontal 'vertical
set-value get-value
set-range get-range
text-field% : control<%>
<= label parent callback [init-val ""] [style '(single)]
styles: 'single, 'multiple, 'hscroll
get-value set-value
get-editor
radio-box% : control<%>
<= label choices parent callback [style '(vertical)]
styles: 'horizontal 'vertical
get-number
get-item-label - label for one of the choices
get-item-plain-label - e.g., "Cut" intsead of "Cut Cmd-X"
get-selection set-selection
list-control<%> : control<%>
clear append
get-number
get-string find-string
get-selection
get-string-selection
set-selection
set-string-selection
choice% : list-control<%>
<= label choices parent callback [style null]
styles: none
list-box% : list-control<%>
<= label choices parent callback [style '(single)]
styles: 'single 'multiple 'extended 'always-vscroll 'hscroll
delete
get-data set-data
get-selections
select is-selected?
set set-string set-data
number-of-visible-items
get-first-visible set-first-visible
canvas<%> : subwindow<%>
on-char on-event on-paint on-scroll
popup-menu warp-pointer get-dc
client-min-width client-min-height
canvas% : canvas<%>
<= parent [style null]
styles: 'border 'vscroll 'hscroll
get-virtual-size get-view-start
set-scrollbars scroll
get-scroll-pos set-scroll-pos
get-scroll-range set-scroll-range
get-scroll-page set-scroll-page
editor-canvas% : canvas<%>
<= parent [editor #f] [style null] [scrolls-per-page 100]
styles: 'no-hscroll 'no-vscroll 'hide-hscroll 'hide-vscroll
call-as-primary-owner
allow-scroll-to-last - parameter-like
scroll-with-bottom-base - parameter-like
lazy-refresh - parameter-like
force-display-focus - parameter-like
get-editor set-editor - formerly get-media and set-media
set-line-count
menu-item<%>
get-parent
delete restore is-deleted?
separator-menu-item%
<= parent
labelled-menu-item<%>
get-label set-label
get-plain-label
get-help-string set-help-string
enable is-enabled?
shortcut-menu-item<%>
command
get-shortcut set-shortcut
get-x-shortcut-prefix set-x-shortcut-prefix
menu-item%
<= label parent callback [shortcut #f] [help-string #f]
checkable-menu-item%
<= label parent callback [shortcut #f] [help-string #f]
check is-checked?
submenu-item<%>
get-menu
menu-item-container<%>
get-items
menu% (has a submenu-item<%>)
<= label parent [help-string #f]
get-item
popup-menu%
<= title
menu-bar%
<= frame
get-frame
enable is-enabled?
editor<%>
[ all the old wx:media-buffer% stuff, plus... ]
get-canvases - a list of canvases displaying the editor
get-active-canvas - the canvas that most recently had the focus (or #f)
get-canvas - the active canvas, or the first canva (or #f)
set-active-canvas add-canvas remove-canvas
auto-wrap - parameter-like
on-display-size - called when a display for the editor changes its size
event%
<=
get-time-stamp set-time-stamp
control-event%
<= event-type
get-event-type set-event-type
mouse-event%
<= event-type
get-event-type set-event-type
button-down? - specify a button with 'left, 'middle, 'right, or 'all
button-up?
dragging?
entering?
leaving?
moving?
button-changed?
get-left-down set-left-down
get-middle-down set-middle-down
get-right-down set-right-down
get-x get-y set-x set-y
get-shift-down set-shift-down
get-control-down set-control-down
get-meta-down set-meta-down
get-alt-down set-alt-down
key-event%
<=
get-key-code set-key-code - key code is a char or a symbol
get-shift-down set-shift-down
get-control-down set-control-down
get-meta-down set-meta-down
get-alt-down set-alt-down
get-x get-y set-x set-y
scroll-event%
<=
get-position set-position
get-event-type set-event-type
get-direction set-direction
======================================================================
3. Procedures
This is a complete list, although the arguments are only shown for a
few procedures.
If an old procedure isn't listed here, we got rid of it.
======================================================================
get-file
<= [message #f] [parent #f] [directory #f] [filename #f] [extension #f]
[style null]
styles: none
put-file
<= [message #f] [parent #f] [directory #f] [filename #f] [extension #f]
[style null]
styles: none
message-box
<= title message [parent #f] [style '(ok)]
styles: 'yes-no 'ok 'ok-cancel
get-text-from-user
<= title message [init-val #f] [parent #f] [style null]
styles: none
get-choice-from-user (returns integers, not the values)
<= title message choices [parent #f] [init-choices null] [style null]
styles: 'single 'multiple 'extended
get-ps-setup-from-user
<= [message #f] [parent #f] [init-setup #f] [style null]
styles: none
get-color-from-user - now supported for all platforms
<= [message #f] [parent #f] [init-color #f] [style null]
styles: none
get-font-from-user - now supported for all platforms
<= [message #f] [parent #f] [init-font #f] [style null]
styles: none
color-display? get-display-depth get-display-size
begin-busy-cursor end-busy-cursor is-busy-cursor?
bell
label->plain-label
get-resource write-resource
yield flush-display
get-face-list - formerly wx:get-font-list
find-graphical-system-path - formerly wx:find-path
current-ps-setup
get-top-level-windows
get-top-level-focus-window
get-top-level-edit-target-window
get-editor-print-margin
set-editor-print-margin
read-editor-global-header
read-editor-global-footer
write-editor-global-header
write-editor-global-footer
append-editor-operation-menu-items
append-editor-font-menu-items
add-editor-keymap-functions
add-text-keymap-functions
add-pasteboard-keymap-functions
editor-set-x-selection-mode
get-the-snip-class-list
get-the-buffer-data-class-list
======================================================================
4. Constant Mapping
The following table maps old wx:const- identifiers to new symbols.
======================================================================
wx:const-align-bottom 'bottom
wx:const-align-center 'center
wx:const-align-top 'top
wx:const-always-sb 'always-hscroll
wx:const-and 'and
wx:const-and-invert 'and-invert
wx:const-and-reverse 'and-reverse
wx:const-base 'base
wx:const-bdiagonal-hatch 'bdiagonal-hatch
wx:const-bitmap-type-bmp 'bmp
wx:const-bitmap-type-bmp-resource 'bmp-resource
wx:const-bitmap-type-gif 'gif
wx:const-bitmap-type-pict 'pict
wx:const-bitmap-type-pict-resource 'pict-resource
wx:const-bitmap-type-xbm 'xbm
wx:const-bitmap-type-xpm 'xpm
wx:const-bold 'bold
wx:const-border 'border
wx:const-both 'both
wx:const-break-for-caret 'caret
wx:const-break-for-line 'line
wx:const-break-for-selection 'selection
wx:const-break-for-user-1 'user1
wx:const-break-for-user-2 'user2
wx:const-cancel 'cancel
wx:const-cap-butt 'butt
wx:const-cap-projecting 'projecting
wx:const-cap-round 'round
wx:const-caption 'caption
wx:const-centre 'centre
wx:const-change-alignment 'change-alignment
wx:const-change-bigger 'change-bigger
wx:const-change-bold 'change-bold
wx:const-change-family 'change-family
wx:const-change-italic 'change-italic
wx:const-change-normal 'change-normal
wx:const-change-normal-colour 'change-normal-color
wx:const-change-nothing 'change-nothing
wx:const-change-size 'change-size
wx:const-change-smaller 'change-smaller
wx:const-change-style 'change-style
wx:const-change-toggle-style 'change-toggle-style
wx:const-change-toggle-underline 'change-toggle-underline
wx:const-change-toggle-weight 'change-toggle-weight
wx:const-change-underline 'change-underline
wx:const-change-weight 'change-weight
wx:const-clear 'clear
wx:const-colour 'color
wx:const-copy 'copy
wx:const-cross-hatch 'cross-hatch
wx:const-crossdiag-hatch 'crossdiag-hatch
wx:const-cursor-arrow 'arrow
wx:const-cursor-bullseye 'bullseye
wx:const-cursor-char (NO LONGER USED)
wx:const-cursor-cross 'cross
wx:const-cursor-hand 'hand
wx:const-cursor-ibeam 'ibeam
wx:const-cursor-left-button (NO LONGER USED)
wx:const-cursor-magnifier (NO LONGER USED)
wx:const-cursor-middle-button (NO LONGER USED)
wx:const-cursor-no-entry (NO LONGER USED)
wx:const-cursor-paint-brush (NO LONGER USED)
wx:const-cursor-pencil (NO LONGER USED)
wx:const-cursor-point-left (NO LONGER USED)
wx:const-cursor-point-right (NO LONGER USED)
wx:const-cursor-question-arrow (NO LONGER USED)
wx:const-cursor-right-button (NO LONGER USED)
wx:const-cursor-sizenesw (NO LONGER USED)
wx:const-cursor-sizens (NO LONGER USED)
wx:const-cursor-sizenwse (NO LONGER USED)
wx:const-cursor-sizewe (NO LONGER USED)
wx:const-cursor-sizing (NO LONGER USED)
wx:const-cursor-spraycan (NO LONGER USED)
wx:const-cursor-wait (NO LONGER USED)
wx:const-cursor-watch 'watch
wx:const-decorative 'decorative
wx:const-default 'default
wx:const-default-select 'default
wx:const-dot 'dot
wx:const-dot-dash 'dot-dash
wx:const-edit-buffer 'text
wx:const-edit-clear 'clear
wx:const-edit-copy 'copy
wx:const-edit-cut 'cut
wx:const-edit-insert-graphic-box 'insert-graphic-box
wx:const-edit-insert-image 'insert-image
wx:const-edit-insert-text-box 'insert-text-box
wx:const-edit-kill 'kill
wx:const-edit-paste 'paste
wx:const-edit-redo 'redo
wx:const-edit-select-all 'select-all
wx:const-edit-undo 'undo
wx:const-equiv 'equiv
wx:const-event-type-button-command 'button
wx:const-event-type-checkbox-command 'checkbox
wx:const-event-type-choice-command 'choice
wx:const-event-type-enter-window 'enter
wx:const-event-type-kill-focus 'kill-focus
wx:const-event-type-leave-window 'leave
wx:const-event-type-left-dclick (NO LONGER USED)
wx:const-event-type-left-down 'left-down
wx:const-event-type-left-up 'left-up
wx:const-event-type-listbox-command 'list-box
wx:const-event-type-menu-command (NO LONGER USED)
wx:const-event-type-middle-dclick (NO LONGER USED)
wx:const-event-type-middle-down 'middle-down
wx:const-event-type-middle-up 'middle-up
wx:const-event-type-motion 'motion
wx:const-event-type-multitext-command (NO LONGER USED)
wx:const-event-type-radiobox-command 'radio-box
wx:const-event-type-right-dclick (NO LONGER USED)
wx:const-event-type-right-down 'right-down
wx:const-event-type-right-up 'right-up
wx:const-event-type-scroll-bottom 'scroll-bottom
wx:const-event-type-scroll-linedown 'scroll-line-down
wx:const-event-type-scroll-lineup 'scroll-line-up
wx:const-event-type-scroll-pagedown 'scroll-page-down
wx:const-event-type-scroll-pageup 'scroll-page-up
wx:const-event-type-scroll-thumbtrack 'scroll-thumb
wx:const-event-type-scroll-top 'scroll-top
wx:const-event-type-scrollbar-command (NO LONGER USED)
wx:const-event-type-set-focus 'set-focus
wx:const-event-type-slider-command 'slider
wx:const-event-type-text-command 'text
wx:const-event-type-text-enter-command 'text-enter
wx:const-event-type-virt-listbox-command (NO LONGER USED)
wx:const-extended 'extended
wx:const-fdiagonal-hatch 'fdiagonal-hatch
wx:const-focus-display 'display
wx:const-focus-global 'global
wx:const-focus-immediate 'immediate
wx:const-hide-readonly 'hide-readonly
wx:const-horizontal 'horizontal
wx:const-horizontal-hatch 'horizontal-hatch
wx:const-hscroll 'hscroll
wx:const-icon-exclamation 'icon-exclamation
wx:const-icon-hand 'icon-hand
wx:const-icon-information 'icon-information
wx:const-icon-question 'icon-question
wx:const-iconize 'iconize
wx:const-invert 'invert
wx:const-italic 'italic
wx:const-join-bevel 'bevel
wx:const-join-miter 'miter
wx:const-join-round 'round
wx:const-k-add 'add
wx:const-k-back (NO LONGER USED)
wx:const-k-cancel 'cancel
wx:const-k-capital 'capital
wx:const-k-clear 'clear
wx:const-k-control 'control
wx:const-k-decimal 'decimal
wx:const-k-delete (NO LONGER USED)
wx:const-k-divide 'divide
wx:const-k-down 'down
wx:const-k-end 'end
wx:const-k-escape (NO LONGER USED)
wx:const-k-execute 'execute
wx:const-k-f1 'f1
wx:const-k-f10 'f10
wx:const-k-f11 'f11
wx:const-k-f12 'f12
wx:const-k-f13 'f13
wx:const-k-f14 'f14
wx:const-k-f15 'f15
wx:const-k-f16 'f16
wx:const-k-f17 'f17
wx:const-k-f18 'f18
wx:const-k-f19 'f19
wx:const-k-f2 'f2
wx:const-k-f20 'f20
wx:const-k-f21 'f21
wx:const-k-f22 'f22
wx:const-k-f23 'f23
wx:const-k-f24 'f24
wx:const-k-f3 'f3
wx:const-k-f4 'f4
wx:const-k-f5 'f5
wx:const-k-f6 'f6
wx:const-k-f7 'f7
wx:const-k-f8 'f8
wx:const-k-f9 'f9
wx:const-k-help 'help
wx:const-k-home 'home
wx:const-k-insert 'insert
wx:const-k-lbutton 'lbutton
wx:const-k-left 'left
wx:const-k-mbutton 'mbutton
wx:const-k-menu 'menu
wx:const-k-multiply 'multiply
wx:const-k-next 'next
wx:const-k-numlock 'numlock
wx:const-k-numpad0 'numpad0
wx:const-k-numpad1 'numpad1
wx:const-k-numpad2 'numpad2
wx:const-k-numpad3 'numpad3
wx:const-k-numpad4 'numpad4
wx:const-k-numpad5 'numpad5
wx:const-k-numpad6 'numpad6
wx:const-k-numpad7 'numpad7
wx:const-k-numpad8 'numpad8
wx:const-k-numpad9 'numpad9
wx:const-k-pause 'pause
wx:const-k-print 'print
wx:const-k-prior 'prior
wx:const-k-rbutton 'rbutton
wx:const-k-return (NO LONGER USED)
wx:const-k-right 'right
wx:const-k-scroll 'scroll
wx:const-k-select 'select
wx:const-k-separator 'separator
wx:const-k-shift 'shift
wx:const-k-snapshot 'snapshot
wx:const-k-space (NO LONGER USED)
wx:const-k-start 'start
wx:const-k-subtract 'subtract
wx:const-k-tab (NO LONGER USED)
wx:const-k-up 'up
wx:const-light 'light
wx:const-local-select 'local
wx:const-long-dash 'long-dash
wx:const-maximize 'maximize
wx:const-maximize-box 'maximize-box
wx:const-mcanvas-hide-h-scroll 'hide-hscroll
wx:const-mcanvas-hide-v-scroll 'hide-vscroll
wx:const-mcanvas-no-h-scroll 'no-hscroll
wx:const-mcanvas-no-v-scroll 'no-vscroll
wx:const-mdi-child 'mdi-child
wx:const-mdi-parent 'mdi-parent
wx:const-media-ff-copy 'copy
wx:const-media-ff-guess 'guess
wx:const-media-ff-same 'same
wx:const-media-ff-std 'standard
wx:const-media-ff-text 'text
wx:const-media-ff-text-force-cr 'text-force-cr
wx:const-minimize 'minimize
wx:const-minimize-box 'minimize-box
wx:const-mm-lometric (NO LONGER USED)
wx:const-mm-metric (NO LONGER USED)
wx:const-mm-points (NO LONGER USED)
wx:const-mm-text (NO LONGER USED)
wx:const-mm-twips (NO LONGER USED)
wx:const-modern 'modern
wx:const-move-line 'line
wx:const-move-page 'page
wx:const-move-simple 'simple
wx:const-move-word 'word
wx:const-msnipbox-xinset (NO LONGER USED: use 1)
wx:const-msnipbox-xmargin (NO LONGER USED: use 5)
wx:const-msnipbox-yinset (NO LONGER USED: use 1)
wx:const-msnipbox-ymargin (NO LONGER USED: use 5)
wx:const-multiple 'multiple
wx:const-nand 'nand
wx:const-no 'no
wx:const-no-op 'no-op
wx:const-nor 'nor
wx:const-normal 'normal
wx:const-oddeven-rule 'odd-even
wx:const-ok 'ok
wx:const-opaque-stipple 'opaque-stipple
wx:const-open 'open
wx:const-or 'or
wx:const-or-invert 'or-invert
wx:const-or-reverse 'or-reverse
wx:const-overwrite-prompt 'overwrite-prompt
wx:const-password (NO LONGER USED)
wx:const-pasteboard-buffer 'pasteboard
wx:const-pos-use-minus-one (NO LONGER USED)
wx:const-print-ask (NO LONGER USED)
wx:const-print-postscript 'postscript
wx:const-print-standard 'standard
wx:const-process-enter (NO LONGER USED)
wx:const-ps-file 'file
wx:const-ps-landscape 'landscape
wx:const-ps-portrait 'portrait
wx:const-ps-preview 'preview
wx:const-ps-printer 'printer
wx:const-readonly (NO LONGER USED)
wx:const-resize-border 'resize-border
wx:const-roman 'roman
wx:const-save 'save
wx:const-script 'script
wx:const-sdi 'sdi
wx:const-set 'set
wx:const-short-dash 'short-dash
wx:const-single 'single
wx:const-size-auto (NO LONGER USED)
wx:const-size-auto-height (NO LONGER USED)
wx:const-size-auto-width (NO LONGER USED)
wx:const-size-use-exsiting (NO LONGER USED)
wx:const-slant 'slant
wx:const-snip-after 'after
wx:const-snip-after-or-null 'after-or-none
wx:const-snip-anchored 'anchored
wx:const-snip-before 'before
wx:const-snip-before-or-null 'before-or-none
wx:const-snip-can-append 'can-append
wx:const-snip-draw-no-caret 'no-caret
wx:const-snip-draw-show-caret 'show-caret
wx:const-snip-draw-show-inactive-caret 'show-inactive-caret
wx:const-snip-handles-events 'handles-events
wx:const-snip-hard-newline 'hard-newline
wx:const-snip-height-depends-on-x 'height-depends-on-x
wx:const-snip-height-depends-on-y 'height-depends-on-y
wx:const-snip-invisible 'invisible
wx:const-snip-is-text 'is-text
wx:const-snip-newline 'newline
wx:const-snip-uses-buffer-path 'uses-buffer-path
wx:const-snip-width-depends-on-x 'width-depends-on-x
wx:const-snip-width-depends-on-y 'width-depends-on-y
wx:const-solid 'solid
wx:const-src-invert 'src-invert
wx:const-stipple 'stipple
wx:const-swiss 'swiss
wx:const-system 'system
wx:const-system-menu 'system-menu
wx:const-teletype 'teletype
wx:const-thick-frame 'thick-frame
wx:const-transparent 'transparent
wx:const-type-command-event 'command
wx:const-type-key-event 'key
wx:const-type-mouse-event 'mouse
wx:const-vertical 'vertical
wx:const-vertical-hatch 'vertical-hatch
wx:const-vscroll 'vscroll
wx:const-winding-rule 'winding
wx:const-x-select 'x
wx:const-xor 'xor
wx:const-yes 'yes
wx:const-yes-no 'yes-no
======================================================================
5. Relatively subtle changes
======================================================================
Added queue-callback: (queue-callback proc [hi-priority?])
key-event%'s key-code method was removed
key-event%'s get-key-code returns a character or a symbol
instead of a number
window<%>'s set-cursor no longer returns the cursor; added get-cursor,
instead
editor-snip%'s resize method no longer calls the embedded buffer's
set-max-size and set-min-size; now it calls on-display-size
media-buffer%'s do-edit changed to editor<%>'s do-edit-operation,
takes a symbol instead of a number
pasteboard%'s {on,after}-interactive-move takes a mouse-event% object
Xt: key-event% for a numpad ENTER key reports 'numpad-enter for the
key code instead of #\return
An editor's selection caret now blinks; added a blink-caret method to
editor<%> and snip%
Added 'unknown image kind for bitmap%'s load-file, etc., which
examines the file to determine the type automatically.
'wx flag for make-namespace changed to 'mred
canvas%'s get-view-start returns values in pixels, not scroll units
For canvas%'s set-scrollbars, #f indicates a disabled scrollbar rather
than a non-positive number
editor-wordbreak-map%'s get-map and set-map now work on characters
instead of integers
text%'s find-string and find-string-all use symbols to specify the
direction, 'forward or 'backward instead of -1 or 1.
In editor<%>'s scroll-to, text%'s scroll-to-position and
set-position-bias-scroll, editor-admin%'s scroll-to, and
snip-admin%'s scroll-to, bias changed from an integer to a symbol
(see the docs for details)
Changed arguments and default value of fit-on-page? for print in
editor<%>
Changed editor<%>'s modified? to is-modified?, added is-locked?
clipboard% changed to clipboard<%> and font-name-directory% changed to
font-name-directory<%>; there is just once instance, the-clipboard
and the-font-name-directory
the-color-database only has a find-color method; the others were
removed.
-----------------------------
TODO: Miscellaneous Cleanup
-----------------------------
Install a set of key-bindings for text-field% items.
Implement keyboard-based movement in frames/dialogs (in Scheme using
on-pre-char).
Move the editor margin settings into ps-setup%?