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 GList * deja_dup_nautilus_extension_get_file_items(NautilusMenuProvider *provider, GtkWidget *window, GList *files) { NautilusMenuItem *item; guint length; GList *file_copies; gchar *path; if (files == NULL) return NULL; path = g_find_program_in_path("deja-dup"); if (!path) return NULL; g_free(path); gboolean is_one_included = FALSE; GList *p; for (p = files; p; p = p->next) { GFile *gfile = nautilus_file_info_get_location((NautilusFileInfo *)p->data); if (is_dir_included(gfile)) is_one_included = TRUE; } if (!is_one_included) return NULL; length = g_list_length(files); item = nautilus_menu_item_new("DejaDupNautilusExtension::restore_item", dngettext(GETTEXT_PACKAGE, "Revert to Previous Version…", "Revert to Previous Versions…", length), dngettext(GETTEXT_PACKAGE, "Restore file from backup", "Restore files from backup", length), "deja-dup"); g_signal_connect(item, "activate", G_CALLBACK(restore_files_callback), NULL); g_object_set_data_full (G_OBJECT(item), "deja_dup_extension_files", nautilus_file_info_list_copy(files), (GDestroyNotify)nautilus_file_info_list_free); return g_list_append(NULL, item); }
static GList * nautilus_fr_get_file_items (NautilusMenuProvider *provider, GtkWidget *window, GList *files) { GList *items = NULL; GList *scan; gboolean can_write = TRUE; gboolean one_item; gboolean one_archive = FALSE; gboolean one_derived_archive = FALSE; gboolean one_compressed_archive = FALSE; gboolean all_archives = TRUE; gboolean all_archives_derived = TRUE; gboolean all_archives_compressed = TRUE; if (files == NULL) return NULL; if (unsupported_scheme ((NautilusFileInfo *) files->data)) return NULL; for (scan = files; scan; scan = scan->next) { NautilusFileInfo *file = scan->data; FileMimeInfo file_mime_info; file_mime_info = get_file_mime_info (file); if (all_archives && ! file_mime_info.is_archive) all_archives = FALSE; if (all_archives_compressed && file_mime_info.is_archive && ! file_mime_info.is_compressed_archive) all_archives_compressed = FALSE; if (all_archives_derived && file_mime_info.is_archive && ! file_mime_info.is_derived_archive) all_archives_derived = FALSE; if (can_write) { NautilusFileInfo *parent; parent = nautilus_file_info_get_parent_info (file); can_write = nautilus_file_info_can_write (parent); } } /**/ one_item = (files != NULL) && (files->next == NULL); one_archive = one_item && all_archives; one_derived_archive = one_archive && all_archives_derived; one_compressed_archive = one_archive && all_archives_compressed; if (all_archives && can_write) { NautilusMenuItem *item; item = nautilus_menu_item_new ("NautilusFr::extract_here", _("Extract Here"), /* Translators: the current position is the current folder */ _("Extract the selected archive to the current position"), "drive-harddisk"); g_signal_connect (item, "activate", G_CALLBACK (extract_here_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); } else if (all_archives && ! can_write) { NautilusMenuItem *item; item = nautilus_menu_item_new ("NautilusFr::extract_to", _("Extract To..."), _("Extract the selected archive"), "drive-harddisk"); g_signal_connect (item, "activate", G_CALLBACK (extract_to_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); } if (! one_compressed_archive || one_derived_archive) { NautilusMenuItem *item; item = nautilus_menu_item_new ("NautilusFr::add", _("Compress..."), _("Create a compressed archive with the selected objects"), "gnome-mime-application-x-archive"); g_signal_connect (item, "activate", G_CALLBACK (add_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 GList * nautilus_easytag_get_file_items (NautilusMenuProvider *provider, GtkWidget *window, GList *files) { GList *items = NULL; GList *l; gboolean one_item; gboolean one_directory = TRUE; gboolean all_files = TRUE; if (files == NULL) { return NULL; } if (unsupported_scheme ((NautilusFileInfo *)files->data)) { return NULL; } for (l = files; l != NULL; l = g_list_next (l)) { FileMimeInfo file_mime_info; NautilusFileInfo *file = l->data; file_mime_info = get_file_mime_info (file); if (all_files && !file_mime_info.is_file) { all_files = FALSE; } if (one_directory && !file_mime_info.is_directory) { one_directory = FALSE; } } one_item = (files != NULL) && (files->next == NULL); if (one_directory && one_item) { NautilusMenuItem *item; item = nautilus_menu_item_new ("NautilusEasytag::open_directory", _("Open in EasyTAG"), _("Open the selected directory in EasyTAG"), "easytag"); g_signal_connect (item, "activate", G_CALLBACK (on_open_in_easytag), provider); g_object_set_data (G_OBJECT (item), "dir", files->data); items = g_list_append (items, item); } else if (all_files) { NautilusMenuItem *item; item = nautilus_menu_item_new ("NautilusEasytag::open_files", _("Open with EasyTAG"), _("Open the selected files in EasyTAG"), "easytag"); g_signal_connect (item, "activate", G_CALLBACK (on_open_with_easytag), 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; }