Dialog

Dialogs are a convenient way to prompt the user for a small amount of input.

An example GtkDialog

Typical uses are to display a message, ask a question, or anything else that does not require extensive effort on the user’s part.

The main area of a gtk.dialog.Dialog is called the "content area", and is yours to populate with widgets such a gtk.label.Label or gtk.entry.Entry, to present your information, questions, or tasks to the user.

In addition, dialogs allow you to add "action widgets". Most commonly, action widgets are buttons. Depending on the platform, action widgets may be presented in the header bar at the top of the window, or at the bottom of the window. To add action widgets, create your gtk.dialog.Dialog using gtk.dialog.Dialog.newWithButtons, or use gtk.dialog.Dialog.addButton, gtk.dialog.Dialog.addButtons, or gtk.dialog.Dialog.addActionWidget.

GtkDialogs uses some heuristics to decide whether to add a close button to the window decorations. If any of the action buttons use the response ID gtk.types.ResponseType.Close or gtk.types.ResponseType.Cancel, the close button is omitted.

Clicking a button that was added as an action widget will emit the gtk.dialog.Dialog.response signal with a response ID that you specified. GTK will never assign a meaning to positive response IDs; these are entirely user-defined. But for convenience, you can use the response IDs in the gtk.types.ResponseType enumeration (these all have values less than zero). If a dialog receives a delete event, the gtk.dialog.Dialog.response signal will be emitted with the gtk.types.ResponseType.DeleteEvent response ID.

Dialogs are created with a call to gtk.dialog.Dialog.new_ or gtk.dialog.Dialog.newWithButtons. The latter is recommended; it allows you to set the dialog title, some convenient flags, and add buttons.

A “modal” dialog (that is, one which freezes the rest of the application from user input), can be created by calling gtk.window.Window.setModal on the dialog. When using gtk.dialog.Dialog.newWithButtons, you can also pass the gtk.types.DialogFlags.Modal flag to make a dialog modal.

For the simple dialog in the following example, a gtk.message_dialog.MessageDialog would save some effort. But you’d need to create the dialog contents manually if you had more than a simple message in the dialog.

An example for simple gtk.dialog.Dialog usage:

// Function to open a dialog box with a message
void
quick_message (GtkWindow *parent, char *message)
{
 GtkWidget *dialog, *label, *content_area;
 GtkDialogFlags flags;

 // Create the widgets
 flags = GTK_DIALOG_DESTROY_WITH_PARENT;
 dialog = gtk_dialog_new_with_buttons ("Message",
                                       parent,
                                       flags,
                                       _("_OK"),
                                       GTK_RESPONSE_NONE,
                                       NULL);
 content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
 label = gtk_label_new (message);

 // Ensure that the dialog box is destroyed when the user responds

 g_signal_connect_swapped (dialog,
                           "response",
                           G_CALLBACK (gtk_window_destroy),
                           dialog);

 // Add the label, and show everything we’ve added

 gtk_box_append (GTK_BOX (content_area), label);
 gtk_widget_show (dialog);
}

GtkDialog as GtkBuildable

The gtk.dialog.Dialog implementation of the gtk.buildable.Buildable interface exposes the @content_area as an internal child with the name “content_area”.

gtk.dialog.Dialog supports a custom <action-widgets> element, which can contain multiple <action-widget> elements. The “response” attribute specifies a numeric response, and the content of the element is the id of widget (which should be a child of the dialogs @action_area). To mark a response as default, set the “default” attribute of the <action-widget> element to true.

gtk.dialog.Dialog supports adding action widgets by specifying “action” as the “type” attribute of a <child> element. The widget will be added either to the action area or the headerbar of the dialog, depending on the “use-header-bar” property. The response id has to be associated with the action widget using the <action-widgets> element.

An example of a gtk.dialog.Dialog UI definition fragment:

<object class="GtkDialog" id="dialog1">
  <child type="action">
    <object class="GtkButton" id="button_cancel"/>
  </child>
  <child type="action">
    <object class="GtkButton" id="button_ok">
    </object>
  </child>
  <action-widgets>
    <action-widget response="cancel">button_cancel</action-widget>
    <action-widget response="ok" default="true">button_ok</action-widget>
  </action-widgets>
</object>

Accessibility

gtk.dialog.Dialog uses the gtk.types.AccessibleRole.Dialog role.

More...

Constructors

this
this()

Creates a new dialog box.

Members

Functions

addActionWidget
void addActionWidget(gtk.widget.Widget child, int responseId)

Adds an activatable widget to the action area of a gtk.dialog.Dialog.

addButton
gtk.widget.Widget addButton(string buttonText, int responseId)

Adds a button with the given text.

connectClose
ulong connectClose(T callback, Flag!"After" after)

Connect to Close signal.

connectResponse
ulong connectResponse(T callback, Flag!"After" after)

Connect to Response signal.

getContentArea
gtk.box.Box getContentArea()

Returns the content area of dialog.

getHeaderBar
gtk.header_bar.HeaderBar getHeaderBar()

Returns the header bar of dialog.

getResponseForWidget
int getResponseForWidget(gtk.widget.Widget widget)

Gets the response id of a widget in the action area of a dialog.

getWidgetForResponse
gtk.widget.Widget getWidgetForResponse(int responseId)

Gets the widget button that uses the given response ID in the action area of a dialog.

response
void response(int responseId)

Emits the ::response signal with the given response ID.

setDefaultResponse
void setDefaultResponse(int responseId)

Sets the default widget for the dialog based on the response ID.

setResponseSensitive
void setResponseSensitive(int responseId, bool setting)

A convenient way to sensitize/desensitize dialog buttons.

Inherited Members

From Window

getDefaultIconName
string getDefaultIconName()

Returns the fallback icon name for windows.

getToplevels
gio.list_model.ListModel getToplevels()

Returns a list of all existing toplevel windows.

listToplevels
gtk.widget.Widget[] listToplevels()

Returns a list of all existing toplevel windows.

setAutoStartupNotification
void setAutoStartupNotification(bool setting)

Sets whether the window should request startup notification.

setDefaultIconName
void setDefaultIconName(string name)

Sets an icon to be used as fallback.

setInteractiveDebugging
void setInteractiveDebugging(bool enable)

Opens or closes the interactive debugger.

close
void close()

Requests that the window is closed.

destroy
void destroy()

Drop the internal reference GTK holds on toplevel windows.

fullscreen
void fullscreen()

Asks to place window in the fullscreen state.

fullscreenOnMonitor
void fullscreenOnMonitor(gdk.monitor.MonitorG monitor)

Asks to place window in the fullscreen state on the given monitor.

getApplication
gtk.application.Application getApplication()

Gets the gtk.application.Application associated with the window.

getChild
gtk.widget.Widget getChild()

Gets the child widget of window.

getDecorated
bool getDecorated()

Returns whether the window has been set to have decorations.

getDefaultSize
void getDefaultSize(int width, int height)

Gets the default size of the window.

getDefaultWidget
gtk.widget.Widget getDefaultWidget()

Returns the default widget for window.

getDeletable
bool getDeletable()

Returns whether the window has been set to have a close button.

getDestroyWithParent
bool getDestroyWithParent()

Returns whether the window will be destroyed with its transient parent.

getFocus
gtk.widget.Widget getFocus()

Retrieves the current focused widget within the window.

getFocusVisible
bool getFocusVisible()

Gets whether “focus rectangles” are supposed to be visible.

getGroup
gtk.window_group.WindowGroup getGroup()

Returns the group for window.

getHandleMenubarAccel
bool getHandleMenubarAccel()

Returns whether this window reacts to F10 key presses by activating a menubar it contains.

getHideOnClose
bool getHideOnClose()

Returns whether the window will be hidden when the close button is clicked.

getIconName
string getIconName()

Returns the name of the themed icon for the window.

getMnemonicsVisible
bool getMnemonicsVisible()

Gets whether mnemonics are supposed to be visible.

getModal
bool getModal()

Returns whether the window is modal.

getResizable
bool getResizable()

Gets the value set by gtk.window.Window.setResizable.

getTitle
string getTitle()

Retrieves the title of the window.

getTitlebar
gtk.widget.Widget getTitlebar()

Returns the custom titlebar that has been set with gtk.window.Window.setTitlebar.

getTransientFor
gtk.window.Window getTransientFor()

Fetches the transient parent for this window.

hasGroup
bool hasGroup()

Returns whether window has an explicit window group.

isActive
bool isActive()

Returns whether the window is part of the current active toplevel.

isFullscreen
bool isFullscreen()

Retrieves the current fullscreen state of window.

isMaximized
bool isMaximized()

Retrieves the current maximized state of window.

isSuspended
bool isSuspended()

Retrieves the current suspended state of window.

maximize
void maximize()

Asks to maximize window, so that it fills the screen.

minimize
void minimize()

Asks to minimize the specified window.

present
void present()

Presents a window to the user.

presentWithTime
void presentWithTime(uint timestamp)

Presents a window to the user in response to an user interaction.

setApplication
void setApplication(gtk.application.Application application)

Sets or unsets the gtk.application.Application associated with the window.

setChild
void setChild(gtk.widget.Widget child)

Sets the child widget of window.

setDecorated
void setDecorated(bool setting)

Sets whether the window should be decorated.

setDefaultSize
void setDefaultSize(int width, int height)

Sets the default size of a window.

setDefaultWidget
void setDefaultWidget(gtk.widget.Widget defaultWidget)

Sets the default widget.

setDeletable
void setDeletable(bool setting)

Sets whether the window should be deletable.

setDestroyWithParent
void setDestroyWithParent(bool setting)

If setting is true, then destroying the transient parent of window will also destroy window itself.

setDisplay
void setDisplay(gdk.display.Display display)

Sets the gdk.display.Display where the window is displayed.

setFocus
void setFocus(gtk.widget.Widget focus)

Sets the focus widget.

setFocusVisible
void setFocusVisible(bool setting)

Sets whether “focus rectangles” are supposed to be visible.

setHandleMenubarAccel
void setHandleMenubarAccel(bool handleMenubarAccel)

Sets whether this window should react to F10 key presses by activating a menubar it contains.

setHideOnClose
void setHideOnClose(bool setting)

If setting is true, then clicking the close button on the window will not destroy it, but only hide it.

setIconName
void setIconName(string name)

Sets the icon for the window from a named themed icon.

setMnemonicsVisible
void setMnemonicsVisible(bool setting)

Sets whether mnemonics are supposed to be visible.

setModal
void setModal(bool modal)

Sets a window modal or non-modal.

setResizable
void setResizable(bool resizable)

Sets whether the user can resize a window.

setStartupId
void setStartupId(string startupId)

Sets the startup notification ID.

setTitle
void setTitle(string title)

Sets the title of the gtk.window.Window.

setTitlebar
void setTitlebar(gtk.widget.Widget titlebar)

Sets a custom titlebar for window.

setTransientFor
void setTransientFor(gtk.window.Window parent)

Dialog windows should be set transient for the main application window they were spawned from. This allows window managers to e.g. keep the dialog on top of the main window, or center the dialog over the main window. gtk.dialog.Dialog.newWithButtons and other convenience functions in GTK will sometimes call gtk.window.Window.setTransientFor on your behalf.

unfullscreen
void unfullscreen()

Asks to remove the fullscreen state for window, and return to its previous state.

unmaximize
void unmaximize()

Asks to unmaximize window.

unminimize
void unminimize()

Asks to unminimize the specified window.

connectActivateDefault
ulong connectActivateDefault(T callback, Flag!"After" after)

Connect to ActivateDefault signal.

connectActivateFocus
ulong connectActivateFocus(T callback, Flag!"After" after)

Connect to ActivateFocus signal.

connectCloseRequest
ulong connectCloseRequest(T callback, Flag!"After" after)

Connect to CloseRequest signal.

connectEnableDebugging
ulong connectEnableDebugging(T callback, Flag!"After" after)

Connect to EnableDebugging signal.

connectKeysChanged
ulong connectKeysChanged(T callback, Flag!"After" after)

Connect to KeysChanged signal.

Detailed Description

Deprecated: Use gtk.window.Window instead