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