AlertDialog
A dialog presenting a message or a question.
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, AdwAlertDialog
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
AdwAlertDialog
can also be used via the method@AlertDialog.choose method. This API follows the GIO async pattern, 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
AdwAlertDialog
supports adding responses in UI definitions by via the <responses>
element that may contain multiple <response>
elements, each representing 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 method@AlertDialog.set_response_enabled and method@AlertDialog.set_response_appearance for details.
Example of an AdwAlertDialog
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>
Since
1.5
Properties
Whether the body text includes Pango markup.
The ID of the close response.
The height of the dialog's contents.
The width of the dialog's contents.
The current breakpoint.
The response ID of the default response.
The default widget.
The child widget.
The focus widget.
Whether to size content automatically.
Whether the heading includes Pango markup.
Whether to prefer wide layout.
The dialog's presentation mode.
Functions
Adds @breakpoint to @self.
Adds a response with @id and @label to @self.
Finishes the method@AlertDialog.choose call and returns the response ID.
Emitted when the close button or shortcut is used, or method@Dialog.close is called while property@Dialog:can-close is set to FALSE
.
Emitted when the dialog is successfully closed.
This signal is emitted when the dialog is closed.
Closes @self.
Gets whether the body text of @self includes Pango markup.
Gets whether @self can be closed.
Gets the ID of the close response of @self.
Gets the height of the dialog's contents.
Gets the width of the dialog's contents.
Gets the current breakpoint.
Gets the ID of the default response of @self.
Gets the default widget for @self.
Gets the child widget of @self.
Gets whether to size content of @self automatically.
Gets the heading of @self.
Gets whether the heading of @self includes Pango markup.
Gets whether @self prefers wide layout.
Gets presentation mode for @self.
Gets the appearance of @response.
Gets whether @response is enabled.
Gets the label of @response.
Gets whether @self has a response with the ID @response.
Removes a response from @self.
Sets whether the body text of @self includes Pango markup.
Sets whether @self can be closed.
Sets the ID of the close response of @self.
Sets the height of the dialog's contents.
Sets the width of the dialog's contents.
Sets the ID of the default response of @self.
Sets the default widget for @self.
Sets the child widget of @self.
Sets whether to size content of @self automatically.
Sets the heading of @self.
Sets whether the heading of @self includes Pango markup.
Sets whether @self prefers wide layout.
Sets presentation mode for @self.
Sets the appearance for @response.
Sets whether @response is enabled.
Sets the label of @response to @label.