diff options
author | Bastien Nocera <hadess@hadess.net> | 2010-10-29 18:15:47 +0100 |
---|---|---|
committer | Bastien Nocera <hadess@hadess.net> | 2010-11-01 13:17:49 +0000 |
commit | b4aa3c083ab7616f321df4ade75e4d850142eff6 (patch) | |
tree | 92e62be3fce2cee2c9be6d90b55210d4068873b8 | |
parent | 0609431a5cb3803d0b98bd333f90e3c7796f86b7 (diff) | |
download | nautilus-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
-rw-r--r-- | Makefile.am | 9 | ||||
-rw-r--r-- | configure.in | 14 | ||||
-rw-r--r-- | nautilus-sendto-extension/Makefile.am | 21 | ||||
-rw-r--r-- | nautilus-sendto-extension/nautilus-nste.c | 167 | ||||
-rw-r--r-- | nautilus-sendto-extension/nautilus-nste.h | 52 | ||||
-rw-r--r-- | nautilus-sendto-extension/nautilus-sendto-module.c | 56 |
6 files changed, 318 insertions, 1 deletions
diff --git a/Makefile.am b/Makefile.am index 0ccb5181a..e333c37cf 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1,6 +1,6 @@ include $(top_srcdir)/Makefile.shared -SUBDIRS = \ +DIRS = \ eel \ libnautilus-extension \ cut-n-paste-code \ @@ -13,6 +13,13 @@ SUBDIRS = \ docs \ $(NULL) +DIST_SUBDIRS = $(DIRS) nautilus-sendto-extension + +SUBDIRS = $(DIRS) +if ENABLE_NST_EXTENSION +SUBDIRS += nautilus-sendto-extension +endif + EXTRA_DIST= \ COPYING.LIB \ COPYING.EXTENSIONS \ diff --git a/configure.in b/configure.in index 01c5dfb03..4d8febbc2 100644 --- a/configure.in +++ b/configure.in @@ -90,6 +90,18 @@ dnl ========================================================================== AC_CHECK_PROGS(PERL, perl5 perl) AC_PATH_PROG(GLIB_GENMARSHAL, glib-genmarshal) + +dnl ========================================================================== +dnl Check whether to build the nautilus-sendto extension + +AC_ARG_ENABLE(nst_extension, + AC_HELP_STRING([--disable-nst-extension], + [build without nautilus-sendto extension])) +if test "x$enable_nst_extension" != "xno"; then + AM_CONDITIONAL(ENABLE_NST_EXTENSION, true) + enable_nst_extension=yes +fi + dnl ========================================================================== AC_CHECK_HEADERS(sys/mount.h sys/vfs.h sys/param.h malloc.h) @@ -371,6 +383,7 @@ libnautilus-extension/libnautilus-extension-uninstalled.pc po/Makefile.in src/Makefile src/file-manager/Makefile +nautilus-sendto-extension/Makefile test/Makefile ]) @@ -386,6 +399,7 @@ nautilus-$VERSION: libexif support: $msg_libexif libexempi support: $msg_xmp PackageKit support: $msg_packagekit + nautilus-sendto ext: $enable_nst_extension profiling support: ${profiling_support} nautilus-extension documentation: ${enable_gtk_doc} 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; +} + |