From 57be6b74cff7b7c6d51b9b893032e9bbbca4554f Mon Sep 17 00:00:00 2001
From: [Your Name] <[Your Email]>
Date: [Date]
Subject: [PATCH] Revert "sendto-extension: Remove extension"
This reverts commit 57be6b74cff7b7c6d51b9b893032e9bbbca4554f.
---
extensions/meson.build | 1 +
extensions/sendto/meson.build | 13 +++++++
extensions/sendto/nautilus-nste.c | 159 +++++++++++++++++++++++++++++++++++++++++++++++++++
extensions/sendto/nautilus-nste.h | 35 ++++++++++++++
extensions/sendto/nautilus-sendto-module.c | 53 +++++++++++++++++++
5 files changed, 261 insertions(+)
create mode 100644 extensions/sendto/meson.build
create mode 100644 extensions/sendto/nautilus-nste.c
create mode 100644 extensions/sendto/nautilus-nste.h
create mode 100644 extensions/sendto/nautilus-sendto-module.c
diff --git a/extensions/meson.build b/extensions/meson.build
index a10349cac4..5c6f64ceff 100644
--- a/extensions/meson.build
+++ b/extensions/meson.build
@@ -1,2 +1,3 @@
subdir('image-properties')
subdir('audio-video-properties')
+subdir('sendto')
diff --git a/extensions/sendto/meson.build b/extensions/sendto/meson.build
new file mode 100644
index 0000000000..3b73bcdd8c
--- /dev/null
+++ b/extensions/sendto/meson.build
@@ -0,0 +1,25 @@
+libnautilus_sendto_sources = [
+ 'nautilus-nste.c',
+ 'nautilus-nste.h',
+ 'nautilus-sendto-module.c'
+]
+
+include_dirs = [
+ '/usr/include/gtk-4.0',
+ '/usr/include/cairo',
+ '/usr/include/pango-1.0',
+ '/usr/include/harfbuzz',
+ '/usr/include/gdk-pixbuf-2.0',
+ '/usr/include/graphene-1.0',
+ '/usr/lib64/graphene-1.0/include'
+]
+all_include_dirs = include_directories(include_dirs)
+
+libnautilus_sendto = shared_module(
+ 'nautilus-sendto',
+ libnautilus_sendto_sources,
+ dependencies: nautilus_extension,
+ include_directories: all_include_dirs,
+ install: true,
+ install_dir: extensiondir
+)
diff --git a/extensions/sendto/nautilus-nste.c b/extensions/sendto/nautilus-nste.c
new file mode 100644
index 0000000000..1e9280036a
--- /dev/null
+++ b/extensions/sendto/nautilus-nste.c
@@ -0,0 +1,159 @@
+/*
+ * 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 .
+ *
+ * Author: Roberto Majadas
+ *
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include "nautilus-nste.h"
+
+struct _NautilusNste
+{
+ GObject parent_instance;
+
+ gboolean nst_present;
+};
+
+static void menu_provider_iface_init (NautilusMenuProviderInterface *iface);
+
+G_DEFINE_DYNAMIC_TYPE_EXTENDED (NautilusNste, nautilus_nste, G_TYPE_OBJECT, 0,
+ G_IMPLEMENT_INTERFACE_DYNAMIC (NAUTILUS_TYPE_MENU_PROVIDER,
+ menu_provider_iface_init))
+
+static void
+sendto_callback (NautilusMenuItem *item,
+ gpointer user_data)
+{
+ GList *files;
+ g_autoptr (GString) command = NULL;
+
+ files = g_object_get_data (G_OBJECT (item), "files");
+ command = g_string_new ("nautilus-sendto");
+
+ for (GList *l = files; l != NULL; l = l->next)
+ {
+ g_autofree char *uri = NULL;
+
+ uri = nautilus_file_info_get_uri (l->data);
+
+ g_string_append_printf (command, " \"%s\"", uri);
+ }
+
+ g_spawn_command_line_async (command->str, NULL);
+}
+
+static gboolean
+check_available_mailer (void)
+{
+ g_autoptr (GAppInfo) app_info = NULL;
+
+ app_info = g_app_info_get_default_for_uri_scheme ("mailto");
+
+ return app_info != NULL;
+}
+
+static GList*
+get_file_items (NautilusMenuProvider *provider,
+ 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
+menu_provider_iface_init (NautilusMenuProviderInterface *iface)
+{
+ iface->get_file_items = get_file_items;
+}
+
+static void
+nautilus_nste_init (NautilusNste *nste)
+{
+ g_autofree char *path = NULL;
+
+ path = g_find_program_in_path ("nautilus-sendto");
+ nste->nst_present = (path != NULL);
+}
+
+static void
+nautilus_nste_class_init (NautilusNsteClass *klass)
+{
+}
+
+static void
+nautilus_nste_class_finalize (NautilusNsteClass *klass)
+{
+}
+
+void
+nautilus_nste_load (GTypeModule *module)
+{
+ nautilus_nste_register_type(module);
+}
diff --git a/extensions/sendto/nautilus-nste.h b/extensions/sendto/nautilus-nste.h
new file mode 100644
index 0000000000..46f71040b7
--- /dev/null
+++ b/extensions/sendto/nautilus-nste.h
@@ -0,0 +1,35 @@
+/*
+ * 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 .
+ *
+ * Author: Roberto Majadas
+ *
+ */
+
+#ifndef NAUTILUS_NSTE_H
+#define NAUTILUS_NSTE_H
+#endif /* NAUTILUS_NSTE_H */
+
+#include
+#include
+
+G_BEGIN_DECLS
+
+#define NAUTILUS_TYPE_NSTE (nautilus_nste_get_type ())
+G_DECLARE_FINAL_TYPE (NautilusNste, nautilus_nste, NAUTILUS, NSTE, GObject)
+
+void nautilus_nste_load (GTypeModule *module);
+
+G_END_DECLS
diff --git a/extensions/sendto/nautilus-sendto-module.c b/extensions/sendto/nautilus-sendto-module.c
new file mode 100644
index 0000000..99ad0e5
--- /dev/null
+++ b/extensions/sendto/nautilus-sendto-module.c
@@ -0,0 +1,46 @@
+/*
+ * 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 .
+ *
+ * Author: Roberto Majadas
+ *
+ */
+
+#include
+#include "nautilus-nste.h"
+
+static GType type_list[1];
+
+void
+nautilus_module_initialize (GTypeModule *module)
+{
+ nautilus_nste_load (module);
+ type_list[0] = NAUTILUS_TYPE_NSTE;
+}
+
+void
+nautilus_module_list_types (const GType **types, gint *n_types)
+{
+ *types = type_list;
+ *n_types = G_N_ELEMENTS(type_list);
+}
+
+void
+nautilus_module_shutdown (void)
+{
+ // Implementation for shutdown if needed
+}
--
GitLab