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>
class AlertDialog : Dialog {}

Constructors

this
this(void* ptr, Flag!"Take" take)
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.

self
AlertDialog self()

Returns this, for use in with statements.

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.

Properties

bodyUseMarkup
bool bodyUseMarkup [@property getter]

Get bodyUseMarkup property.

bodyUseMarkup
bool bodyUseMarkup [@property setter]

Set bodyUseMarkup property.

body_
string body_ [@property getter]

Get body_ property.

body_
string body_ [@property setter]

Set body_ property.

closeResponse
string closeResponse [@property getter]

Get closeResponse property.

closeResponse
string closeResponse [@property setter]

Set closeResponse property.

defaultResponse
string defaultResponse [@property getter]

Get defaultResponse property.

defaultResponse
string defaultResponse [@property setter]

Set defaultResponse property.

extraChild
gtk.widget.Widget extraChild [@property getter]

Get extraChild property.

extraChild
gtk.widget.Widget extraChild [@property setter]

Set extraChild property.

gType
GType gType [@property getter]
heading
string heading [@property getter]

Get heading property.

heading
string heading [@property setter]

Set heading property.

headingUseMarkup
bool headingUseMarkup [@property getter]

Get headingUseMarkup property.

headingUseMarkup
bool headingUseMarkup [@property setter]

Set headingUseMarkup property.

Static functions

getGType
GType getGType()

Inherited Members

From Dialog

getGType
GType getGType()
gType
GType gType [@property getter]
self
Dialog self()

Returns this, for use in with statements.

canClose
bool canClose [@property getter]

Get canClose property.

canClose
bool canClose [@property setter]

Set canClose property.

child
gtk.widget.Widget child [@property getter]

Get child property.

child
gtk.widget.Widget child [@property setter]

Set child property.

contentHeight
int contentHeight [@property getter]

Get contentHeight property.

contentHeight
int contentHeight [@property setter]

Set contentHeight property.

contentWidth
int contentWidth [@property getter]

Get contentWidth property.

contentWidth
int contentWidth [@property setter]

Set contentWidth property.

currentBreakpoint
adw.breakpoint.Breakpoint currentBreakpoint [@property getter]

Get currentBreakpoint property.

defaultWidget
gtk.widget.Widget defaultWidget [@property getter]

Get defaultWidget property.

defaultWidget
gtk.widget.Widget defaultWidget [@property setter]

Set defaultWidget property.

focusWidget
gtk.widget.Widget focusWidget [@property getter]

Get focusWidget property.

focusWidget
gtk.widget.Widget focusWidget [@property setter]

Set focusWidget property.

followsContentSize
bool followsContentSize [@property getter]

Get followsContentSize property.

followsContentSize
bool followsContentSize [@property setter]

Set followsContentSize property.

presentationMode
adw.types.DialogPresentationMode presentationMode [@property getter]

Get presentationMode property.

presentationMode
adw.types.DialogPresentationMode presentationMode [@property setter]

Set presentationMode property.

title
string title [@property getter]

Get title property.

title
string title [@property setter]

Set title property.

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.