gui/notes/mred/MrEd_100.txt
Matthew Flatt 8387181e7f .
original commit: 0e82effd880a83640c9db5b470f1bfa13bc7afb4
1998-09-19 02:04:51 +00:00

1024 lines
41 KiB
Plaintext

******************
* MrEd 100 *
******************
The entity known as "MrEd" in previous versions has been split
up. MrEd 53 comprised two parts:
* a low-level 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 useful window classes (with geometry management) but
much, much more, making it too heavyweight for simple GUI programs.
In MrEd 100, we split up the core toolbox and the application
framework. The new toolbox includes the most useful stuff from the
old mred: domain, such as the windowing classes with geometry
management. These mred: classes replace clumsy wx: classes. Useless
and redundant methods have been eliminated. The overall effect is that
the MrEd 100 toolbox is both smaller and better than the core toolbox
in MrEd 53.
The old mred: classes that implement the application framework has been
moved into a separate, optional library. It is no longer necessary to
understand units, collections, and the framework for bootstrapping large
programs to get a simple MrEd application going.
Unlike MrEd 53, MrEd 100 is just an extension of MzScheme with a
graphical toolbox. No extra files are needed to start the MrEd
executable. 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)'.
MrEd's `graphical-read-eval-print-loop' implements a *very* primitive
GUI REPL, not the relatively useful REPL that came with the old MrEd
toolbox/framework combo. DrScheme now provides the only development
environment for MrEd. But unlike previous releases, DrScheme 100
provides a REPL that matches MrEd's language exactly.
Everything works in MrEd 100. Previous versions of MrEd made all of
the low-level toolbox (wxWindows) available, regardless of how well
certain parts worked (or how consistently across platforms). Over many
releases, we fixed a lot of things that didn't work, but it was still
hard to say which parts of the toolbox were reliable, even in MrEd
53. For 100, we've turned the tables: everything that is truly useful
works (to the best of our testing), and the other junk has been thrown
away.
======================================================================
0. Highlights of the New MrEd Toolbox
======================================================================
We didn't try to develop an improved windowing model, but instead
tried to clean up the existing model. The following are a few
highlights of the revision:
* 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 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 drop 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.
* 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. Some drawing
modes eliminated, ... [still hashing out this part]
The blit method works directly on bitmaps.
The canvas% class no longer supplies drawing methods. Instead,
get-dc to get a drawing context (which always has a more complete
set of methods, anyway).
* American spelling is used everywhere: colour -> color, centre
-> center.
The next section shows the new interface/class hierarchy for windows a
few other parts of the toolbox, and the section after that lists all
the methods of the new interfaces and classes. Section 3 lists the new
complete 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 100 (like the HISTORY notes
that accompany an average MrEd release).
======================================================================
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<%>
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. 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
{get-set}-{...} PS configuration bundled into an object, an instance of
ps-setup%; added current-ps-setup parameter.
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
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)
Change post-script-dc% and printer-dc% ininitialization arguments.
PostScript settings now kept as a ps-setup% object in the
current-ps-setup parameter.
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
-----------------------------
DC cleanup. Change dc set-background to take a color instead of a
brush. Choose a small set of logical drawing modes to implement
consistently, and perhaps make the drawing mode a property of a
pen/brush instead of the DC.
Implement keyboard-based movement in frames/dialogs
(implemented in Scheme using on-pre-char).
Move editor margin settings into ps-setup%?