Extensions and putting icons in toolbar



Hi list,

I'm trying to get an icon in the toolbar from an extension
(nautilus-sendto) and to get it to behave properly. It means that it
should be sensitive when I select files and not in a list of already
defined case. All of this logic is already implemented in the
nautilus_nste_get_file_items callback.

However since I want a toolbar item, I've created a new callback :
nautilus_nste_get_toolbar_items

My first problem was that writing the sensitive attribute didn't do
anything since the attribute is only read once to create the button.
Attached is a patch that allows the NautilusMenuItem to notify the
button of the sensitivity change.

nautilus-ui-utilities.c |   18 ++++++++++++++++++
1 file changed, 18 insertions(+)


Now I want to get the list of files in order to set a sensible value for
the sensitivity. I've connected a callback to the selection_changed
signal but it seems that from an extension, there is no way to get the
list of selected files in order to accomplish that. It is not a problem
for a get_file_items type callback because it's used each time the
right-click menu is shown (afaiu).

The data is available but buried in class depending on
libnautilus-private so my question is, am I just a fool to want to
access this data and if not, what is the best course to fix this
problem ?

Thanks in advance,

-- 
Gilles Dartiguelongue <gilles dartiguelongue esiee org>
Index: libnautilus-private/nautilus-ui-utilities.c
===================================================================
--- libnautilus-private/nautilus-ui-utilities.c	(révision 13570)
+++ libnautilus-private/nautilus-ui-utilities.c	(copie de travail)
@@ -113,6 +113,19 @@
 	nautilus_menu_item_activate (NAUTILUS_MENU_ITEM (callback_data));
 }
 
+static void
+extension_action_sensitive_callback (NautilusMenuItem *item,
+                                     GParamSpec *arg1,
+                                     gpointer user_data)
+{
+	gboolean value;
+	g_object_get (G_OBJECT (item),
+	              "sensitive", &value,
+		      NULL);
+
+	gtk_action_set_sensitive (GTK_ACTION (user_data), value);
+}
+
 GtkAction *
 nautilus_action_from_menu_item (NautilusMenuItem *item)
 {
@@ -207,6 +220,11 @@
 			       g_object_ref (item), 
 			       (GClosureNotify)g_object_unref, 0);
 
+	g_signal_connect_data (item, "notify::sensitive",
+	                       G_CALLBACK (extension_action_sensitive_callback),
+			       g_object_ref (action),
+			       (GClosureNotify)g_object_unref, 0);
+
 	g_free (name);
 	g_free (label);
 	g_free (tip);

Attachment: signature.asc
Description: Ceci est une partie de message =?ISO-8859-1?Q?num=E9riquement?= =?ISO-8859-1?Q?_sign=E9e?=



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]