Dialog

A modal dialog window.

Build content with setSizer, optionally add a standard button row, then call showModal, which blocks until the dialog is dismissed and returns the DialogResult. The dialog's child controls remain valid after showModal returns, so their values can be read; call dispose when finished with it.

Constructors

this
this(Widget parent, string title, int width, int height)

Create a modal dialog parented to parent (any widget; the dialog is owned by, centered on, and modal to that widget's top-level window).

Members

Functions

addStandardButtons
void addStandardButtons(ButtonSet set)

Add a right-aligned row of standard buttons at the bottom of the dialog, each wired to dismiss the dialog with the matching DialogResult. The OK/Yes button becomes the dialog's default push button (activated by Enter via the native dialog manager).

endModal
void endModal(DialogResult result)

Dismiss the dialog with result, breaking out of the modal loop.

relayout
void relayout()

Re-run the root sizer over the dialog's client area.

setSizer
void setSizer(Sizer sizer)

Set the dialog's content sizer. The content is laid out above any standard button row added with addStandardButtons.

showModal
DialogResult showModal()

Show the dialog modally: disable the parent window, pump messages through the dialog manager until endModal is called (or the dialog is closed), then re-enable the parent and return the result.

Inherited Members

From Widget

handle_
HWND handle_;

The native window handle this widget owns (null until created).

parent_
Widget parent_;

The widget this one is parented to, if any.

children_
Widget[] children_;

Child widgets, in z/insertion order.

visible_
bool visible_;

Cached visibility flag.

bounds_
Rect bounds_;

Cached bounds (window-relative for children, screen-relative for windows).

handle
HWND handle()

The native window handle this widget owns (null until created).

parent
Widget parent()

The widget this one is parented to, if any. Read-only; see addChild.

children
Widget[] children()

The child widgets, in z/insertion order. Read-only; see addChild.

visible
bool visible()

Whether the widget is currently visible. Read-only; see setVisible.

bounds
Rect bounds()

The widget's last-known bounds. Read-only; see setBounds/getBounds.

rawHandle
HWND rawHandle()

Raw handle accessor for subclasses and the backend.

show
void show()

Make the widget visible.

hide
void hide()

Hide the widget.

setVisible
void setVisible(bool value)

Set visibility, updating the native window if it exists.

setBounds
void setBounds(Rect r)

Move/resize the widget, updating the native window if it exists.

getBounds
Rect getBounds()

The widget's last-known bounds.

getClientRect
Rect getClientRect()

The widget's client area (origin at 0,0). Empty if not yet created.

setEnabled
void setEnabled(bool enabled)

Enable or disable input for the widget.

isEnabled
bool isEnabled()

Whether the widget currently accepts input.

setFocus
void setFocus()

Give the widget keyboard focus.

invalidate
void invalidate()

Request a repaint of the whole widget.

getPreferredSize
Size getPreferredSize()

The widget's preferred size, used by the layout engine for non-stretching (proportion 0) items. The base widget has no intrinsic size; controls override this.

addChild
void addChild(Widget child)

Append a child and set its parent to this widget.

removeChild
void removeChild(Widget child)

Remove a child and clear its parent link. Unknown children are ignored.

dispose
void dispose()

Deterministically tear the widget down: dispose children, detach from the parent, destroy the native window, unregister it, and release the GC root. Idempotent — safe to call more than once.

registerHandle
void registerHandle()

Associate this widget's freshly-created HWND with the dispatch machinery and pin it as a GC root. Call once, immediately after handle is set.

processMessage
LRESULT processMessage(UINT msg, WPARAM wParam, LPARAM lParam)

Handle a window message routed from the master window procedure.

Meta