[Xfce4-commits] [xfce/libxfce4ui] 01/01: Add a dialog to confirm closure of multiple tabs (bug #15873)
noreply at xfce.org
noreply at xfce.org
Sat Oct 12 15:49:47 CEST 2019
This is an automated email from the git hooks/post-receive script.
a l e x p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository xfce/libxfce4ui.
commit 68994e2d4e0e27ab853527d8e3e978eaab224ffa
Author: Reuben Green <reubengreen73 at gmail.com>
Date: Wed Oct 2 16:04:47 2019 +0100
Add a dialog to confirm closure of multiple tabs (bug #15873)
Adds a new function xfce_dialog_confirm_close_tabs, which runs a dialog
box to
ask the user if they wish to close the current tab, close the whole
window, or
cancel. The function has the option of adding a check box to the dialog
to let
the user choose whether they wish to see this dialog in future.
---
libxfce4ui/libxfce4ui.symbols | 1 +
libxfce4ui/xfce-dialogs.c | 83 +++++++++++++++++++++++++++++++++++++++++++
libxfce4ui/xfce-dialogs.h | 5 +++
3 files changed, 89 insertions(+)
diff --git a/libxfce4ui/libxfce4ui.symbols b/libxfce4ui/libxfce4ui.symbols
index df86081..7e4965b 100644
--- a/libxfce4ui/libxfce4ui.symbols
+++ b/libxfce4ui/libxfce4ui.symbols
@@ -63,6 +63,7 @@ xfce_dialog_show_info G_GNUC_PRINTF (3, 4)
xfce_dialog_show_warning G_GNUC_PRINTF (3, 4)
xfce_dialog_show_error G_GNUC_PRINTF (3, 4)
xfce_dialog_confirm G_GNUC_PRINTF (5, 6)
+xfce_dialog_confirm_close_tabs
xfce_message_dialog_new G_GNUC_NULL_TERMINATED G_GNUC_MALLOC
xfce_message_dialog_new_valist G_GNUC_MALLOC
xfce_message_dialog G_GNUC_NULL_TERMINATED
diff --git a/libxfce4ui/xfce-dialogs.c b/libxfce4ui/xfce-dialogs.c
index f264ef1..2ac45d9 100644
--- a/libxfce4ui/xfce-dialogs.c
+++ b/libxfce4ui/xfce-dialogs.c
@@ -533,6 +533,89 @@ xfce_dialog_confirm (GtkWindow *parent,
/**
+ * xfce_dialog_confirm_close_tabs:
+ * @parent : (allow-none): transient parent of the dialog, or %NULL.
+ * @num_tabs : the number of open tabs for display to user
+ * @show_confirm_box : whether to ask user if they want this confirmation in future
+ * @confirm_box_checked : (allow-none): state of confirmation checkbox
+ *
+ * Runs a dialog to ask the user whether they want to close the whole window,
+ * close the current tab, or cancel.
+ *
+ * If @num_tabs is non-negative, the message to the user will state that there
+ * are @num_tabs open tabs. If @num_tabs is negative, then the message to the
+ * user will state simply that there are "multiple open tabs".
+ *
+ * If @show_confirm_box is %TRUE, then a checkbox is added to the dialog to allow
+ * the user to set whether they wish to see this dialog in future. The initial
+ * state of the checkbox is determined by the value stored at @confirm_box_checked,
+ * and the value at @confirm_box_checked after returning records the state of the
+ * checkbox. If @show_confirm_box is %FALSE, @confirm_box_checked is ignored, and
+ * may be %NULL.
+ *
+ * Return value: #GTK_RESPONSE_CANCEL if cancelled, #GTK_RESPONSE_YES if the user
+ * wants to close the window, #GTK_RESPONSE_CLOSE if the user wants to close the tab,
+ * and #GTK_RESPONSE_NONE for an error.
+ */
+gint
+xfce_dialog_confirm_close_tabs (GtkWindow *parent,
+ gint num_tabs,
+ gboolean show_confirm_box,
+ gboolean *confirm_box_checked)
+{
+ GtkWidget *dialog, *checkbutton, *vbox;
+ const gchar *primary_text, *warning_icon;
+ gchar *secondary_text;
+ gint response;
+
+ g_return_val_if_fail (parent == NULL || GTK_IS_WINDOW (parent), GTK_RESPONSE_NONE);
+ g_return_val_if_fail (!show_confirm_box || confirm_box_checked != NULL, GTK_RESPONSE_NONE);
+
+ primary_text = _("Close all tabs?");
+ if (num_tabs < 0)
+ secondary_text = g_strdup (_("This window has multiple tabs open. Closing this window\n"
+ "will also close all its tabs."));
+ else
+ secondary_text = g_strdup_printf (_("This window has %d tabs open. Closing this window\n"
+ "will also close all its tabs."), num_tabs);
+
+#if GTK_CHECK_VERSION (3, 0, 0)
+ warning_icon = "dialog-warning";
+#else
+ warning_icon = GTK_STOCK_DIALOG_WARNING;
+#endif
+
+ dialog = xfce_message_dialog_new (parent, _("Warning"),
+ warning_icon,
+ primary_text,
+ secondary_text,
+ XFCE_BUTTON_TYPE_MIXED, "gtk-cancel", _("_Cancel"), GTK_RESPONSE_CANCEL,
+ XFCE_BUTTON_TYPE_MIXED, "application-exit", _("Close _Window"), GTK_RESPONSE_YES,
+ XFCE_BUTTON_TYPE_MIXED, "window-close", _("Close T_ab"), GTK_RESPONSE_CLOSE,
+ NULL);
+
+ if (show_confirm_box)
+ {
+ checkbutton = gtk_check_button_new_with_mnemonic (_("Do _not ask me again"));
+ gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (checkbutton), *confirm_box_checked);
+ vbox = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
+ gtk_box_pack_start (GTK_BOX (vbox), checkbutton, FALSE, FALSE, 5);
+ }
+
+ gtk_widget_show_all (dialog);
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
+
+ if (show_confirm_box)
+ *confirm_box_checked = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (checkbutton));
+
+ gtk_widget_destroy (dialog);
+ g_free (secondary_text);
+ return response;
+}
+
+
+
+/**
* xfce_message_dialog_new_valist:
* @parent : (allow-none): transient parent of the dialog, or %NULL.
* @title : (allow-none): title of the dialog, or %NULL.
diff --git a/libxfce4ui/xfce-dialogs.h b/libxfce4ui/xfce-dialogs.h
index 88c5234..3f2b198 100644
--- a/libxfce4ui/xfce-dialogs.h
+++ b/libxfce4ui/xfce-dialogs.h
@@ -81,6 +81,11 @@ gboolean xfce_dialog_confirm (GtkWindow *parent,
const gchar *primary_format,
...) G_GNUC_PRINTF (5, 6);
+gint xfce_dialog_confirm_close_tabs (GtkWindow *parent,
+ gint num_tabs,
+ gboolean show_confirm_box,
+ gboolean *confirm_box_checked);
+
GtkWidget *xfce_message_dialog_new_valist (GtkWindow *parent,
const gchar *title,
const gchar *icon_stock_id,
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list