AlertDialog

A dialog presenting a message or a question.

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

Alert 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@AlertDialog::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@AlertDialog: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.alert_dialog.AlertDialog is closed automatically.

An example of using an alert dialog:

AdwDialog *dialog;

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

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

adw_alert_dialog_add_responses (ADW_ALERT_DIALOG (dialog),
                                "cancel",  _("_Cancel"),
                                "replace", _("_Replace"),
                                NULL);

adw_alert_dialog_set_response_appearance (ADW_ALERT_DIALOG (dialog),
                                          "replace",
                                          ADW_RESPONSE_DESTRUCTIVE);

adw_alert_dialog_set_default_response (ADW_ALERT_DIALOG (dialog), "cancel");
adw_alert_dialog_set_close_response (ADW_ALERT_DIALOG (dialog), "cancel");

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

adw_dialog_present (dialog, parent);

Async API

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

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

  // ...
}

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

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

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

  adw_alert_dialog_add_responses (ADW_ALERT_DIALOG (dialog),
                                  "cancel",  _("_Cancel"),
                                  "replace", _("_Replace"),
                                  NULL);

  adw_alert_dialog_set_response_appearance (ADW_ALERT_DIALOG (dialog),
                                            "replace",
                                            ADW_RESPONSE_DESTRUCTIVE);

  adw_alert_dialog_set_default_response (ADW_ALERT_DIALOG (dialog), "cancel");
  adw_alert_dialog_set_close_response (ADW_ALERT_DIALOG (dialog), "cancel");

  adw_alert_dialog_choose (ADW_ALERT_DIALOG (dialog), GTK_WIDGET (self),
                           NULL, (GAsyncReadyCallback) dialog_cb, self);
}

AdwAlertDialog as GtkBuildable

adw.alert_dialog.AlertDialog 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.alert_dialog.AlertDialog.setResponseEnabled and adw.alert_dialog.AlertDialog.setResponseAppearance for details.

Example of an adw.alert_dialog.AlertDialog UI definition:

<object class="AdwAlertDialog" 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>

Constructors

this
this(string heading, string body_)

Creates a new adw.alert_dialog.AlertDialog.

Members

Functions

addResponse
void addResponse(string id, string label)

Adds a response with id and label to self.

choose
void choose(gtk.widget.Widget parent, 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.alert_dialog.AlertDialog.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.

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 Dialog

addBreakpoint
void addBreakpoint(adw.breakpoint.Breakpoint breakpoint)

Adds breakpoint to self.

close
bool close()

Attempts to close self.

forceClose
void forceClose()

Closes self.

getCanClose
bool getCanClose()

Gets whether self can be closed.

getChild
gtk.widget.Widget getChild()

Gets the child widget of self.

getContentHeight
int getContentHeight()

Gets the height of the dialog's contents.

getContentWidth
int getContentWidth()

Gets the width of the dialog's contents.

getCurrentBreakpoint
adw.breakpoint.Breakpoint getCurrentBreakpoint()

Gets the current breakpoint.

getDefaultWidget
gtk.widget.Widget getDefaultWidget()

Gets the default widget for self.

getFocus
gtk.widget.Widget getFocus()

Gets the focus widget for self.

getFollowsContentSize
bool getFollowsContentSize()

Gets whether to size content of self automatically.

getPresentationMode
adw.types.DialogPresentationMode getPresentationMode()

Gets presentation mode for self.

getTitle
string getTitle()

Gets the title of self.

present
void present(gtk.widget.Widget parent)

Presents self within parent's window.

setCanClose
void setCanClose(bool canClose)

Sets whether self can be closed.

setChild
void setChild(gtk.widget.Widget child)

Sets the child widget of self.

setContentHeight
void setContentHeight(int contentHeight)

Sets the height of the dialog's contents.

setContentWidth
void setContentWidth(int contentWidth)

Sets the width of the dialog's contents.

setDefaultWidget
void setDefaultWidget(gtk.widget.Widget defaultWidget)

Sets the default widget for self.

setFocus
void setFocus(gtk.widget.Widget focus)

Sets the focus widget for self.

setFollowsContentSize
void setFollowsContentSize(bool followsContentSize)

Sets whether to size content of self automatically.

setPresentationMode
void setPresentationMode(adw.types.DialogPresentationMode presentationMode)

Sets presentation mode for self.

setTitle
void setTitle(string title)

Sets the title of self.

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

Connect to CloseAttempt signal.

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

Connect to Closed signal.