[Xfce4-commits] <xfce4-clipman-plugin:master> Bug #8523: Added a checkbox "Don't ask again" to clear the history
Mike Massonnet
noreply at xfce.org
Tue Mar 6 00:04:03 CET 2012
Updating branch refs/heads/master
to 1a5a2bcdc82912a58e887187872403cfe91412c7 (commit)
from ac76217136acd1baf82ae241460517241bc26786 (commit)
commit 1a5a2bcdc82912a58e887187872403cfe91412c7
Author: Mike Massonnet <mmassonnet at xfce.org>
Date: Tue Mar 6 00:02:26 2012 +0100
Bug #8523: Added a checkbox "Don't ask again" to clear the history
panel-plugin/menu.c | 47 +++++++++++++++++++++++++++++++++++++++++++++--
panel-plugin/plugin.c | 2 ++
2 files changed, 47 insertions(+), 2 deletions(-)
diff --git a/panel-plugin/menu.c b/panel-plugin/menu.c
index 43c5885..4c50625 100644
--- a/panel-plugin/menu.c
+++ b/panel-plugin/menu.c
@@ -20,6 +20,7 @@
#include <config.h>
#endif
+#include <exo/exo.h>
#include <gtk/gtk.h>
#include <libxfce4ui/libxfce4ui.h>
#include <libxfce4util/libxfce4util.h>
@@ -49,6 +50,7 @@ struct _ClipmanMenuPrivate
GSList *list;
gboolean reverse_order;
guint paste_on_activate;
+ gboolean never_confirm_history_clear;
};
enum
@@ -56,6 +58,7 @@ enum
REVERSE_ORDER = 1,
INHIBIT_MENU_ITEM,
PASTE_ON_ACTIVATE,
+ NEVER_CONFIRM_HISTORY_CLEAR,
};
static void clipman_menu_finalize (GObject *object);
@@ -184,10 +187,35 @@ cb_set_clipboard (GtkMenuItem *mi, const ClipmanHistoryItem *item)
static void
cb_clear_history (ClipmanMenu *menu)
{
+ gint res;
+ GtkWidget *dialog;
GtkClipboard *clipboard;
- if (!xfce_dialog_confirm (NULL, GTK_STOCK_YES, NULL, _("Are you sure you want to clear the history?"), NULL))
- return;
+ if (!menu->priv->never_confirm_history_clear)
+ {
+ dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_MODAL,
+ GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO,
+ _("Are you sure you want to clear the history?"));
+
+
+ {
+ GtkWidget *message_area = gtk_message_dialog_get_message_area (GTK_MESSAGE_DIALOG (dialog));
+ GtkWidget *checkbox = gtk_check_button_new_with_label (_("Don't ask again"));
+ exo_binding_new (G_OBJECT (checkbox), "active", G_OBJECT (menu), "never-confirm-history-clear");
+ gtk_widget_show (checkbox);
+ gtk_container_add (GTK_CONTAINER (message_area), checkbox);
+
+ res = gtk_dialog_run (GTK_DIALOG (dialog));
+ gtk_widget_destroy (dialog);
+
+ if (res != GTK_RESPONSE_YES)
+ {
+ g_object_set (menu, "never-confirm-history-clear", FALSE, NULL);
+ return;
+ }
+ }
+
+ }
clipman_history_clear (menu->priv->history);
@@ -338,6 +366,13 @@ clipman_menu_class_init (ClipmanMenuClass *klass)
"Paste the content of a menu item when it is activated",
0, 2, 0,
G_PARAM_CONSTRUCT|G_PARAM_READWRITE));
+
+ g_object_class_install_property (object_class, NEVER_CONFIRM_HISTORY_CLEAR,
+ g_param_spec_boolean ("never-confirm-history-clear",
+ "NeverConfirmHistoryClear",
+ "Set to FALSE to clear the history list with confirmation",
+ FALSE,
+ G_PARAM_CONSTRUCT|G_PARAM_READWRITE));
}
static void
@@ -399,6 +434,10 @@ clipman_menu_set_property (GObject *object,
priv->paste_on_activate = g_value_get_uint (value);
break;
+ case NEVER_CONFIRM_HISTORY_CLEAR:
+ priv->never_confirm_history_clear = g_value_get_boolean (value);
+ break;
+
default:
break;
}
@@ -426,6 +465,10 @@ clipman_menu_get_property (GObject *object,
g_value_set_uint (value, priv->paste_on_activate);
break;
+ case NEVER_CONFIRM_HISTORY_CLEAR:
+ g_value_set_boolean (value, priv->never_confirm_history_clear);
+ break;
+
default:
break;
}
diff --git a/panel-plugin/plugin.c b/panel-plugin/plugin.c
index f19d04e..adeb054 100644
--- a/panel-plugin/plugin.c
+++ b/panel-plugin/plugin.c
@@ -119,6 +119,8 @@ plugin_register (void)
G_TYPE_BOOLEAN, plugin->menu, "inhibit-menu-item");
xfconf_g_property_bind (plugin->channel, "/tweaks/paste-on-activate",
G_TYPE_UINT, plugin->menu, "paste-on-activate");
+ xfconf_g_property_bind (plugin->channel, "/tweaks/never-confirm-history-clear",
+ G_TYPE_BOOLEAN, plugin->menu, "never-confirm-history-clear");
/* Load the data */
plugin_load (plugin);
More information about the Xfce4-commits
mailing list