MessageDialog


Object Hierarchy:

Adw.MessageDialog Adw.MessageDialog Adw.MessageDialog Gtk.Window Gtk.Window Gtk.Window->Adw.MessageDialog Gtk.Widget Gtk.Widget Gtk.Widget->Gtk.Window GLib.InitiallyUnowned GLib.InitiallyUnowned GLib.InitiallyUnowned->Gtk.Widget GLib.Object GLib.Object GLib.Object->GLib.InitiallyUnowned Gtk.Accessible Gtk.Accessible Gtk.Accessible->Adw.MessageDialog Gtk.Accessible->Gtk.Window Gtk.Accessible->Gtk.Widget Gtk.Buildable Gtk.Buildable Gtk.Buildable->Adw.MessageDialog Gtk.Buildable->Gtk.Window Gtk.Buildable->Gtk.Widget Gtk.ConstraintTarget Gtk.ConstraintTarget Gtk.ConstraintTarget->Adw.MessageDialog Gtk.ConstraintTarget->Gtk.Window Gtk.ConstraintTarget->Gtk.Widget Gtk.Native Gtk.Native Gtk.Native->Adw.MessageDialog Gtk.Native->Gtk.Window Gtk.Root Gtk.Root Gtk.Root->Adw.MessageDialog Gtk.Root->Gtk.Window Gtk.ShortcutManager Gtk.ShortcutManager Gtk.ShortcutManager->Adw.MessageDialog Gtk.ShortcutManager->Gtk.Window

Description:

[ CCode ( type_id = "adw_message_dialog_get_type ()" ) ]
[ Version ( since = "1.2" ) ]
public class MessageDialog : Window, Accessible, Buildable, ConstraintTarget, Native, Root, ShortcutManager

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:AdwMessageDialog: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, `AdwMessageDialog` is closed automatically.

An example of using a message dialog:

```c 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

`AdwMessageDialog` can also be used via the [method@MessageDialog.choose] method. This API follows the GIO async pattern, and the result can be obtained by calling [method@MessageDialog.choose_finish], for example:

```c 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

`AdwMessageDialog` 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 [method@MessageDialog.set_response_enabled] and [ method@MessageDialog.set_response_appearance] for details.

Example of an `AdwMessageDialog` UI definition:

```xml <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

`AdwMessageDialog` uses the `GTK_ACCESSIBLE_ROLE_DIALOG` role.


Namespace: Adw
Package: libadwaita-1

Content:

Properties:

Creation methods:

Methods:

Signals:

Inherited Members:

All known members inherited from class Gtk.Widget
All known members inherited from interface Gtk.Native
All known members inherited from interface Gtk.Root
All known members inherited from interface Gtk.ShortcutManager