summaryrefslogtreecommitdiff
path: root/nautilus-sendto-extension
diff options
context:
space:
mode:
authorBastien Nocera <hadess@hadess.net>2010-10-29 18:15:47 +0100
committerBastien Nocera <hadess@hadess.net>2010-11-01 13:17:49 +0000
commitb4aa3c083ab7616f321df4ade75e4d850142eff6 (patch)
tree92e62be3fce2cee2c9be6d90b55210d4068873b8 /nautilus-sendto-extension
parent0609431a5cb3803d0b98bd333f90e3c7796f86b7 (diff)
downloadnautilus-b4aa3c083ab7616f321df4ade75e4d850142eff6.tar.gz
Move nautilus-sendto extension to nautilus
And add a check for the presence of nautilus-sendto to the initialisation of the object. Building the extension is optional, though on by default. https://bugzilla.gnome.org/show_bug.cgi?id=633485
Diffstat (limited to 'nautilus-sendto-extension')
-rw-r--r--nautilus-sendto-extension/Makefile.am21
-rw-r--r--nautilus-sendto-extension/nautilus-nste.c167
-rw-r--r--nautilus-sendto-extension/nautilus-nste.h52
-rw-r--r--nautilus-sendto-extension/nautilus-sendto-module.c56
4 files changed, 296 insertions, 0 deletions
diff --git a/nautilus-sendto-extension/Makefile.am b/nautilus-sendto-extension/Makefile.am
new file mode 100644
index 000000000..7f8300c82
--- /dev/null
+++ b/nautilus-sendto-extension/Makefile.am
@@ -0,0 +1,21 @@
+include $(top_srcdir)/Makefile.shared
+
+INCLUDES=\
+ -I$(top_srcdir) \
+ -I$(top_builddir) \
+ $(BASE_CFLAGS) \
+ $(WARNING_CFLAGS) \
+ $(DISABLE_DEPRECATED_CFLAGS) \
+ -DDATADIR=\""$(datadir)"\" \
+ $(NULL)
+
+nautilus_extensiondir = $(libdir)/nautilus/extensions-2.0
+nautilus_extension_LTLIBRARIES = libnautilus-sendto.la
+libnautilus_sendto_la_SOURCES = \
+ nautilus-nste.c \
+ nautilus-nste.h \
+ nautilus-sendto-module.c
+
+libnautilus_sendto_la_LDFLAGS = -module -avoid-version -no-undefined
+libnautilus_sendto_la_LIBADD = $(top_builddir)/libnautilus-extension/libnautilus-extension.la
+
diff --git a/nautilus-sendto-extension/nautilus-nste.c b/nautilus-sendto-extension/nautilus-nste.c
new file mode 100644
index 000000000..59e042bbb
--- /dev/null
+++ b/nautilus-sendto-extension/nautilus-nste.c
@@ -0,0 +1,167 @@
+/*
+ * Nautilus-sendto
+ *
+ * Copyright (C) 2004 Free Software Foundation, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Author: Roberto Majadas <roberto.majadas@openshine.com>
+ *
+ */
+
+#include <config.h>
+#include <string.h>
+#include <glib/gi18n-lib.h>
+#include <libnautilus-extension/nautilus-extension-types.h>
+#include <libnautilus-extension/nautilus-file-info.h>
+#include <libnautilus-extension/nautilus-menu-provider.h>
+#include "nautilus-nste.h"
+
+
+static GObjectClass *parent_class;
+
+static void
+sendto_callback (NautilusMenuItem *item,
+ gpointer user_data)
+{
+ GList *files, *scan;
+ NautilusFileInfo *file;
+ gchar *uri;
+ GString *cmd;
+
+ files = g_object_get_data (G_OBJECT (item), "files");
+ file = files->data;
+
+ cmd = g_string_new ("nautilus-sendto");
+
+ for (scan = files; scan; scan = scan->next) {
+ NautilusFileInfo *file = scan->data;
+
+ uri = nautilus_file_info_get_uri (file);
+ g_string_append_printf (cmd, " \"%s\"", uri);
+ g_free (uri);
+ }
+
+ g_spawn_command_line_async (cmd->str, NULL);
+
+ g_string_free (cmd, TRUE);
+}
+
+static GList *
+nautilus_nste_get_file_items (NautilusMenuProvider *provider,
+ GtkWidget *window,
+ GList *files)
+{
+ GList *items = NULL;
+ gboolean one_item;
+ NautilusMenuItem *item;
+ NautilusNste *nste;
+
+ nste = NAUTILUS_NSTE (provider);
+ if (!nste->nst_present)
+ return NULL;
+
+ if (files == NULL)
+ return NULL;
+
+ one_item = (files != NULL) && (files->next == NULL);
+ if (one_item &&
+ !nautilus_file_info_is_directory ((NautilusFileInfo *)files->data)) {
+ item = nautilus_menu_item_new ("NautilusNste::sendto",
+ _("Send To..."),
+ _("Send file by mail, instant message..."),
+ "document-send");
+ } else {
+ item = nautilus_menu_item_new ("NautilusNste::sendto",
+ _("Send To..."),
+ _("Send files by mail, instant message..."),
+ "document-send");
+ }
+ g_signal_connect (item,
+ "activate",
+ G_CALLBACK (sendto_callback),
+ provider);
+ g_object_set_data_full (G_OBJECT (item),
+ "files",
+ nautilus_file_info_list_copy (files),
+ (GDestroyNotify) nautilus_file_info_list_free);
+
+ items = g_list_append (items, item);
+
+ return items;
+}
+
+static void
+nautilus_nste_menu_provider_iface_init (NautilusMenuProviderIface *iface)
+{
+ iface->get_file_items = nautilus_nste_get_file_items;
+}
+
+static void
+nautilus_nste_instance_init (NautilusNste *nste)
+{
+ char *path;
+
+ path = g_find_program_in_path ("nautilus-sendto");
+ nste->nst_present = (path != NULL);
+ g_free (path);
+}
+
+static void
+nautilus_nste_class_init (NautilusNsteClass *class)
+{
+ parent_class = g_type_class_peek_parent (class);
+}
+
+static GType nste_type = 0;
+
+GType
+nautilus_nste_get_type (void)
+{
+ return nste_type;
+}
+
+void
+nautilus_nste_register_type (GTypeModule *module)
+{
+ static const GTypeInfo info = {
+ sizeof (NautilusNsteClass),
+ (GBaseInitFunc) NULL,
+ (GBaseFinalizeFunc) NULL,
+ (GClassInitFunc) nautilus_nste_class_init,
+ NULL,
+ NULL,
+ sizeof (NautilusNste),
+ 0,
+ (GInstanceInitFunc) nautilus_nste_instance_init,
+ };
+
+ static const GInterfaceInfo menu_provider_iface_info = {
+ (GInterfaceInitFunc) nautilus_nste_menu_provider_iface_init,
+ NULL,
+ NULL
+ };
+
+ nste_type = g_type_module_register_type (module,
+ G_TYPE_OBJECT,
+ "NautilusNste",
+ &info, 0);
+
+ g_type_module_add_interface (module,
+ nste_type,
+ NAUTILUS_TYPE_MENU_PROVIDER,
+ &menu_provider_iface_info);
+}
+
diff --git a/nautilus-sendto-extension/nautilus-nste.h b/nautilus-sendto-extension/nautilus-nste.h
new file mode 100644
index 000000000..9456560ce
--- /dev/null
+++ b/nautilus-sendto-extension/nautilus-nste.h
@@ -0,0 +1,52 @@
+/*
+ * Nautilus SendTo extension
+ *
+ * Copyright (C) 2005 Roberto Majadas
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Author: Roberto Majadas <roberto.majadas@openshine.com>
+ *
+ */
+
+#ifndef NAUTILUS_NSTE_H
+#define NAUTILUS_NSTE_H
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+#define NAUTILUS_TYPE_NSTE (nautilus_nste_get_type ())
+#define NAUTILUS_NSTE(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), NAUTILUS_TYPE_NSTE, NautilusNste))
+#define NAUTILUS_IS_NSTE(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), NAUTILUS_TYPE_NSTE))
+
+typedef struct _NautilusNste NautilusNste;
+typedef struct _NautilusNsteClass NautilusNsteClass;
+
+struct _NautilusNste {
+ GObject __parent;
+ gboolean nst_present;
+};
+
+struct _NautilusNsteClass {
+ GObjectClass __parent;
+};
+
+GType nautilus_nste_get_type (void);
+void nautilus_nste_register_type (GTypeModule *module);
+
+G_END_DECLS
+
+#endif /* NAUTILUS_NSTE_H */
diff --git a/nautilus-sendto-extension/nautilus-sendto-module.c b/nautilus-sendto-extension/nautilus-sendto-module.c
new file mode 100644
index 000000000..2faf79b9e
--- /dev/null
+++ b/nautilus-sendto-extension/nautilus-sendto-module.c
@@ -0,0 +1,56 @@
+/*
+ * Nautilus SendTo
+ *
+ * Copyright (C) 2005 Roberto Majadas
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Library General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public
+ * License along with this library; if not, write to the Free
+ * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+ *
+ * Author: Roberto Majadas <roberto.majadas@openshine.com>
+ *
+ */
+
+#include <config.h>
+#include <libnautilus-extension/nautilus-extension-types.h>
+#include <libnautilus-extension/nautilus-column-provider.h>
+#include <glib/gi18n-lib.h>
+#include "nautilus-nste.h"
+
+
+void
+nautilus_module_initialize (GTypeModule*module)
+{
+ nautilus_nste_register_type (module);
+
+ bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
+ bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
+}
+
+void
+nautilus_module_shutdown (void)
+{
+}
+
+void
+nautilus_module_list_types (const GType **types,
+ int *num_types)
+{
+ static GType type_list[1];
+
+ type_list[0] = NAUTILUS_TYPE_NSTE;
+ *types = type_list;
+
+ *num_types = 1;
+}
+