[Goodies-commits] r7178 - in xfce4-clipman-plugin/trunk: . panel-plugin

Mike Massonnet mmassonnet at xfce.org
Mon Apr 13 18:17:24 CEST 2009


Author: mmassonnet
Date: 2009-04-13 16:17:24 +0000 (Mon, 13 Apr 2009)
New Revision: 7178

Modified:
   xfce4-clipman-plugin/trunk/ChangeLog
   xfce4-clipman-plugin/trunk/panel-plugin/collector.c
   xfce4-clipman-plugin/trunk/panel-plugin/collector.h
   xfce4-clipman-plugin/trunk/panel-plugin/main.c
   xfce4-clipman-plugin/trunk/panel-plugin/menu.c
Log:
Add Inhibit option in the Clipman menu

Modified: xfce4-clipman-plugin/trunk/ChangeLog
===================================================================
--- xfce4-clipman-plugin/trunk/ChangeLog	2009-04-13 14:26:19 UTC (rev 7177)
+++ xfce4-clipman-plugin/trunk/ChangeLog	2009-04-13 16:17:24 UTC (rev 7178)
@@ -1,4 +1,21 @@
 2009-04-13	Mike Massonnet
+Add Inhibit option in the Clipman menu
+
+	- panel-plugin/collector.c, panel-plugin/collector.h:
+		Add a GObject property inhibit and ignore changes happening on
+		the clipboards in the clipboard owner changes callback if it is
+		set to TRUE.
+		Add a public function clipman_collector_inhibit().
+	- panel-plugin/menu.c:
+		Add a Enable check item in the menu. Use libexo to bind the
+		active property of the check item to the inhibit property of
+		ClipmanCollector -- with a negation as inhibit on TRUE would
+		mean disabled.
+	- panel-plugin/main.c:
+		Bind the inhibit property of ClipmanCollector to the new xfconf
+		property inhibit.
+
+2009-04-13	Mike Massonnet
 Set ownership on CLIPBOARD_MANAGER
 
 	- panel-plugin/main.c:

Modified: xfce4-clipman-plugin/trunk/panel-plugin/collector.c
===================================================================
--- xfce4-clipman-plugin/trunk/panel-plugin/collector.c	2009-04-13 14:26:19 UTC (rev 7177)
+++ xfce4-clipman-plugin/trunk/panel-plugin/collector.c	2009-04-13 16:17:24 UTC (rev 7178)
@@ -48,12 +48,14 @@
   gboolean              internal_change;
   gboolean              add_primary_clipboard;
   gboolean              enable_actions;
+  gboolean              inhibit;
 };
 
 enum
 {
   ADD_PRIMARY_CLIPBOARD = 1,
   ENABLE_ACTIONS,
+  INHIBIT,
 };
 
 static void             clipman_collector_class_init        (ClipmanCollectorClass *klass);
@@ -93,6 +95,10 @@
   GdkPixbuf *image;
   GdkAtom text_plain, text_html;
 
+  /* Skip if the collector is inhibit */
+  if (collector->priv->inhibit == TRUE)
+    return;
+
   /* Take only care of new clipboard content */
   if (event->reason != GDK_OWNER_CHANGE_NEW_OWNER)
     return;
@@ -213,6 +219,21 @@
   collector->priv->internal_change = TRUE;
 }
 
+/**
+ * clipman_collector_inhibit:
+ * @collector: a #ClipmanCollector
+ * @inhibit: TRUE if the collector should be deactivated
+ *
+ * Set to TRUE to disable the collector, FALSE to let it read the clipboard
+ * contents.
+ */
+void
+clipman_collector_inhibit (ClipmanCollector *collector,
+                           gboolean inhibit)
+{
+  g_object_set (collector, "inhibit", inhibit, NULL);
+}
+
 ClipmanCollector *
 clipman_collector_get ()
 {
@@ -261,6 +282,13 @@
                                                          "Set to TRUE to enable actions (match the clipboard texts against regex's)",
                                                          DEFAULT_ENABLE_ACTIONS,
                                                          G_PARAM_CONSTRUCT|G_PARAM_READWRITE));
+
+  g_object_class_install_property (object_class, INHIBIT,
+                                   g_param_spec_boolean ("inhibit",
+                                                         "Inhibit",
+                                                         "Set to TRUE to disable the collector",
+                                                         FALSE,
+                                                         G_PARAM_CONSTRUCT|G_PARAM_READWRITE));
 }
 
 static void
@@ -319,6 +347,10 @@
       priv->enable_actions = g_value_get_boolean (value);
       break;
 
+    case INHIBIT:
+      priv->inhibit = g_value_get_boolean (value);
+      break;
+
     default:
       break;
     }
@@ -342,6 +374,10 @@
       g_value_set_boolean (value, priv->enable_actions);
       break;
 
+    case INHIBIT:
+      g_value_set_boolean (value, priv->inhibit);
+      break;
+
     default:
       break;
     }

Modified: xfce4-clipman-plugin/trunk/panel-plugin/collector.h
===================================================================
--- xfce4-clipman-plugin/trunk/panel-plugin/collector.h	2009-04-13 14:26:19 UTC (rev 7177)
+++ xfce4-clipman-plugin/trunk/panel-plugin/collector.h	2009-04-13 16:17:24 UTC (rev 7178)
@@ -52,6 +52,8 @@
 
 ClipmanCollector *      clipman_collector_get                   ();
 void                    clipman_collector_set_is_restoring      (ClipmanCollector *collector);
+void                    clipman_collector_inhibit               (ClipmanCollector *collector,
+                                                                 gboolean inhibit);
 
 #endif /* !__CLIPMAN_COLLECTOR_H__ */
 

Modified: xfce4-clipman-plugin/trunk/panel-plugin/main.c
===================================================================
--- xfce4-clipman-plugin/trunk/panel-plugin/main.c	2009-04-13 14:26:19 UTC (rev 7177)
+++ xfce4-clipman-plugin/trunk/panel-plugin/main.c	2009-04-13 16:17:24 UTC (rev 7178)
@@ -237,6 +237,8 @@
                           G_TYPE_BOOLEAN, plugin->collector, "add-primary-clipboard");
   xfconf_g_property_bind (plugin->channel, "/settings/enable-actions",
                           G_TYPE_BOOLEAN, plugin->collector, "enable-actions");
+  xfconf_g_property_bind (plugin->channel, "/inhibit",
+                          G_TYPE_BOOLEAN, plugin->collector, "inhibit");
 
   /* ClipmanMenu */
   plugin->menu = clipman_menu_new ();

Modified: xfce4-clipman-plugin/trunk/panel-plugin/menu.c
===================================================================
--- xfce4-clipman-plugin/trunk/panel-plugin/menu.c	2009-04-13 14:26:19 UTC (rev 7177)
+++ xfce4-clipman-plugin/trunk/panel-plugin/menu.c	2009-04-13 16:17:24 UTC (rev 7178)
@@ -20,6 +20,7 @@
 #include <config.h>
 #endif
 
+#include <exo/exo.h>
 #include <gtk/gtk.h>
 #include <libxfcegui4/libxfcegui4.h>
 #include <libxfce4util/libxfce4util.h>
@@ -40,6 +41,7 @@
 struct _ClipmanMenuPrivate
 {
   GtkWidget            *mi_clear_history;
+  GtkWidget            *mi_inhibit;
   ClipmanHistory       *history;
   GSList               *list;
 };
@@ -59,6 +61,7 @@
  */
 
 static void             cb_set_clipboard                (const ClipmanHistoryItem *item);
+static void             cb_inhibit                      (ClipmanMenu *menu);
 static void             cb_clear_history                (ClipmanMenu *menu);
 
 
@@ -105,6 +108,14 @@
 }
 
 static void
+cb_inhibit (ClipmanMenu *menu)
+{
+  ClipmanCollector *collector = clipman_collector_get ();
+  clipman_collector_inhibit (collector, !(GTK_CHECK_MENU_ITEM (menu->priv->mi_inhibit)->active));
+  g_object_unref (collector);
+}
+
+static void
 cb_clear_history (ClipmanMenu *menu)
 {
   GtkClipboard *clipboard;
@@ -234,6 +245,7 @@
 clipman_menu_init (ClipmanMenu *menu)
 {
   GtkWidget *mi;
+  ClipmanCollector *collector;
 
   menu->priv = GET_PRIVATE (menu);
 
@@ -247,10 +259,16 @@
   mi = gtk_separator_menu_item_new ();
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
 
+  menu->priv->mi_inhibit = mi = gtk_check_menu_item_new_with_mnemonic (_("_Enable"));
+  collector = clipman_collector_get ();
+  exo_binding_new_with_negation (G_OBJECT (collector), "inhibit", G_OBJECT (mi), "active");
+  g_object_unref (collector);
+  gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
+  g_signal_connect_swapped (mi, "toggled", G_CALLBACK (cb_inhibit), menu);
+
   menu->priv->mi_clear_history = mi = gtk_image_menu_item_new_from_stock (GTK_STOCK_CLEAR, NULL);
   gtk_menu_shell_append (GTK_MENU_SHELL (menu), mi);
-  g_signal_connect_swapped (mi, "activate",
-                            G_CALLBACK (cb_clear_history), menu);
+  g_signal_connect_swapped (mi, "activate", G_CALLBACK (cb_clear_history), menu);
 
   /* Show all the items */
   gtk_widget_show_all (GTK_WIDGET (menu));




More information about the Goodies-commits mailing list