====================================================================== 0. Highlights of the New MrEd Toolbox ====================================================================== * The wx/mred split has been eliminated. The wx methods for manually managing the position and size of windows have been eliminated; containers manage all window positions and sizes. The only way to set control positions explicitly is to derive a new container class. The windowing class hierarchy has been rerranged. For example, dialog% (formerly dialog-box%) 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 provided many "classes" like wx:window% that could not be instantiated. The new toolbox has a window<%> interface (where "<%>" is the conventional suffix for interfaces). * Instead of null, #f is used for the "no appropriate value" value, such as the parent argument for a frame that does not have a parent window, or the result for get-label when the window does not have a label. There are no wx:const-... values. Instead, a method that used to take a single (numerical) wx:const- flag now takes a symbol, and a method that used to take bitwise-ior'd wx:const- integers now takes 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 a precisely 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 when 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 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. (In previous versions of MrEd, 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, a menu bar is created by providing the frame as an initialization argument in (make-object menu-bar% ...). Similarly, a menu is created by supplying the parent menu bar as an initialization argument (or a parent menu to create a submenu). Finally, a menu item is created by instantiating menu-item% or checkable-menu-item% with a parent menu. Integer menu IDs have been eliminated; when a menu item is selected, a callback associated with the menu item is executed, just as when a button is clicked. * The "media" names have changed. Roughly, we replaced "media" with "editor", or dropped "media" when "editor" is not useful. The following is 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 using 'same instead of -1: (send (make-object text%) insert "Hello" 0 'same) Many of the old on-XXX methods for editors formerly returned a Boolean value to indicate whether the action should proceed (e.g., on-insert in media-edit%), but that convention does not work well with composing class extensions. MrEd 100 provides a parallel set of can-XXX? methods (e.g., can-insert? in text%) that first determines whether an operation should proceed; if so, on-XXX is called (its result is ignored), the operation is performed, and after-XXX is called. Beside renaming and checking, little else has changed in the editor toolbox, but it is a little better integrated with system-wide keyboard focus methods. For example, frame% provides a get-focus-window method, which returns the frame's subwindow with the current focus, but it also provides a get-focus-object method, which returns 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 wx:multi-text% instance is created via a style flag for text-field%.) * The command-event% class was changed to control-event%. It has very few methods, since the information that was formerly encapsulated in a command-event% object can be extracted just as easily from the control. * Navigating controls (in a frame or dialog) with the keyboard works on all platforms. Mnemonic characters (underlined letters in a control label) now work correctly under Windows, and now also work under X. Windows keyboard events involving the Alt key are now reported to on-char et al. (as a Meta key event). * 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 eliminated. The memory-dc% class was renamed to bitmap-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 bitmaps provide all of the same functionality. The xor drawing mode was removed from device contexts and added as a style for pens and brushs. 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 other 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, all canvas drawing must use get-dc to get a drawing context (which always had a more complete set of methods, anyway). * Initialization arguments for creating windows have been re-ordered. In general, the order is as follows: label [sub-labels] parent callback [init-value] style ^- e.g., items in a radio box where style is a list of symbols. Some methods have been renamed to be either more (accurately) descriptive or more consistent with other method names. American spelling is used everywhere: colour -> color, centre -> center, grey -> gray. MzScheme's class syntax also changed slightly: * In MzScheme 53, the empty list could be provided as a class's "superclass", indicating that the class has no superclass. In 100, every new class must have a superclass (and super-init must always be called). MzScheme 100 provides a built-in empty class called object%. * In MzScheme 53, a `public' instance variable declaration would either override an existing instance variable or declare a new one, depending on the set of instance variables provided by the superclass. In 100, a `public' declaration always introduces a new instance variable; if the superclass already provides the instance variable, an exception is raised. The new `override' clause declares instance variables to override existing definitions; an exception is raised if the superclass does not provide the instance variable to override. ====================================================================== 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% _<<< | | | | |- horizontal-pane% | control<%> | | | |- vertical-pane% | |- message% | | | |- grow-box-spacer-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<%> menu-item-container<%> | | |- separator-menu-item% _____|___ |- labelled-menu-item<%> | |- menu-bar% _________|_________ | |- popup-menu% | | | | menu% | |- selectable-menu-item<%> |- menu-item% |- checkable-menu-item% dc<%> (canvas<%>'s get-dc returns a 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 get-graphical-min-size 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 after-new-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 gorw-box-spacer-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) on-traverse-char on-system-menu-char center move resize frame% : top-level-window<%> <= label [parent #f] [width #f] [height #f] [x #f] [y #f] [style null] styles: 'no-resize-border 'no-caption 'no-system-menu 'mdi-parent 'mdi-child create-status-line set-status-text has-status-line? get-menu-bar iconize is-iconized? set-icon maximize on-menu-char dialog% : top-level-window<%> <= label [parent #f] [width #f] [height #f] [x #f] [y #f] [style null] styles: 'no-caption 'resize-border 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 on-tab-in 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 init-manual-scrollbars init-auto-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? selectable-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? menu-item-container<%> get-items menu% <= label parent [help-string #f] 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-choices-from-user (returns index 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 get-face-list - formerly wx:get-font-list yield sleep/yield flush-display queue-callback 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 current-new-top-level-window-handler get-window-text-extent get-panel-background graphical-read-eval-print-loop make-eventspace eventspace? current-eventspace eventspace-shutdown? event-dispatch-handler check-for-break special-control-key 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 current-text-keymap-initializer 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-field-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 and potentially confusing changes ====================================================================== Added queue-callback: (queue-callback proc [hi-priority?]) and removed MzScheme's semaphore-callback. Added low-priority callbacks in addition to the old high-priority callbacks. 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. key-event% for a numpad Enter key in Xt reports 'numpad-enter for the key code instead of #\return. Added 'unknown image kind for bitmap%'s load-file, etc., which examines the file to determine the type automatically. 'wx flag for MzScheme's make-namespace changed to 'mred. canvas%'s get-view-start returns values in pixels, not scroll units. dc<%>'s get-text-extent and get-size return multiple values instead of mutating boxes. dc<%>'s get-/set-background-mode changed to get-/set-text-mode. A text editor's selection caret now blinks; added a blink-caret method to editor<%> and snip%. 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). media-buffer%'s do-edit changed to editor<%>'s do-edit-operation, which takes a symbol instead of a number. Changed editor<%>'s modified? to is-modified?, added is-locked?. Added add-undo method to editor<%>, and introduced editor-undo% class. 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. Changed arguments and default value of fit-on-page? for print in editor<%>. pasteboard%'s {on,after}-interactive-move takes a mouse-event% object. pasteboard% is now locked for writing during calls to on-paint 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. 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. Certain color names with mappings under X (e.g., "FORESTGREEN") are no longer available; instead, the only availabale colors are the ones defined in the manual. Changed the syntax for keymap%'s map-function. f a modifier is not mentioned in a state string, it matches states where the modifier is pressed or not pressed. A tilde (~) preceding a modifier makes the string match only states where the corresponding modifier is not pressed. Changed keymap%'s add-key-function and add-mouse-function to add-function (eliminating the different namespaces for key and mouse event functions). Removed keymap%'s set-error-callback; the keymap errors are instead reported by raising an exception. The exception handler can't escape, but it can at least print the error to the current error port.