summaryrefslogtreecommitdiff
path: root/extensions
diff options
context:
space:
mode:
authorErnestas Kulik <ernestask@gnome.org>2018-01-31 10:27:52 +0200
committerErnestas Kulik <ernestask@gnome.org>2018-02-09 06:32:38 +0200
commit6934578ebf6e1959ad0634b73196242a30514095 (patch)
tree51b506c93cebaf0ab4ae4aef7ad1797d925aacce /extensions
parent14ee0f1cdc9c02e6fc49024786eb6ef47be5a176 (diff)
downloadnautilus-6934578ebf6e1959ad0634b73196242a30514095.tar.gz
sendto-extension: move under extensions/
Now that the image property page is an extension, both extensions can be held under the same subdirectory. This commit also makes the image property extension optional.
Diffstat (limited to 'extensions')
-rw-r--r--extensions/meson.build1
-rw-r--r--extensions/sendto/meson.build13
-rw-r--r--extensions/sendto/nautilus-nste.c192
-rw-r--r--extensions/sendto/nautilus-nste.h51
-rw-r--r--extensions/sendto/nautilus-sendto-module.c53
5 files changed, 310 insertions, 0 deletions
diff --git a/extensions/meson.build b/extensions/meson.build
index f5057cf87..41048589c 100644
--- a/extensions/meson.build
+++ b/extensions/meson.build
@@ -1 +1,2 @@
subdir('image-properties')
+subdir('sendto')
diff --git a/extensions/sendto/meson.build b/extensions/sendto/meson.build
new file mode 100644
index 000000000..fde884785
--- /dev/null
+++ b/extensions/sendto/meson.build
@@ -0,0 +1,13 @@
+libnautilus_sendto_sources = [
+ 'nautilus-nste.c',
+ 'nautilus-nste.h',
+ 'nautilus-sendto-module.c'
+]
+
+libnautilus_sendto = shared_library(
+ 'nautilus-sendto',
+ libnautilus_sendto_sources,
+ dependencies: nautilus_extension,
+ install: true,
+ install_dir: extensiondir
+)
diff --git a/extensions/sendto/nautilus-nste.c b/extensions/sendto/nautilus-nste.c
new file mode 100644
index 000000000..5c2cc0e94
--- /dev/null
+++ b/extensions/sendto/nautilus-nste.c
@@ -0,0 +1,192 @@
+/*
+ * 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, see <http://www.gnu.org/licenses/>.
+ *
+ * Author: Roberto Majadas <roberto.majadas@openshine.com>
+ *
+ */
+
+#include <config.h>
+#include <string.h>
+#include <glib/gi18n-lib.h>
+#include <nautilus-extension.h>
+#include "nautilus-nste.h"
+
+
+static GObjectClass *parent_class;
+
+static void
+sendto_callback (NautilusMenuItem *item,
+ gpointer user_data)
+{
+ GList *files, *scan;
+ gchar *uri;
+ GString *cmd;
+
+ files = g_object_get_data (G_OBJECT (item), "files");
+ 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 gboolean
+check_available_mailer ()
+{
+ GAppInfo *app_info;
+
+ app_info = g_app_info_get_default_for_uri_scheme ("mailto");
+ if (app_info)
+ {
+ g_clear_object (&app_info);
+ return TRUE;
+ }
+ else
+ {
+ return FALSE;
+ }
+}
+
+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;
+ }
+
+ if (!check_available_mailer ())
+ {
+ 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…"),
+ "document-send");
+ }
+ else
+ {
+ item = nautilus_menu_item_new ("NautilusNste::sendto",
+ _("Send to…"),
+ _("Send files by mail…"),
+ "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 (NautilusMenuProviderInterface *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/extensions/sendto/nautilus-nste.h b/extensions/sendto/nautilus-nste.h
new file mode 100644
index 000000000..1042bc9b9
--- /dev/null
+++ b/extensions/sendto/nautilus-nste.h
@@ -0,0 +1,51 @@
+/*
+ * 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, see <http://www.gnu.org/licenses/>.
+ *
+ * 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/extensions/sendto/nautilus-sendto-module.c b/extensions/sendto/nautilus-sendto-module.c
new file mode 100644
index 000000000..c21f0c877
--- /dev/null
+++ b/extensions/sendto/nautilus-sendto-module.c
@@ -0,0 +1,53 @@
+/*
+ * 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, see <http://www.gnu.org/licenses/>.
+ *
+ * Author: Roberto Majadas <roberto.majadas@openshine.com>
+ *
+ */
+
+#include <config.h>
+#include <nautilus-extension.h>
+#include <glib/gi18n-lib.h>
+#include "nautilus-nste.h"
+
+
+void
+nautilus_module_initialize (GTypeModule *module)
+{
+ nautilus_nste_register_type (module);
+
+ bindtextdomain (GETTEXT_PACKAGE, LOCALEDIR);
+ 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;
+}