(new dialog% [label label] [ [parent parent] [width width] [height height] [x x] [y y] [style style] [enabled enabled] [border border] [spacing spacing] [alignment alignment] [min-width min-width] [min-height min-height] [stretchable-width stretchable-width] [stretchable-height stretchable-height]]) → (is-a?/c dialog%) label : label-string? parent : (or/c (is-a?/c frame%) (is-a?/c dialog%) #f) = #f width : (or/c dimension-integer? #f) = #f height : (or/c dimension-integer? #f) = #f x : (or/c dimension-integer? #f) = #f y : (or/c dimension-integer? #f) = #f
(listof (or/c 'no-caption 'resize-border 'no-sheet 'close-button)) = null enabled : any/c = #t border : spacing-integer? = 0 spacing : spacing-integer? = 0
(list/c (or/c 'left 'center 'right) (or/c 'top 'center 'bottom)) = '(center top) min-width : (or/c dimension-integer? #f) = #f min-height : (or/c dimension-integer? #f) = #f stretchable-width : any/c = #t stretchable-height : any/c = #t
The parent argument can be #f or an existing frame. On Windows, if parent is an existing frame, the new dialog is always on top of its parent. On Windows and Unix, a dialog is iconized when its parent is iconized.
If parent is #f, then the eventspace for the new dialog is the current eventspace, as determined by current-eventspace. Otherwise, parent’s eventspace is the new dialog’s eventspace.
If the width or height argument is not #f, it specifies an initial size for the dialog (in pixels) assuming that it is larger than the minimum size, otherwise the minimum size is used. On Windows and Mac OS (and with some Unix window managers) dialogs are not resizeable.
If the x or y argument is not #f, it specifies an initial location for the dialog. Otherwise, if no location is set before the dialog is shown, it is centered (with respect parent if not #f, the screen otherwise).
The style flags adjust the appearance of the dialog on some platforms:
omits the title bar for the dialog (Windows)
adds a resizeable border around the window (Windows), ability to resize the window (Mac OS), or grow box in the bottom right corner (older Mac OS)
uses a movable window for the dialog, even if a parent window is provided (Mac OS)
include a close button in the dialog’s title bar, which would not normally be included (Mac OS)
Even if the dialog is not shown, a few notification events may be queued for the dialog on creation. Consequently, the new dialog’s resources (e.g., memory) cannot be reclaimed until some events are handled, or the dialog’s eventspace is shut down.
For information about the enabled argument, see window<%>. For information about the border, spacing, and alignment arguments, see area-container<%>. For information about the min-width, min-height, stretchable-width, and stretchable-height arguments, see area<%>.
(send a-dialog on-subwindow-char receiver event) → boolean? receiver : (is-a?/c window<%>) event : (is-a?/c key-event%)
(or (send this on-system-menu-char event) (send this on-traverse-char event))
If show? is true, the method does not immediately return. Instead, it loops with yield until the dialog is found to be hidden between calls to yield. An internal semaphore is used with yield to avoid a busy-wait, and to ensure that the show method returns as soon as possible after the dialog is hidden.