:right-sidebar: True Toast =================================================================== .. currentmodule:: gi.repository.Adw .. class:: Toast(**properties: ~typing.Any) :no-contents-entry: Superclasses: :class:`~gi.repository.GObject.Object` A helper object for :obj:`~gi.repository.Adw.ToastOverlay`\. Toasts are meant to be passed into :obj:`~gi.repository.ToastOverlay.add_toast` as follows: .. code-block:: c :dedent: adw_toast_overlay_add_toast (overlay, adw_toast_new (_("Simple Toast"))); .. image:: https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1-latest/toast-simple.png Toasts always have a close button. They emit the :obj:`~gi.repository.Adw.Toast.signals.dismissed` signal when disappearing. :obj:`~gi.repository.Adw.Toast.props.timeout` determines how long the toast stays on screen, while :obj:`~gi.repository.Adw.Toast.props.priority` determines how it behaves if another toast is already being displayed. Toast titles use Pango markup by default, set :obj:`~gi.repository.Adw.Toast.props.use_markup` to ``FALSE`` if this is unwanted. :obj:`~gi.repository.Adw.Toast.props.custom_title` can be used to replace the title label with a custom widget. Actions -------------------------------------------------------------------------------- Toasts can have one button on them, with a label and an attached :obj:`~gi.repository.Gio.Action`\. .. code-block:: c :dedent: AdwToast *toast = adw_toast_new (_("Toast with Action")); adw_toast_set_button_label (toast, _("_Example")); adw_toast_set_action_name (toast, "win.example"); adw_toast_overlay_add_toast (overlay, toast); .. image:: https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1-latest/toast-action.png Modifying toasts -------------------------------------------------------------------------------- Toasts can be modified after they have been shown. For this, an ``AdwToast`` reference must be kept around while the toast is visible. A common use case for this is using toasts as undo prompts that stack with each other, allowing to batch undo the last deleted items: .. code-block:: c :dedent: static void toast_undo_cb (GtkWidget *sender, const char *action, GVariant *param) { // Undo the deletion } static void dismissed_cb (MyWindow *self) { self->undo_toast = NULL; // Permanently delete the items } static void delete_item (MyWindow *self, MyItem *item) { g_autofree char *title = NULL; int n_items; // Mark the item as waiting for deletion n_items = ... // The number of waiting items if (!self->undo_toast) { self->undo_toast = adw_toast_new_format (_("ā€˜%s’ deleted"), ...); adw_toast_set_priority (self->undo_toast, ADW_TOAST_PRIORITY_HIGH); adw_toast_set_button_label (self->undo_toast, _("_Undo")); adw_toast_set_action_name (self->undo_toast, "toast.undo"); g_signal_connect_swapped (self->undo_toast, "dismissed", G_CALLBACK (dismissed_cb), self); adw_toast_overlay_add_toast (self->toast_overlay, self->undo_toast); return; } title = g_strdup_printf (ngettext ("%d item deleted", "%d items deleted", n_items), n_items); adw_toast_set_title (self->undo_toast, title); // Bump the toast timeout adw_toast_overlay_add_toast (self->toast_overlay, g_object_ref (self->undo_toast)); } static void my_window_class_init (MyWindowClass *klass) { GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); gtk_widget_class_install_action (widget_class, "toast.undo", NULL, toast_undo_cb); } .. image:: https://gnome.pages.gitlab.gnome.org/libadwaita/doc/1-latest/toast-undo.png Constructors ------------ .. rst-class:: interim-class .. class:: Toast :no-index: .. classmethod:: new(title: str) -> ~gi.repository.Adw.Toast Creates a new ``AdwToast``\. The toast will use ``title`` as its title. ``title`` can be marked up with the Pango text markup language. :param title: the title to be displayed Methods ------- .. rst-class:: interim-class .. class:: Toast :no-index: .. method:: dismiss() -> None Dismisses ``self``\. Does nothing if ``self`` has already been dismissed, or hasn't been added to an :obj:`~gi.repository.Adw.ToastOverlay`\. .. method:: get_action_name() -> str | None Gets the name of the associated action. .. method:: get_action_target_value() -> ~gi.repository.GLib.Variant | None Gets the parameter for action invocations. .. method:: get_button_label() -> str | None Gets the label to show on the button. .. method:: get_custom_title() -> ~gi.repository.Gtk.Widget | None Gets the custom title widget of ``self``\. .. versionadded:: 1.2 .. method:: get_priority() -> ~gi.repository.Adw.ToastPriority Gets priority for ``self``\. .. method:: get_timeout() -> int Gets timeout for ``self``\. .. method:: get_title() -> str | None Gets the title that will be displayed on the toast. If a custom title has been set with :obj:`~gi.repository.Adw.Toast.set_custom_title` the return value will be :const:`None`. .. method:: get_use_markup() -> bool Gets whether to use Pango markup for the toast title. .. versionadded:: 1.4 .. method:: set_action_name(action_name: str | None = None) -> None Sets the name of the associated action. It will be activated when clicking the button. See :obj:`~gi.repository.Adw.Toast.props.action_target`\. :param action_name: the action name .. method:: set_action_target_value(action_target: ~gi.repository.GLib.Variant | None = None) -> None Sets the parameter for action invocations. If the ``action_target`` variant has a floating reference this function will sink it. :param action_target: the action target .. method:: set_button_label(button_label: str | None = None) -> None Sets the label to show on the button. Underlines in the button text can be used to indicate a mnemonic. If set to ``NULL``\, the button won't be shown. See :obj:`~gi.repository.Adw.Toast.props.action_name`\. :param button_label: a button label .. method:: set_custom_title(widget: ~gi.repository.Gtk.Widget | None = None) -> None Sets the custom title widget of ``self``\. It will be displayed instead of the title if set. In this case, :obj:`~gi.repository.Adw.Toast.props.title` is ignored. Setting a custom title will unset :obj:`~gi.repository.Adw.Toast.props.title`\. .. versionadded:: 1.2 :param widget: the custom title widget .. method:: set_detailed_action_name(detailed_action_name: str | None = None) -> None Sets the action name and its parameter. ``detailed_action_name`` is a string in the format accepted by :obj:`~gi.repository.Gio.Action.parse_detailed_name`\. :param detailed_action_name: the detailed action name .. method:: set_priority(priority: ~gi.repository.Adw.ToastPriority) -> None Sets priority for ``self``\. Priority controls how the toast behaves when another toast is already being displayed. If ``priority`` is :obj:`~gi.repository.Adw.ToastPriority.normal`\, the toast will be queued. If ``priority`` is :obj:`~gi.repository.Adw.ToastPriority.high`\, the toast will be displayed immediately, pushing the previous toast into the queue instead. :param priority: the priority .. method:: set_timeout(timeout: int) -> None Sets timeout for ``self``\. If ``timeout`` is 0, the toast is displayed indefinitely until manually dismissed. Toasts cannot disappear while being hovered, pressed (on touchscreen), or have keyboard focus inside them. :param timeout: the timeout .. method:: set_title(title: str) -> None Sets the title that will be displayed on the toast. The title can be marked up with the Pango text markup language. Setting a title will unset :obj:`~gi.repository.Adw.Toast.props.custom_title`\. If :obj:`~gi.repository.Adw.Toast.props.custom_title` is set, it will be used instead. :param title: a title .. method:: set_use_markup(use_markup: bool) -> None Whether to use Pango markup for the toast title. See also :obj:`~gi.repository.Pango.parse_markup`\. .. versionadded:: 1.4 :param use_markup: whether to use markup Properties ---------- .. rst-class:: interim-class .. class:: Toast :no-index: .. attribute:: props.action_name :type: str The name of the associated action. It will be activated when clicking the button. See :obj:`~gi.repository.Adw.Toast.props.action_target`\. .. attribute:: props.action_target :type: ~gi.repository.GLib.Variant The parameter for action invocations. .. attribute:: props.button_label :type: str The label to show on the button. Underlines in the button text can be used to indicate a mnemonic. If set to ``NULL``\, the button won't be shown. See :obj:`~gi.repository.Adw.Toast.props.action_name`\. .. attribute:: props.custom_title :type: ~gi.repository.Gtk.Widget The custom title widget. It will be displayed instead of the title if set. In this case, :obj:`~gi.repository.Adw.Toast.props.title` is ignored. Setting a custom title will unset :obj:`~gi.repository.Adw.Toast.props.title`\. .. versionadded:: 1.2 .. attribute:: props.priority :type: ~gi.repository.Adw.ToastPriority The priority of the toast. Priority controls how the toast behaves when another toast is already being displayed. If the priority is :obj:`~gi.repository.Adw.ToastPriority.normal`\, the toast will be queued. If the priority is :obj:`~gi.repository.Adw.ToastPriority.high`\, the toast will be displayed immediately, pushing the previous toast into the queue instead. .. attribute:: props.timeout :type: int The timeout of the toast, in seconds. If timeout is 0, the toast is displayed indefinitely until manually dismissed. Toasts cannot disappear while being hovered, pressed (on touchscreen), or have keyboard focus inside them. .. attribute:: props.title :type: str The title of the toast. The title can be marked up with the Pango text markup language. Setting a title will unset :obj:`~gi.repository.Adw.Toast.props.custom_title`\. If :obj:`~gi.repository.Adw.Toast.props.custom_title` is set, it will be used instead. .. attribute:: props.use_markup :type: bool Whether to use Pango markup for the toast title. See also :obj:`~gi.repository.Pango.parse_markup`\. .. versionadded:: 1.4 Signals ------- .. rst-class:: interim-class .. class:: Toast.signals :no-index: .. method:: button_clicked() -> None Emitted after the button has been clicked. It can be used as an alternative to setting an action. .. versionadded:: 1.2 .. method:: dismissed() -> None Emitted when the toast has been dismissed.