MessageDialog

A dialog presenting a message or a question.

<picture> <source srcset="message-dialog-dark.png" media="(prefers-color-scheme: dark)"> <img src="message-dialog.png" alt="message-dialog"> </picture>

Message dialogs have a heading, a body, an optional child widget, and one or multiple responses, each presented as a button.

Each response has a unique string ID, and a button label. Additionally, each response can be enabled or disabled, and can have a suggested or destructive appearance.

When one of the responses is activated, or the dialog is closed, the signal@MessageDialog::response signal will be emitted. This signal is detailed, and the detail, as well as the response parameter will be set to the ID of the activated response, or to the value of the property@MessageDialog:close-response property if the dialog had been closed without activating any of the responses.

Response buttons can be presented horizontally or vertically depending on available space.

When a response is activated, adw.message_dialog.MessageDialog is closed automatically.

An example of using a message dialog:

GtkWidget *dialog;

dialog = adw_message_dialog_new (parent, _("Replace File?"), NULL);

adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
                                _("A file named “%s” already exists. Do you want to replace it?"),
                                filename);

adw_message_dialog_add_responses (ADW_MESSAGE_DIALOG (dialog),
                                  "cancel",  _("_Cancel"),
                                  "replace", _("_Replace"),
                                  NULL);

adw_message_dialog_set_response_appearance (ADW_MESSAGE_DIALOG (dialog), "replace", ADW_RESPONSE_DESTRUCTIVE);

adw_message_dialog_set_default_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
adw_message_dialog_set_close_response (ADW_MESSAGE_DIALOG (dialog), "cancel");

g_signal_connect (dialog, "response", G_CALLBACK (response_cb), self);

gtk_window_present (GTK_WINDOW (dialog));

Async API

adw.message_dialog.MessageDialog can also be used via the adw.message_dialog.MessageDialog.choose method. This API follows the GIO async pattern, and the result can be obtained by calling adw.message_dialog.MessageDialog.chooseFinish, for example:

static void
dialog_cb (AdwMessageDialog *dialog,
           GAsyncResult     *result,
           MyWindow         *self)
{
  const char *response = adw_message_dialog_choose_finish (dialog, result);

  // ...
}

static void
show_dialog (MyWindow *self)
{
  GtkWidget *dialog;

  dialog = adw_message_dialog_new (GTK_WINDOW (self), _("Replace File?"), NULL);

  adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
                                  _("A file named “%s” already exists. Do you want to replace it?"),
                                  filename);

  adw_message_dialog_add_responses (ADW_MESSAGE_DIALOG (dialog),
                                    "cancel",  _("_Cancel"),
                                    "replace", _("_Replace"),
                                    NULL);

  adw_message_dialog_set_response_appearance (ADW_MESSAGE_DIALOG (dialog), "replace", ADW_RESPONSE_DESTRUCTIVE);

  adw_message_dialog_set_default_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
  adw_message_dialog_set_close_response (ADW_MESSAGE_DIALOG (dialog), "cancel");

  adw_message_dialog_choose (ADW_MESSAGE_DIALOG (dialog), NULL, (GAsyncReadyCallback) dialog_cb, self);
}

AdwMessageDialog as GtkBuildable

adw.message_dialog.MessageDialog supports adding responses in UI definitions by via the <responses> element that may contain multiple <response> elements, each respresenting a response.

Each of the <response> elements must have the id attribute specifying the response ID. The contents of the element are used as the response label.

Response labels can be translated with the usual translatable, context and comments attributes.

The <response> elements can also have enabled and/or appearance attributes. See adw.message_dialog.MessageDialog.setResponseEnabled and adw.message_dialog.MessageDialog.setResponseAppearance for details.

Example of an adw.message_dialog.MessageDialog UI definition:

<object class="AdwMessageDialog" id="dialog">
  <property name="heading" translatable="yes">Save Changes?</property>
  <property name="body" translatable="yes">Open documents contain unsaved changes. Changes which are not saved will be permanently lost.</property>
  <property name="default-response">save</property>
  <property name="close-response">cancel</property>
  <signal name="response" handler="response_cb"/>
  <responses>
    <response id="cancel" translatable="yes">_Cancel</response>
    <response id="discard" translatable="yes" appearance="destructive">_Discard</response>
    <response id="save" translatable="yes" appearance="suggested" enabled="false">_Save</response>
  </responses>
</object>

Accessibility

adw.message_dialog.MessageDialog uses the gtk.types.AccessibleRole.Dialog role.

Constructors

this
this(gtk.window.Window parent, string heading, string body_)

Creates a new adw.message_dialog.MessageDialog.

Members

Functions

addResponse
void addResponse(string id, string label)

Adds a response with id and label to self.

choose
void choose(gio.cancellable.Cancellable cancellable, gio.types.AsyncReadyCallback callback)

This function shows self to the user.

chooseFinish
string chooseFinish(gio.async_result.AsyncResult result)

Finishes the adw.message_dialog.MessageDialog.choose call and returns the response ID.

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

Connect to Response signal.

getBody
string getBody()

Gets the body text of self.

getBodyUseMarkup
bool getBodyUseMarkup()

Gets whether the body text of self includes Pango markup.

getCloseResponse
string getCloseResponse()

Gets the ID of the close response of self.

getDefaultResponse
string getDefaultResponse()

Gets the ID of the default response of self.

getExtraChild
gtk.widget.Widget getExtraChild()

Gets the child widget of self.

getHeading
string getHeading()

Gets the heading of self.

getHeadingUseMarkup
bool getHeadingUseMarkup()

Gets whether the heading of self includes Pango markup.

getResponseAppearance
adw.types.ResponseAppearance getResponseAppearance(string response)

Gets the appearance of response.

getResponseEnabled
bool getResponseEnabled(string response)

Gets whether response is enabled.

getResponseLabel
string getResponseLabel(string response)

Gets the label of response.

hasResponse
bool hasResponse(string response)

Gets whether self has a response with the ID response.

removeResponse
void removeResponse(string id)

Removes a response from self.

response
void response(string response)

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

setBody
void setBody(string body_)

Sets the body text of self.

setBodyUseMarkup
void setBodyUseMarkup(bool useMarkup)

Sets whether the body text of self includes Pango markup.

setCloseResponse
void setCloseResponse(string response)

Sets the ID of the close response of self.

setDefaultResponse
void setDefaultResponse(string response)

Sets the ID of the default response of self.

setExtraChild
void setExtraChild(gtk.widget.Widget child)

Sets the child widget of self.

setHeading
void setHeading(string heading)

Sets the heading of self.

setHeadingUseMarkup
void setHeadingUseMarkup(bool useMarkup)

Sets whether the heading of self includes Pango markup.

setResponseAppearance
void setResponseAppearance(string response, adw.types.ResponseAppearance appearance)

Sets the appearance for response.

setResponseEnabled
void setResponseEnabled(string response, bool enabled)

Sets whether response is enabled.

setResponseLabel
void setResponseLabel(string response, string label)

Sets the label of response to label.

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.