Blame SOURCES/0001-general-remove-gnome-autoar.patch

864ee8
From 889ca37501afaca5945f41fcd67bd9f0a4b6c19d Mon Sep 17 00:00:00 2001
864ee8
From: Carlos Soriano <csoriano@gnome.org>
864ee8
Date: Fri, 3 Mar 2017 19:52:06 +0100
864ee8
Subject: [PATCH] general: remove gnome-autoar
864ee8
864ee8
---
864ee8
 configure.ac                              |   2 -
864ee8
 po/POTFILES.in                            |   2 -
864ee8
 src/Makefile.am                           |   2 -
864ee8
 src/nautilus-compress-dialog-controller.c | 339 --------------
864ee8
 src/nautilus-compress-dialog-controller.h |  36 --
864ee8
 src/nautilus-file-operations.c            | 753 ------------------------------
864ee8
 src/nautilus-file-operations.h            |  16 -
864ee8
 src/nautilus-file-undo-operations.c       | 319 -------------
864ee8
 src/nautilus-file-undo-operations.h       |  58 ---
864ee8
 src/nautilus-file.c                       |  38 +-
864ee8
 src/nautilus-files-view.c                 | 616 +-----------------------
864ee8
 src/nautilus-mime-actions.c               |  23 +-
864ee8
 12 files changed, 36 insertions(+), 2168 deletions(-)
864ee8
 delete mode 100644 src/nautilus-compress-dialog-controller.c
864ee8
 delete mode 100644 src/nautilus-compress-dialog-controller.h
864ee8
864ee8
diff --git a/configure.ac b/configure.ac
864ee8
index 83c7c7d84..acd095bb9 100644
864ee8
--- a/configure.ac
864ee8
+++ b/configure.ac
864ee8
@@ -11,7 +11,6 @@ m4_define(exif_minver,                 0.6.20)
864ee8
 m4_define(exempi_minver,               2.1.0)
864ee8
 m4_define(notify_minver,               0.7.0)
864ee8
 m4_define(schemas_minver,              3.8.0)
864ee8
-m4_define(autoar_minver,               0.1)
864ee8
 
864ee8
 dnl 1. If the library code has changed at all since last release, then increment revision.
864ee8
 dnl 2. If any interfaces have been added, then increment current and set revision to 0.
864ee8
@@ -269,7 +268,6 @@ dnl base libs
864ee8
 PKG_CHECK_MODULES(BASE, [
864ee8
 	gtk+-3.0 >= gtk_minver
864ee8
 	glib-2.0 >= glib_minver
864ee8
-        gnome-autoar-0 >= autoar_minver
864ee8
 ])
864ee8
 
864ee8
 dnl common libs (eel, nautilus)
864ee8
diff --git a/po/POTFILES.in b/po/POTFILES.in
864ee8
index 8647562f0..6530f6ed4 100644
864ee8
--- a/po/POTFILES.in
864ee8
+++ b/po/POTFILES.in
864ee8
@@ -32,7 +32,6 @@ src/nautilus-canvas-view-container.c
864ee8
 src/nautilus-clipboard.c
864ee8
 src/nautilus-column-chooser.c
864ee8
 src/nautilus-column-utilities.c
864ee8
-src/nautilus-compress-dialog-controller.c
864ee8
 src/nautilus-desktop-item-properties.c
864ee8
 src/nautilus-directory.c
864ee8
 src/nautilus-dnd.c
864ee8
@@ -81,7 +80,6 @@ src/nautilus-x-content-bar.c
864ee8
 src/resources/gtk/help-overlay.ui
864ee8
 src/resources/gtk/menus.ui
864ee8
 src/resources/ui/nautilus-batch-rename-dialog.ui
864ee8
-src/resources/ui/nautilus-compress-dialog.ui
864ee8
 src/resources/ui/nautilus-create-folder-dialog.ui
864ee8
 src/resources/ui/nautilus-files-view-context-menus.ui
864ee8
 src/resources/ui/nautilus-folder-is-empty.ui
864ee8
diff --git a/src/Makefile.am b/src/Makefile.am
864ee8
index 562af23f8..2ece291bd 100644
864ee8
--- a/src/Makefile.am
864ee8
+++ b/src/Makefile.am
864ee8
@@ -257,8 +257,6 @@ nautilus_no_main_sources = \
864ee8
 	nautilus-rename-file-popover-controller.h \
864ee8
 	nautilus-new-folder-dialog-controller.c \
864ee8
 	nautilus-new-folder-dialog-controller.h \
864ee8
-	nautilus-compress-dialog-controller.c \
864ee8
-	nautilus-compress-dialog-controller.h \
864ee8
 	nautilus-operations-ui-manager.c \
864ee8
 	nautilus-operations-ui-manager.h \
864ee8
 	nautilus-file-operations.c \
864ee8
diff --git a/src/nautilus-compress-dialog-controller.c b/src/nautilus-compress-dialog-controller.c
864ee8
deleted file mode 100644
864ee8
index 3937181a8..000000000
864ee8
--- a/src/nautilus-compress-dialog-controller.c
864ee8
+++ /dev/null
864ee8
@@ -1,339 +0,0 @@
864ee8
-/* nautilus-compress-dialog-controller.h
864ee8
- *
864ee8
- * Copyright (C) 2016 the Nautilus developers
864ee8
- *
864ee8
- * This program is free software; you can redistribute it and/or
864ee8
- * modify it under the terms of the GNU General Public License as
864ee8
- * published by the Free Software Foundation; either version 2 of the
864ee8
- * License, or (at your option) any later version.
864ee8
- *
864ee8
- * This program is distributed in the hope that it will be useful,
864ee8
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
864ee8
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
864ee8
- * General Public License for more details.
864ee8
- *
864ee8
- * You should have received a copy of the GNU General Public
864ee8
- * License along with this program; if not, see <http://www.gnu.org/licenses/>.
864ee8
- *
864ee8
- */
864ee8
-
864ee8
-#include <glib/gi18n.h>
864ee8
-#include <gnome-autoar/gnome-autoar.h>
864ee8
-
864ee8
-#include <eel/eel-vfs-extensions.h>
864ee8
-
864ee8
-#include "nautilus-compress-dialog-controller.h"
864ee8
-
864ee8
-#include "nautilus-global-preferences.h"
864ee8
-
864ee8
-struct _NautilusCompressDialogController
864ee8
-{
864ee8
-    NautilusFileNameWidgetController parent_instance;
864ee8
-
864ee8
-    GtkWidget *compress_dialog;
864ee8
-    GtkWidget *description_stack;
864ee8
-    GtkWidget *name_entry;
864ee8
-    GtkWidget *zip_radio_button;
864ee8
-    GtkWidget *tar_xz_radio_button;
864ee8
-    GtkWidget *seven_zip_radio_button;
864ee8
-
864ee8
-    const char *extension;
864ee8
-
864ee8
-    gint response_handler_id;
864ee8
-};
864ee8
-
864ee8
-G_DEFINE_TYPE (NautilusCompressDialogController, nautilus_compress_dialog_controller, NAUTILUS_TYPE_FILE_NAME_WIDGET_CONTROLLER);
864ee8
-
864ee8
-static gboolean
864ee8
-nautilus_compress_dialog_controller_name_is_valid (NautilusFileNameWidgetController  *self,
864ee8
-                                                   gchar                             *name,
864ee8
-                                                   gchar                            **error_message)
864ee8
-{
864ee8
-    if (strlen (name) == 0)
864ee8
-    {
864ee8
-        return FALSE;
864ee8
-    }
864ee8
-
864ee8
-    if (strstr (name, "/") != NULL)
864ee8
-    {
864ee8
-        *error_message = _("Archive names cannot contain “/”.");
864ee8
-    }
864ee8
-    else if (strcmp (name, ".") == 0)
864ee8
-    {
864ee8
-        *error_message = _("An archive cannot be called “.”.");
864ee8
-    }
864ee8
-    else if (strcmp (name, "..") == 0)
864ee8
-    {
864ee8
-        *error_message = _("An archive cannot be called “..”.");
864ee8
-    }
864ee8
-
864ee8
-    return *error_message == NULL;
864ee8
-}
864ee8
-
864ee8
-static gchar *
864ee8
-nautilus_compress_dialog_controller_get_new_name (NautilusFileNameWidgetController *controller)
864ee8
-{
864ee8
-    NautilusCompressDialogController *self;
864ee8
-    g_autofree gchar *basename = NULL;
864ee8
-    gchar *error_message = NULL;
864ee8
-    gboolean valid_name;
864ee8
-
864ee8
-    self = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (controller);
864ee8
-
864ee8
-    basename = NAUTILUS_FILE_NAME_WIDGET_CONTROLLER_CLASS (nautilus_compress_dialog_controller_parent_class)->get_new_name (controller);
864ee8
-    /* Do not check or add the extension if the name is invalid */
864ee8
-    valid_name = nautilus_compress_dialog_controller_name_is_valid (controller,
864ee8
-                                                                    basename,
864ee8
-                                                                    &error_message);
864ee8
-
864ee8
-    if (!valid_name)
864ee8
-    {
864ee8
-        return g_strdup (basename);
864ee8
-    }
864ee8
-
864ee8
-    if (g_str_has_suffix (basename, self->extension))
864ee8
-    {
864ee8
-        return g_strdup (basename);
864ee8
-    }
864ee8
-
864ee8
-    return g_strconcat (basename, self->extension, NULL);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-compress_dialog_controller_on_response (GtkDialog *dialog,
864ee8
-                                        gint       response_id,
864ee8
-                                        gpointer   user_data)
864ee8
-{
864ee8
-    NautilusCompressDialogController *controller;
864ee8
-
864ee8
-    controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data);
864ee8
-
864ee8
-    if (response_id != GTK_RESPONSE_OK)
864ee8
-    {
864ee8
-        g_signal_emit_by_name (controller, "cancelled");
864ee8
-    }
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-update_selected_format (NautilusCompressDialogController *self,
864ee8
-                        NautilusCompressionFormat         format)
864ee8
-{
864ee8
-    const char *extension;
864ee8
-    const char *description_label_name;
864ee8
-    GtkWidget *active_button;
864ee8
-
864ee8
-    switch (format)
864ee8
-    {
864ee8
-        case NAUTILUS_COMPRESSION_ZIP:
864ee8
-        {
864ee8
-            extension = ".zip";
864ee8
-            description_label_name = "zip-description-label";
864ee8
-            active_button = self->zip_radio_button;
864ee8
-        }
864ee8
-        break;
864ee8
-
864ee8
-        case NAUTILUS_COMPRESSION_TAR_XZ:
864ee8
-        {
864ee8
-            extension = ".tar.xz";
864ee8
-            description_label_name = "tar-xz-description-label";
864ee8
-            active_button = self->tar_xz_radio_button;
864ee8
-        }
864ee8
-        break;
864ee8
-
864ee8
-        case NAUTILUS_COMPRESSION_7ZIP:
864ee8
-        {
864ee8
-            extension = ".7z";
864ee8
-            description_label_name = "seven-zip-description-label";
864ee8
-            active_button = self->seven_zip_radio_button;
864ee8
-        }
864ee8
-        break;
864ee8
-
864ee8
-        default:
864ee8
-        {
864ee8
-            g_assert_not_reached ();
864ee8
-        }
864ee8
-        break;
864ee8
-    }
864ee8
-
864ee8
-    self->extension = extension;
864ee8
-
864ee8
-    gtk_stack_set_visible_child_name (GTK_STACK (self->description_stack),
864ee8
-                                      description_label_name);
864ee8
-
864ee8
-    gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (active_button),
864ee8
-                                  TRUE);
864ee8
-
864ee8
-    g_settings_set_enum (nautilus_compression_preferences,
864ee8
-                         NAUTILUS_PREFERENCES_DEFAULT_COMPRESSION_FORMAT,
864ee8
-                         format);
864ee8
-    /* Since the extension changes when the button is toggled, force a
864ee8
-     * verification of the new file name by simulating an entry change
864ee8
-     */
864ee8
-    g_signal_emit_by_name (self->name_entry, "changed");
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-zip_radio_button_on_toggled (GtkToggleButton *toggle_button,
864ee8
-                             gpointer         user_data)
864ee8
-{
864ee8
-    NautilusCompressDialogController *controller;
864ee8
-
864ee8
-    controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data);
864ee8
-
864ee8
-    if (!gtk_toggle_button_get_active (toggle_button))
864ee8
-    {
864ee8
-        return;
864ee8
-    }
864ee8
-
864ee8
-    update_selected_format (controller,
864ee8
-                            NAUTILUS_COMPRESSION_ZIP);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-tar_xz_radio_button_on_toggled (GtkToggleButton *toggle_button,
864ee8
-                                gpointer         user_data)
864ee8
-{
864ee8
-    NautilusCompressDialogController *controller;
864ee8
-
864ee8
-    controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data);
864ee8
-
864ee8
-    if (!gtk_toggle_button_get_active (toggle_button))
864ee8
-    {
864ee8
-        return;
864ee8
-    }
864ee8
-
864ee8
-    update_selected_format (controller,
864ee8
-                            NAUTILUS_COMPRESSION_TAR_XZ);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-seven_zip_radio_button_on_toggled (GtkToggleButton *toggle_button,
864ee8
-                                   gpointer         user_data)
864ee8
-{
864ee8
-    NautilusCompressDialogController *controller;
864ee8
-
864ee8
-    controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data);
864ee8
-
864ee8
-    if (!gtk_toggle_button_get_active (toggle_button))
864ee8
-    {
864ee8
-        return;
864ee8
-    }
864ee8
-
864ee8
-    update_selected_format (controller,
864ee8
-                            NAUTILUS_COMPRESSION_7ZIP);
864ee8
-}
864ee8
-
864ee8
-NautilusCompressDialogController *
864ee8
-nautilus_compress_dialog_controller_new (GtkWindow         *parent_window,
864ee8
-                                         NautilusDirectory *destination_directory,
864ee8
-                                         gchar             *initial_name)
864ee8
-{
864ee8
-    NautilusCompressDialogController *self;
864ee8
-    g_autoptr (GtkBuilder) builder = NULL;
864ee8
-    GtkWidget *compress_dialog;
864ee8
-    GtkWidget *error_revealer;
864ee8
-    GtkWidget *error_label;
864ee8
-    GtkWidget *name_entry;
864ee8
-    GtkWidget *activate_button;
864ee8
-    GtkWidget *description_stack;
864ee8
-    GtkWidget *zip_radio_button;
864ee8
-    GtkWidget *tar_xz_radio_button;
864ee8
-    GtkWidget *seven_zip_radio_button;
864ee8
-    NautilusCompressionFormat format;
864ee8
-
864ee8
-    builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/ui/nautilus-compress-dialog.ui");
864ee8
-    compress_dialog = GTK_WIDGET (gtk_builder_get_object (builder, "compress_dialog"));
864ee8
-    error_revealer = GTK_WIDGET (gtk_builder_get_object (builder, "error_revealer"));
864ee8
-    error_label = GTK_WIDGET (gtk_builder_get_object (builder, "error_label"));
864ee8
-    name_entry = GTK_WIDGET (gtk_builder_get_object (builder, "name_entry"));
864ee8
-    activate_button = GTK_WIDGET (gtk_builder_get_object (builder, "activate_button"));
864ee8
-    zip_radio_button = GTK_WIDGET (gtk_builder_get_object (builder, "zip_radio_button"));
864ee8
-    tar_xz_radio_button = GTK_WIDGET (gtk_builder_get_object (builder, "tar_xz_radio_button"));
864ee8
-    seven_zip_radio_button = GTK_WIDGET (gtk_builder_get_object (builder, "seven_zip_radio_button"));
864ee8
-    description_stack = GTK_WIDGET (gtk_builder_get_object (builder, "description_stack"));
864ee8
-
864ee8
-    gtk_window_set_transient_for (GTK_WINDOW (compress_dialog),
864ee8
-                                  parent_window);
864ee8
-
864ee8
-    self = g_object_new (NAUTILUS_TYPE_COMPRESS_DIALOG_CONTROLLER,
864ee8
-                         "error-revealer", error_revealer,
864ee8
-                         "error-label", error_label,
864ee8
-                         "name-entry", name_entry,
864ee8
-                         "activate-button", activate_button,
864ee8
-                         "containing-directory", destination_directory, NULL);
864ee8
-
864ee8
-    self->compress_dialog = compress_dialog;
864ee8
-    self->zip_radio_button = zip_radio_button;
864ee8
-    self->tar_xz_radio_button = tar_xz_radio_button;
864ee8
-    self->seven_zip_radio_button = seven_zip_radio_button;
864ee8
-    self->description_stack = description_stack;
864ee8
-    self->name_entry = name_entry;
864ee8
-
864ee8
-    self->response_handler_id = g_signal_connect (compress_dialog,
864ee8
-                                                  "response",
864ee8
-                                                  (GCallback) compress_dialog_controller_on_response,
864ee8
-                                                  self);
864ee8
-
864ee8
-    gtk_builder_add_callback_symbols (builder,
864ee8
-                                      "zip_radio_button_on_toggled",
864ee8
-                                      G_CALLBACK (zip_radio_button_on_toggled),
864ee8
-                                      "tar_xz_radio_button_on_toggled",
864ee8
-                                      G_CALLBACK (tar_xz_radio_button_on_toggled),
864ee8
-                                      "seven_zip_radio_button_on_toggled",
864ee8
-                                      G_CALLBACK (seven_zip_radio_button_on_toggled),
864ee8
-                                      NULL);
864ee8
-    gtk_builder_connect_signals (builder, self);
864ee8
-
864ee8
-    format = g_settings_get_enum (nautilus_compression_preferences,
864ee8
-                                  NAUTILUS_PREFERENCES_DEFAULT_COMPRESSION_FORMAT);
864ee8
-
864ee8
-    update_selected_format (self, format);
864ee8
-
864ee8
-    if (initial_name != NULL)
864ee8
-    {
864ee8
-        gtk_entry_set_text (GTK_ENTRY (name_entry), initial_name);
864ee8
-    }
864ee8
-
864ee8
-    gtk_widget_show_all (compress_dialog);
864ee8
-
864ee8
-    return self;
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-nautilus_compress_dialog_controller_init (NautilusCompressDialogController *self)
864ee8
-{
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-nautilus_compress_dialog_controller_finalize (GObject *object)
864ee8
-{
864ee8
-    NautilusCompressDialogController *self;
864ee8
-
864ee8
-    self = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (object);
864ee8
-
864ee8
-    if (self->compress_dialog != NULL)
864ee8
-    {
864ee8
-        if (self->response_handler_id > 0)
864ee8
-        {
864ee8
-            g_signal_handler_disconnect (self->compress_dialog,
864ee8
-                                         self->response_handler_id);
864ee8
-            self->response_handler_id = 0;
864ee8
-        }
864ee8
-        gtk_widget_destroy (self->compress_dialog);
864ee8
-        self->compress_dialog = NULL;
864ee8
-    }
864ee8
-
864ee8
-    G_OBJECT_CLASS (nautilus_compress_dialog_controller_parent_class)->finalize (object);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-nautilus_compress_dialog_controller_class_init (NautilusCompressDialogControllerClass *klass)
864ee8
-{
864ee8
-    GObjectClass *object_class = G_OBJECT_CLASS (klass);
864ee8
-    NautilusFileNameWidgetControllerClass *parent_class = NAUTILUS_FILE_NAME_WIDGET_CONTROLLER_CLASS (klass);
864ee8
-
864ee8
-    object_class->finalize = nautilus_compress_dialog_controller_finalize;
864ee8
-
864ee8
-    parent_class->get_new_name = nautilus_compress_dialog_controller_get_new_name;
864ee8
-    parent_class->name_is_valid = nautilus_compress_dialog_controller_name_is_valid;
864ee8
-}
864ee8
diff --git a/src/nautilus-compress-dialog-controller.h b/src/nautilus-compress-dialog-controller.h
864ee8
deleted file mode 100644
864ee8
index bb89413f1..000000000
864ee8
--- a/src/nautilus-compress-dialog-controller.h
864ee8
+++ /dev/null
864ee8
@@ -1,36 +0,0 @@
864ee8
-/* nautilus-compress-dialog-controller.h
864ee8
- *
864ee8
- * Copyright (C) 2016 the Nautilus developers
864ee8
- *
864ee8
- * This program is free software; you can redistribute it and/or
864ee8
- * modify it under the terms of the GNU General Public License as
864ee8
- * published by the Free Software Foundation; either version 2 of the
864ee8
- * License, or (at your option) any later version.
864ee8
- *
864ee8
- * This program is distributed in the hope that it will be useful,
864ee8
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
864ee8
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
864ee8
- * General Public License for more details.
864ee8
- *
864ee8
- * You should have received a copy of the GNU General Public
864ee8
- * License along with this program; if not, see <http://www.gnu.org/licenses/>.
864ee8
- *
864ee8
- */
864ee8
-
864ee8
-#ifndef NAUTILUS_COMPRESS_DIALOG_CONTROLLER_H
864ee8
-#define NAUTILUS_COMPRESS_DIALOG_CONTROLLER_H
864ee8
-
864ee8
-#include <glib.h>
864ee8
-#include <gtk/gtk.h>
864ee8
-
864ee8
-#include "nautilus-file-name-widget-controller.h"
864ee8
-#include "nautilus-directory.h"
864ee8
-
864ee8
-#define NAUTILUS_TYPE_COMPRESS_DIALOG_CONTROLLER nautilus_compress_dialog_controller_get_type ()
864ee8
-G_DECLARE_FINAL_TYPE (NautilusCompressDialogController, nautilus_compress_dialog_controller, NAUTILUS, COMPRESS_DIALOG_CONTROLLER, NautilusFileNameWidgetController)
864ee8
-
864ee8
-NautilusCompressDialogController * nautilus_compress_dialog_controller_new (GtkWindow         *parent_window,
864ee8
-                                                                            NautilusDirectory *destination_directory,
864ee8
-                                                                            gchar             *initial_name);
864ee8
-
864ee8
-#endif /* NAUTILUS_COMPRESS_DIALOG_CONTROLLER_H */
864ee8
diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c
864ee8
index fd35faf3f..728a80df8 100644
864ee8
--- a/src/nautilus-file-operations.c
864ee8
+++ b/src/nautilus-file-operations.c
864ee8
@@ -160,7 +160,6 @@ typedef enum
864ee8
     OP_KIND_MOVE,
864ee8
     OP_KIND_DELETE,
864ee8
     OP_KIND_TRASH,
864ee8
-    OP_KIND_COMPRESS
864ee8
 } OpKind;
864ee8
 
864ee8
 typedef struct
864ee8
@@ -180,40 +179,6 @@ typedef struct
864ee8
     int last_reported_files_left;
864ee8
 } TransferInfo;
864ee8
 
864ee8
-typedef struct
864ee8
-{
864ee8
-    CommonJob common;
864ee8
-    GList *source_files;
864ee8
-    GFile *destination_directory;
864ee8
-    GList *output_files;
864ee8
-
864ee8
-    gdouble base_progress;
864ee8
-
864ee8
-    guint64 archive_compressed_size;
864ee8
-    guint64 total_compressed_size;
864ee8
-
864ee8
-    NautilusExtractCallback done_callback;
864ee8
-    gpointer done_callback_data;
864ee8
-} ExtractJob;
864ee8
-
864ee8
-typedef struct
864ee8
-{
864ee8
-    CommonJob common;
864ee8
-    GList *source_files;
864ee8
-    GFile *output_file;
864ee8
-
864ee8
-    AutoarFormat format;
864ee8
-    AutoarFilter filter;
864ee8
-
864ee8
-    guint64 total_size;
864ee8
-    guint total_files;
864ee8
-
864ee8
-    gboolean success;
864ee8
-
864ee8
-    NautilusCreateCallback done_callback;
864ee8
-    gpointer done_callback_data;
864ee8
-} CompressJob;
864ee8
-
864ee8
 #define SECONDS_NEEDED_FOR_RELIABLE_TRANSFER_RATE 8
864ee8
 #define NSEC_PER_MICROSEC 1000
864ee8
 #define PROGRESS_NOTIFY_INTERVAL 100 * NSEC_PER_MICROSEC
864ee8
@@ -3083,12 +3048,6 @@ report_preparing_count_progress (CommonJob  *job,
864ee8
                        source_info->num_files);
864ee8
             }
864ee8
             break;
864ee8
-
864ee8
-        case OP_KIND_COMPRESS:
864ee8
-            s = f (ngettext ("Preparing to compress %'d file",
864ee8
-                             "Preparing to compress %'d files",
864ee8
-                             source_info->num_files),
864ee8
-                   source_info->num_files);
864ee8
     }
864ee8
 
864ee8
     nautilus_progress_info_take_details (job->progress, s);
864ee8
@@ -3135,9 +3094,6 @@ get_scan_primary (OpKind kind)
864ee8
             {
864ee8
                 return f (_("Error while moving files to trash."));
864ee8
             }
864ee8
-
864ee8
-        case OP_KIND_COMPRESS:
864ee8
-            return f (_("Error while compressing files."));
864ee8
     }
864ee8
 }
864ee8
 
864ee8
@@ -8141,715 +8097,6 @@ nautilus_file_mark_desktop_file_trusted (GFile              *file,
864ee8
     g_object_unref (task);
864ee8
 }
864ee8
 
864ee8
-static void
864ee8
-extract_task_done (GObject      *source_object,
864ee8
-                   GAsyncResult *res,
864ee8
-                   gpointer      user_data)
864ee8
-{
864ee8
-    ExtractJob *extract_job;
864ee8
-
864ee8
-    extract_job = user_data;
864ee8
-
864ee8
-    if (extract_job->done_callback)
864ee8
-    {
864ee8
-        extract_job->done_callback (extract_job->output_files,
864ee8
-                                    extract_job->done_callback_data);
864ee8
-    }
864ee8
-
864ee8
-    g_list_free_full (extract_job->source_files, g_object_unref);
864ee8
-    g_list_free_full (extract_job->output_files, g_object_unref);
864ee8
-    g_object_unref (extract_job->destination_directory);
864ee8
-
864ee8
-    finalize_common ((CommonJob *) extract_job);
864ee8
-
864ee8
-    nautilus_file_changes_consume_changes (TRUE);
864ee8
-}
864ee8
-
864ee8
-static GFile *
864ee8
-extract_job_on_decide_destination (AutoarExtractor *extractor,
864ee8
-                                   GFile           *destination,
864ee8
-                                   GList           *files,
864ee8
-                                   gpointer         user_data)
864ee8
-{
864ee8
-    ExtractJob *extract_job = user_data;
864ee8
-    GFile *decided_destination;
864ee8
-    g_autofree char *basename = NULL;
864ee8
-
864ee8
-    nautilus_progress_info_set_details (extract_job->common.progress,
864ee8
-                                        _("Verifying destination"));
864ee8
-
864ee8
-    basename = g_file_get_basename (destination);
864ee8
-    decided_destination = nautilus_generate_unique_file_in_directory (extract_job->destination_directory,
864ee8
-                                                                      basename);
864ee8
-
864ee8
-    if (job_aborted ((CommonJob *) extract_job))
864ee8
-    {
864ee8
-        g_object_unref (decided_destination);
864ee8
-        return NULL;
864ee8
-    }
864ee8
-
864ee8
-    extract_job->output_files = g_list_prepend (extract_job->output_files,
864ee8
-                                                decided_destination);
864ee8
-
864ee8
-    return g_object_ref (decided_destination);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-extract_job_on_progress (AutoarExtractor *extractor,
864ee8
-                         guint64          archive_current_decompressed_size,
864ee8
-                         guint            archive_current_decompressed_files,
864ee8
-                         gpointer         user_data)
864ee8
-{
864ee8
-    ExtractJob *extract_job = user_data;
864ee8
-    CommonJob *common = user_data;
864ee8
-    GFile *source_file;
864ee8
-    char *details;
864ee8
-    double elapsed;
864ee8
-    double transfer_rate;
864ee8
-    int remaining_time;
864ee8
-    guint64 archive_total_decompressed_size;
864ee8
-    gdouble archive_weight;
864ee8
-    gdouble archive_decompress_progress;
864ee8
-    guint64 job_completed_size;
864ee8
-    gdouble job_progress;
864ee8
-
864ee8
-    source_file = autoar_extractor_get_source_file (extractor);
864ee8
-
864ee8
-    nautilus_progress_info_take_status (common->progress,
864ee8
-                                        f (_("Extracting “%B”"), source_file));
864ee8
-
864ee8
-    archive_total_decompressed_size = autoar_extractor_get_total_size (extractor);
864ee8
-
864ee8
-    archive_decompress_progress = (gdouble) archive_current_decompressed_size /
864ee8
-                                  (gdouble) archive_total_decompressed_size;
864ee8
-
864ee8
-    archive_weight = 0;
864ee8
-    if (extract_job->total_compressed_size)
864ee8
-    {
864ee8
-        archive_weight = (gdouble) extract_job->archive_compressed_size /
864ee8
-                         (gdouble) extract_job->total_compressed_size;
864ee8
-    }
864ee8
-
864ee8
-    job_progress = archive_decompress_progress * archive_weight + extract_job->base_progress;
864ee8
-
864ee8
-    elapsed = g_timer_elapsed (common->time, NULL);
864ee8
-
864ee8
-    transfer_rate = 0;
864ee8
-    remaining_time = -1;
864ee8
-
864ee8
-    job_completed_size = job_progress * extract_job->total_compressed_size;
864ee8
-
864ee8
-    if (elapsed > 0)
864ee8
-    {
864ee8
-        transfer_rate = job_completed_size / elapsed;
864ee8
-    }
864ee8
-    if (transfer_rate > 0)
864ee8
-    {
864ee8
-        remaining_time = (extract_job->total_compressed_size - job_completed_size) /
864ee8
-                         transfer_rate;
864ee8
-    }
864ee8
-
864ee8
-    if (elapsed < SECONDS_NEEDED_FOR_RELIABLE_TRANSFER_RATE ||
864ee8
-        transfer_rate == 0)
864ee8
-    {
864ee8
-        /* To translators: %S will expand to a size like "2 bytes" or
864ee8
-         * "3 MB", so something like "4 kb / 4 MB"
864ee8
-         */
864ee8
-        details = f (_("%S / %S"), job_completed_size, extract_job->total_compressed_size);
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        /* To translators: %S will expand to a size like "2 bytes" or
864ee8
-         * "3 MB", %T to a time duration like "2 minutes". So the whole
864ee8
-         * thing will be something like
864ee8
-         * "2 kb / 4 MB -- 2 hours left (4kb/sec)"
864ee8
-         *
864ee8
-         * The singular/plural form will be used depending on the
864ee8
-         * remaining time (i.e. the %T argument).
864ee8
-         */
864ee8
-        details = f (ngettext ("%S / %S \xE2\x80\x94 %T left (%S/sec)",
864ee8
-                               "%S / %S \xE2\x80\x94 %T left (%S/sec)",
864ee8
-                               seconds_count_format_time_units (remaining_time)),
864ee8
-                     job_completed_size, extract_job->total_compressed_size,
864ee8
-                     remaining_time,
864ee8
-                     (goffset) transfer_rate);
864ee8
-    }
864ee8
-
864ee8
-    nautilus_progress_info_take_details (common->progress, details);
864ee8
-
864ee8
-    if (elapsed > SECONDS_NEEDED_FOR_APROXIMATE_TRANSFER_RATE)
864ee8
-    {
864ee8
-        nautilus_progress_info_set_remaining_time (common->progress,
864ee8
-                                                   remaining_time);
864ee8
-        nautilus_progress_info_set_elapsed_time (common->progress,
864ee8
-                                                 elapsed);
864ee8
-    }
864ee8
-
864ee8
-    nautilus_progress_info_set_progress (common->progress, job_progress, 1);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-extract_job_on_error (AutoarExtractor *extractor,
864ee8
-                      GError          *error,
864ee8
-                      gpointer         user_data)
864ee8
-{
864ee8
-    ExtractJob *extract_job = user_data;
864ee8
-    GFile *source_file;
864ee8
-    gint response_id;
864ee8
-
864ee8
-    source_file = autoar_extractor_get_source_file (extractor);
864ee8
-
864ee8
-    if (IS_IO_ERROR (error, NOT_SUPPORTED))
864ee8
-    {
864ee8
-        handle_unsupported_compressed_file (extract_job->common.parent_window,
864ee8
-                                            source_file);
864ee8
-
864ee8
-        return;
864ee8
-    }
864ee8
-
864ee8
-    nautilus_progress_info_take_status (extract_job->common.progress,
864ee8
-                                        f (_("Error extracting “%B”"),
864ee8
-                                           source_file));
864ee8
-
864ee8
-    response_id = run_warning ((CommonJob *) extract_job,
864ee8
-                               f (_("There was an error while extracting “%B”."),
864ee8
-                                  source_file),
864ee8
-                               g_strdup (error->message),
864ee8
-                               NULL,
864ee8
-                               FALSE,
864ee8
-                               CANCEL,
864ee8
-                               SKIP,
864ee8
-                               NULL);
864ee8
-
864ee8
-    if (response_id == 0 || response_id == GTK_RESPONSE_DELETE_EVENT)
864ee8
-    {
864ee8
-        abort_job ((CommonJob *) extract_job);
864ee8
-    }
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-extract_job_on_completed (AutoarExtractor *extractor,
864ee8
-                          gpointer         user_data)
864ee8
-{
864ee8
-    ExtractJob *extract_job = user_data;
864ee8
-    GFile *output_file;
864ee8
-
864ee8
-    output_file = G_FILE (extract_job->output_files->data);
864ee8
-
864ee8
-    nautilus_file_changes_queue_file_added (output_file);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-report_extract_final_progress (ExtractJob *extract_job,
864ee8
-                               gint        total_files)
864ee8
-{
864ee8
-    char *status;
864ee8
-
864ee8
-    nautilus_progress_info_set_destination (extract_job->common.progress,
864ee8
-                                            extract_job->destination_directory);
864ee8
-
864ee8
-    if (total_files == 1)
864ee8
-    {
864ee8
-        GFile *source_file;
864ee8
-
864ee8
-        source_file = G_FILE (extract_job->source_files->data);
864ee8
-        status = f (_("Extracted “%B” to “%B”"),
864ee8
-                    source_file,
864ee8
-                    extract_job->destination_directory);
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        status = f (ngettext ("Extracted %'d file to “%B”",
864ee8
-                              "Extracted %'d files to “%B”",
864ee8
-                              total_files),
864ee8
-                    total_files,
864ee8
-                    extract_job->destination_directory);
864ee8
-    }
864ee8
-
864ee8
-    nautilus_progress_info_take_status (extract_job->common.progress,
864ee8
-                                        status);
864ee8
-    nautilus_progress_info_take_details (extract_job->common.progress,
864ee8
-                                         f (_("%S / %S"),
864ee8
-                                            extract_job->total_compressed_size,
864ee8
-                                            extract_job->total_compressed_size));
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-extract_task_thread_func (GTask        *task,
864ee8
-                          gpointer      source_object,
864ee8
-                          gpointer      task_data,
864ee8
-                          GCancellable *cancellable)
864ee8
-{
864ee8
-    ExtractJob *extract_job = task_data;
864ee8
-    GList *l;
864ee8
-    GList *existing_output_files = NULL;
864ee8
-    gint total_files;
864ee8
-    g_autofree guint64 *archive_compressed_sizes = NULL;
864ee8
-    gint i;
864ee8
-
864ee8
-    g_timer_start (extract_job->common.time);
864ee8
-
864ee8
-    nautilus_progress_info_start (extract_job->common.progress);
864ee8
-
864ee8
-    nautilus_progress_info_set_details (extract_job->common.progress,
864ee8
-                                        _("Preparing to extract"));
864ee8
-
864ee8
-    total_files = g_list_length (extract_job->source_files);
864ee8
-
864ee8
-    archive_compressed_sizes = g_malloc0_n (total_files, sizeof (guint64));
864ee8
-    extract_job->total_compressed_size = 0;
864ee8
-
864ee8
-    for (l = extract_job->source_files, i = 0;
864ee8
-         l != NULL && !job_aborted ((CommonJob *) extract_job);
864ee8
-         l = l->next, i++)
864ee8
-    {
864ee8
-        GFile *source_file;
864ee8
-        g_autoptr (GFileInfo) info = NULL;
864ee8
-
864ee8
-        source_file = G_FILE (l->data);
864ee8
-        info = g_file_query_info (source_file,
864ee8
-                                  G_FILE_ATTRIBUTE_STANDARD_SIZE,
864ee8
-                                  G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS,
864ee8
-                                  extract_job->common.cancellable,
864ee8
-                                  NULL);
864ee8
-
864ee8
-        if (info)
864ee8
-        {
864ee8
-            archive_compressed_sizes[i] = g_file_info_get_size (info);
864ee8
-            extract_job->total_compressed_size += archive_compressed_sizes[i];
864ee8
-        }
864ee8
-    }
864ee8
-
864ee8
-    extract_job->base_progress = 0;
864ee8
-
864ee8
-    for (l = extract_job->source_files, i = 0;
864ee8
-         l != NULL && !job_aborted ((CommonJob *) extract_job);
864ee8
-         l = l->next, i++)
864ee8
-    {
864ee8
-        g_autoptr (AutoarExtractor) extractor = NULL;
864ee8
-
864ee8
-        extractor = autoar_extractor_new (G_FILE (l->data),
864ee8
-                                          extract_job->destination_directory);
864ee8
-
864ee8
-        autoar_extractor_set_notify_interval (extractor,
864ee8
-                                              PROGRESS_NOTIFY_INTERVAL);
864ee8
-
864ee8
-        g_signal_connect (extractor, "error",
864ee8
-                          G_CALLBACK (extract_job_on_error),
864ee8
-                          extract_job);
864ee8
-        g_signal_connect (extractor, "decide-destination",
864ee8
-                          G_CALLBACK (extract_job_on_decide_destination),
864ee8
-                          extract_job);
864ee8
-        g_signal_connect (extractor, "progress",
864ee8
-                          G_CALLBACK (extract_job_on_progress),
864ee8
-                          extract_job);
864ee8
-        g_signal_connect (extractor, "completed",
864ee8
-                          G_CALLBACK (extract_job_on_completed),
864ee8
-                          extract_job);
864ee8
-
864ee8
-        extract_job->archive_compressed_size = archive_compressed_sizes[i];
864ee8
-
864ee8
-        autoar_extractor_start (extractor,
864ee8
-                                extract_job->common.cancellable);
864ee8
-
864ee8
-        g_signal_handlers_disconnect_by_data (extractor,
864ee8
-                                              extract_job);
864ee8
-
864ee8
-        extract_job->base_progress += (gdouble) extract_job->archive_compressed_size /
864ee8
-                                      (gdouble) extract_job->total_compressed_size;
864ee8
-    }
864ee8
-
864ee8
-    if (!job_aborted ((CommonJob *) extract_job))
864ee8
-    {
864ee8
-        report_extract_final_progress (extract_job, total_files);
864ee8
-    }
864ee8
-
864ee8
-    for (l = extract_job->output_files; l != NULL; l = l->next)
864ee8
-    {
864ee8
-        GFile *output_file;
864ee8
-
864ee8
-        output_file = G_FILE (l->data);
864ee8
-
864ee8
-        if (g_file_query_exists (output_file, NULL))
864ee8
-        {
864ee8
-            existing_output_files = g_list_prepend (existing_output_files,
864ee8
-                                                    g_object_ref (output_file));
864ee8
-        }
864ee8
-    }
864ee8
-
864ee8
-    g_list_free_full (extract_job->output_files, g_object_unref);
864ee8
-
864ee8
-    extract_job->output_files = existing_output_files;
864ee8
-
864ee8
-    if (extract_job->common.undo_info)
864ee8
-    {
864ee8
-        if (extract_job->output_files)
864ee8
-        {
864ee8
-            NautilusFileUndoInfoExtract *undo_info;
864ee8
-
864ee8
-            undo_info = NAUTILUS_FILE_UNDO_INFO_EXTRACT (extract_job->common.undo_info);
864ee8
-
864ee8
-            nautilus_file_undo_info_extract_set_outputs (undo_info,
864ee8
-                                                         extract_job->output_files);
864ee8
-        }
864ee8
-        else
864ee8
-        {
864ee8
-            /* There is nothing to undo if there is no output */
864ee8
-            g_clear_object (&extract_job->common.undo_info);
864ee8
-        }
864ee8
-    }
864ee8
-}
864ee8
-
864ee8
-void
864ee8
-nautilus_file_operations_extract_files (GList                   *files,
864ee8
-                                        GFile                   *destination_directory,
864ee8
-                                        GtkWindow               *parent_window,
864ee8
-                                        NautilusExtractCallback  done_callback,
864ee8
-                                        gpointer                 done_callback_data)
864ee8
-{
864ee8
-    ExtractJob *extract_job;
864ee8
-    g_autoptr (GTask) task = NULL;
864ee8
-
864ee8
-    extract_job = op_job_new (ExtractJob, parent_window);
864ee8
-    extract_job->source_files = g_list_copy_deep (files,
864ee8
-                                                  (GCopyFunc) g_object_ref,
864ee8
-                                                  NULL);
864ee8
-    extract_job->destination_directory = g_object_ref (destination_directory);
864ee8
-    extract_job->done_callback = done_callback;
864ee8
-    extract_job->done_callback_data = done_callback_data;
864ee8
-
864ee8
-    inhibit_power_manager ((CommonJob *) extract_job, _("Extracting Files"));
864ee8
-
864ee8
-    if (!nautilus_file_undo_manager_is_operating ())
864ee8
-    {
864ee8
-        extract_job->common.undo_info = nautilus_file_undo_info_extract_new (files,
864ee8
-                                                                             destination_directory);
864ee8
-    }
864ee8
-
864ee8
-    task = g_task_new (NULL, extract_job->common.cancellable,
864ee8
-                       extract_task_done, extract_job);
864ee8
-    g_task_set_task_data (task, extract_job, NULL);
864ee8
-    g_task_run_in_thread (task, extract_task_thread_func);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-compress_task_done (GObject      *source_object,
864ee8
-                    GAsyncResult *res,
864ee8
-                    gpointer      user_data)
864ee8
-{
864ee8
-    CompressJob *compress_job = user_data;
864ee8
-
864ee8
-    if (compress_job->done_callback)
864ee8
-    {
864ee8
-        compress_job->done_callback (compress_job->output_file,
864ee8
-                                     compress_job->success,
864ee8
-                                     compress_job->done_callback_data);
864ee8
-    }
864ee8
-
864ee8
-    g_object_unref (compress_job->output_file);
864ee8
-    g_list_free_full (compress_job->source_files, g_object_unref);
864ee8
-
864ee8
-    finalize_common ((CommonJob *) compress_job);
864ee8
-
864ee8
-    nautilus_file_changes_consume_changes (TRUE);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-compress_job_on_progress (AutoarCompressor *compressor,
864ee8
-                          guint64           completed_size,
864ee8
-                          guint             completed_files,
864ee8
-                          gpointer          user_data)
864ee8
-{
864ee8
-    CompressJob *compress_job = user_data;
864ee8
-    CommonJob *common = user_data;
864ee8
-    char *status;
864ee8
-    char *details;
864ee8
-    int files_left;
864ee8
-    double elapsed;
864ee8
-    double transfer_rate;
864ee8
-    int remaining_time;
864ee8
-
864ee8
-    files_left = compress_job->total_files - completed_files;
864ee8
-
864ee8
-    if (compress_job->total_files == 1)
864ee8
-    {
864ee8
-        status = f (_("Compressing “%B” into “%B”"),
864ee8
-                    G_FILE (compress_job->source_files->data),
864ee8
-                    compress_job->output_file);
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        status = f (ngettext ("Compressing %'d file into “%B”",
864ee8
-                              "Compressing %'d files into “%B”",
864ee8
-                              compress_job->total_files),
864ee8
-                    compress_job->total_files,
864ee8
-                    compress_job->output_file);
864ee8
-    }
864ee8
-
864ee8
-    nautilus_progress_info_take_status (common->progress, status);
864ee8
-
864ee8
-    elapsed = g_timer_elapsed (common->time, NULL);
864ee8
-
864ee8
-    transfer_rate = 0;
864ee8
-    remaining_time = -1;
864ee8
-
864ee8
-    if (elapsed > 0)
864ee8
-    {
864ee8
-        if (completed_size > 0)
864ee8
-        {
864ee8
-            transfer_rate = completed_size / elapsed;
864ee8
-            remaining_time = (compress_job->total_size - completed_size) / transfer_rate;
864ee8
-        }
864ee8
-        else if (completed_files > 0)
864ee8
-        {
864ee8
-            transfer_rate = completed_files / elapsed;
864ee8
-            remaining_time = (compress_job->total_files - completed_files) / transfer_rate;
864ee8
-        }
864ee8
-    }
864ee8
-
864ee8
-    if (elapsed < SECONDS_NEEDED_FOR_RELIABLE_TRANSFER_RATE ||
864ee8
-        transfer_rate == 0)
864ee8
-    {
864ee8
-        if (compress_job->total_files == 1)
864ee8
-        {
864ee8
-            /* To translators: %S will expand to a size like "2 bytes" or "3 MB", so something like "4 kb / 4 MB" */
864ee8
-            details = f (_("%S / %S"), completed_size, compress_job->total_size);
864ee8
-        }
864ee8
-        else
864ee8
-        {
864ee8
-            details = f (_("%'d / %'d"),
864ee8
-                         files_left > 0 ? completed_files + 1 : completed_files,
864ee8
-                         compress_job->total_files);
864ee8
-        }
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        if (compress_job->total_files == 1)
864ee8
-        {
864ee8
-            if (files_left > 0)
864ee8
-            {
864ee8
-                /* To translators: %S will expand to a size like "2 bytes" or "3 MB", %T to a time duration like
864ee8
-                 * "2 minutes". So the whole thing will be something like "2 kb / 4 MB -- 2 hours left (4kb/sec)"
864ee8
-                 *
864ee8
-                 * The singular/plural form will be used depending on the remaining time (i.e. the %T argument).
864ee8
-                 */
864ee8
-                details = f (ngettext ("%S / %S \xE2\x80\x94 %T left (%S/sec)",
864ee8
-                                       "%S / %S \xE2\x80\x94 %T left (%S/sec)",
864ee8
-                                       seconds_count_format_time_units (remaining_time)),
864ee8
-                             completed_size, compress_job->total_size,
864ee8
-                             remaining_time,
864ee8
-                             (goffset) transfer_rate);
864ee8
-            }
864ee8
-            else
864ee8
-            {
864ee8
-                /* To translators: %S will expand to a size like "2 bytes" or "3 MB". */
864ee8
-                details = f (_("%S / %S"),
864ee8
-                             completed_size,
864ee8
-                             compress_job->total_size);
864ee8
-            }
864ee8
-        }
864ee8
-        else
864ee8
-        {
864ee8
-            if (files_left > 0)
864ee8
-            {
864ee8
-                /* To translators: %T will expand to a time duration like "2 minutes".
864ee8
-                 * So the whole thing will be something like "1 / 5 -- 2 hours left (4kb/sec)"
864ee8
-                 *
864ee8
-                 * The singular/plural form will be used depending on the remaining time (i.e. the %T argument).
864ee8
-                 */
864ee8
-                details = f (ngettext ("%'d / %'d \xE2\x80\x94 %T left (%S/sec)",
864ee8
-                                       "%'d / %'d \xE2\x80\x94 %T left (%S/sec)",
864ee8
-                                       seconds_count_format_time_units (remaining_time)),
864ee8
-                             completed_files + 1, compress_job->total_files,
864ee8
-                             remaining_time,
864ee8
-                             (goffset) transfer_rate);
864ee8
-            }
864ee8
-            else
864ee8
-            {
864ee8
-                /* To translators: %'d is the number of files completed for the operation,
864ee8
-                 * so it will be something like 2/14. */
864ee8
-                details = f (_("%'d / %'d"),
864ee8
-                             completed_files,
864ee8
-                             compress_job->total_files);
864ee8
-            }
864ee8
-        }
864ee8
-    }
864ee8
-
864ee8
-    nautilus_progress_info_take_details (common->progress, details);
864ee8
-
864ee8
-    if (elapsed > SECONDS_NEEDED_FOR_APROXIMATE_TRANSFER_RATE)
864ee8
-    {
864ee8
-        nautilus_progress_info_set_remaining_time (common->progress,
864ee8
-                                                   remaining_time);
864ee8
-        nautilus_progress_info_set_elapsed_time (common->progress,
864ee8
-                                                 elapsed);
864ee8
-    }
864ee8
-
864ee8
-    nautilus_progress_info_set_progress (common->progress,
864ee8
-                                         completed_size,
864ee8
-                                         compress_job->total_size);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-compress_job_on_error (AutoarCompressor *compressor,
864ee8
-                       GError           *error,
864ee8
-                       gpointer          user_data)
864ee8
-{
864ee8
-    CompressJob *compress_job = user_data;
864ee8
-    char *status;
864ee8
-
864ee8
-    if (compress_job->total_files == 1)
864ee8
-    {
864ee8
-        status = f (_("Error compressing “%B” into “%B”"),
864ee8
-                    G_FILE (compress_job->source_files->data),
864ee8
-                    compress_job->output_file);
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        status = f (ngettext ("Error compressing %'d file into “%B”",
864ee8
-                              "Error compressing %'d files into “%B”",
864ee8
-                              compress_job->total_files),
864ee8
-                    compress_job->total_files,
864ee8
-                    compress_job->output_file);
864ee8
-    }
864ee8
-
864ee8
-    nautilus_progress_info_take_status (compress_job->common.progress,
864ee8
-                                        status);
864ee8
-
864ee8
-    run_error ((CommonJob *) compress_job,
864ee8
-               g_strdup (_("There was an error while compressing files.")),
864ee8
-               g_strdup (error->message),
864ee8
-               NULL,
864ee8
-               FALSE,
864ee8
-               CANCEL,
864ee8
-               NULL);
864ee8
-
864ee8
-    abort_job ((CommonJob *) compress_job);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-compress_job_on_completed (AutoarCompressor *compressor,
864ee8
-                           gpointer          user_data)
864ee8
-{
864ee8
-    CompressJob *compress_job = user_data;
864ee8
-    g_autoptr (GFile) destination_directory = NULL;
864ee8
-    char *status;
864ee8
-
864ee8
-    if (compress_job->total_files == 1)
864ee8
-    {
864ee8
-        status = f (_("Compressed “%B” into “%B”"),
864ee8
-                    G_FILE (compress_job->source_files->data),
864ee8
-                    compress_job->output_file);
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        status = f (ngettext ("Compressed %'d file into “%B”",
864ee8
-                              "Compressed %'d files into “%B”",
864ee8
-                              compress_job->total_files),
864ee8
-                    compress_job->total_files,
864ee8
-                    compress_job->output_file);
864ee8
-    }
864ee8
-
864ee8
-    nautilus_progress_info_take_status (compress_job->common.progress,
864ee8
-                                        status);
864ee8
-
864ee8
-    nautilus_file_changes_queue_file_added (compress_job->output_file);
864ee8
-
864ee8
-    destination_directory = g_file_get_parent (compress_job->output_file);
864ee8
-    nautilus_progress_info_set_destination (compress_job->common.progress,
864ee8
-                                            destination_directory);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-compress_task_thread_func (GTask        *task,
864ee8
-                           gpointer      source_object,
864ee8
-                           gpointer      task_data,
864ee8
-                           GCancellable *cancellable)
864ee8
-{
864ee8
-    CompressJob *compress_job = task_data;
864ee8
-    SourceInfo source_info;
864ee8
-    g_autoptr (AutoarCompressor) compressor = NULL;
864ee8
-
864ee8
-    g_timer_start (compress_job->common.time);
864ee8
-
864ee8
-    nautilus_progress_info_start (compress_job->common.progress);
864ee8
-
864ee8
-    scan_sources (compress_job->source_files,
864ee8
-                  &source_info,
864ee8
-                  (CommonJob *) compress_job,
864ee8
-                  OP_KIND_COMPRESS);
864ee8
-
864ee8
-    compress_job->total_files = source_info.num_files;
864ee8
-    compress_job->total_size = source_info.num_bytes;
864ee8
-
864ee8
-    compressor = autoar_compressor_new (compress_job->source_files,
864ee8
-                                        compress_job->output_file,
864ee8
-                                        compress_job->format,
864ee8
-                                        compress_job->filter,
864ee8
-                                        FALSE);
864ee8
-
864ee8
-    autoar_compressor_set_output_is_dest (compressor, TRUE);
864ee8
-
864ee8
-    autoar_compressor_set_notify_interval (compressor,
864ee8
-                                           PROGRESS_NOTIFY_INTERVAL);
864ee8
-
864ee8
-    g_signal_connect (compressor, "progress",
864ee8
-                      G_CALLBACK (compress_job_on_progress), compress_job);
864ee8
-    g_signal_connect (compressor, "error",
864ee8
-                      G_CALLBACK (compress_job_on_error), compress_job);
864ee8
-    g_signal_connect (compressor, "completed",
864ee8
-                      G_CALLBACK (compress_job_on_completed), compress_job);
864ee8
-    autoar_compressor_start (compressor,
864ee8
-                             compress_job->common.cancellable);
864ee8
-
864ee8
-    compress_job->success = g_file_query_exists (compress_job->output_file,
864ee8
-                                                 NULL);
864ee8
-
864ee8
-    /* There is nothing to undo if the output was not created */
864ee8
-    if (compress_job->common.undo_info != NULL && !compress_job->success)
864ee8
-    {
864ee8
-        g_clear_object (&compress_job->common.undo_info);
864ee8
-    }
864ee8
-}
864ee8
-
864ee8
-void
864ee8
-nautilus_file_operations_compress (GList                  *files,
864ee8
-                                   GFile                  *output,
864ee8
-                                   AutoarFormat            format,
864ee8
-                                   AutoarFilter            filter,
864ee8
-                                   GtkWindow              *parent_window,
864ee8
-                                   NautilusCreateCallback  done_callback,
864ee8
-                                   gpointer                done_callback_data)
864ee8
-{
864ee8
-    g_autoptr (GTask) task = NULL;
864ee8
-    CompressJob *compress_job;
864ee8
-
864ee8
-    compress_job = op_job_new (CompressJob, parent_window);
864ee8
-    compress_job->source_files = g_list_copy_deep (files,
864ee8
-                                                   (GCopyFunc) g_object_ref,
864ee8
-                                                   NULL);
864ee8
-    compress_job->output_file = g_object_ref (output);
864ee8
-    compress_job->format = format;
864ee8
-    compress_job->filter = filter;
864ee8
-    compress_job->done_callback = done_callback;
864ee8
-    compress_job->done_callback_data = done_callback_data;
864ee8
-
864ee8
-    inhibit_power_manager ((CommonJob *) compress_job, _("Compressing Files"));
864ee8
-
864ee8
-    if (!nautilus_file_undo_manager_is_operating ())
864ee8
-    {
864ee8
-        compress_job->common.undo_info = nautilus_file_undo_info_compress_new (files,
864ee8
-                                                                               output,
864ee8
-                                                                               format,
864ee8
-                                                                               filter);
864ee8
-    }
864ee8
-
864ee8
-    task = g_task_new (NULL, compress_job->common.cancellable,
864ee8
-                       compress_task_done, compress_job);
864ee8
-    g_task_set_task_data (task, compress_job, NULL);
864ee8
-    g_task_run_in_thread (task, compress_task_thread_func);
864ee8
-}
864ee8
-
864ee8
 #if !defined (NAUTILUS_OMIT_SELF_CHECK)
864ee8
 
864ee8
 void
864ee8
diff --git a/src/nautilus-file-operations.h b/src/nautilus-file-operations.h
864ee8
index 31b782dba..7b8e7ad68 100644
864ee8
--- a/src/nautilus-file-operations.h
864ee8
+++ b/src/nautilus-file-operations.h
864ee8
@@ -26,7 +26,6 @@
864ee8
 
864ee8
 #include <gtk/gtk.h>
864ee8
 #include <gio/gio.h>
864ee8
-#include <gnome-autoar/gnome-autoar.h>
864ee8
 
864ee8
 
864ee8
 #define SECONDS_NEEDED_FOR_APROXIMATE_TRANSFER_RATE 1
864ee8
@@ -46,8 +45,6 @@ typedef void (* NautilusMountCallback)     (GVolume    *volume,
864ee8
 					    gboolean    success,
864ee8
 					    GObject    *callback_data_object);
864ee8
 typedef void (* NautilusUnmountCallback)   (gpointer    callback_data);
864ee8
-typedef void (* NautilusExtractCallback)   (GList    *outputs,
864ee8
-                                            gpointer  callback_data);
864ee8
 
864ee8
 /* FIXME: int copy_action should be an enum */
864ee8
 
864ee8
@@ -151,18 +148,5 @@ void nautilus_file_mark_desktop_file_trusted (GFile           *file,
864ee8
 					      gboolean          interactive,
864ee8
 					      NautilusOpCallback done_callback,
864ee8
 					      gpointer          done_callback_data);
864ee8
-void nautilus_file_operations_extract_files (GList                   *files,
864ee8
-                                             GFile                   *destination_directory,
864ee8
-                                             GtkWindow               *parent_window,
864ee8
-                                             NautilusExtractCallback  done_callback,
864ee8
-                                             gpointer                 done_callback_data);
864ee8
-void nautilus_file_operations_compress (GList                  *files,
864ee8
-                                        GFile                  *output,
864ee8
-                                        AutoarFormat            format,
864ee8
-                                        AutoarFilter            filter,
864ee8
-                                        GtkWindow              *parent_window,
864ee8
-                                        NautilusCreateCallback  done_callback,
864ee8
-                                        gpointer                done_callback_data);
864ee8
-
864ee8
 
864ee8
 #endif /* NAUTILUS_FILE_OPERATIONS_H */
864ee8
diff --git a/src/nautilus-file-undo-operations.c b/src/nautilus-file-undo-operations.c
864ee8
index 8005b92b6..2223d91f5 100644
864ee8
--- a/src/nautilus-file-undo-operations.c
864ee8
+++ b/src/nautilus-file-undo-operations.c
864ee8
@@ -2037,322 +2037,3 @@ nautilus_file_undo_info_ownership_new (NautilusFileUndoOp  op_type,
864ee8
     return NAUTILUS_FILE_UNDO_INFO (retval);
864ee8
 }
864ee8
 
864ee8
-/* extract */
864ee8
-G_DEFINE_TYPE (NautilusFileUndoInfoExtract, nautilus_file_undo_info_extract, NAUTILUS_TYPE_FILE_UNDO_INFO)
864ee8
-
864ee8
-struct _NautilusFileUndoInfoExtractDetails
864ee8
-{
864ee8
-    GList *sources;
864ee8
-    GFile *destination_directory;
864ee8
-    GList *outputs;
864ee8
-};
864ee8
-
864ee8
-static void
864ee8
-extract_callback (GList    *outputs,
864ee8
-                  gpointer  callback_data)
864ee8
-{
864ee8
-    NautilusFileUndoInfoExtract *self = NAUTILUS_FILE_UNDO_INFO_EXTRACT (callback_data);
864ee8
-    gboolean success;
864ee8
-
864ee8
-    nautilus_file_undo_info_extract_set_outputs (self, outputs);
864ee8
-
864ee8
-    success = self->priv->outputs != NULL;
864ee8
-
864ee8
-    file_undo_info_transfer_callback (NULL, success, self);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-extract_strings_func (NautilusFileUndoInfo  *info,
864ee8
-                      gchar                **undo_label,
864ee8
-                      gchar                **undo_description,
864ee8
-                      gchar                **redo_label,
864ee8
-                      gchar                **redo_description)
864ee8
-{
864ee8
-    NautilusFileUndoInfoExtract *self = NAUTILUS_FILE_UNDO_INFO_EXTRACT (info);
864ee8
-    gint total_sources;
864ee8
-    gint total_outputs;
864ee8
-
864ee8
-    *undo_label = g_strdup (_("_Undo Extract"));
864ee8
-    *redo_label = g_strdup (_("_Redo Extract"));
864ee8
-
864ee8
-    total_sources = g_list_length (self->priv->sources);
864ee8
-    total_outputs = g_list_length (self->priv->outputs);
864ee8
-
864ee8
-    if (total_outputs == 1)
864ee8
-    {
864ee8
-        GFile *output;
864ee8
-        g_autofree gchar *name = NULL;
864ee8
-
864ee8
-        output = self->priv->outputs->data;
864ee8
-        name = g_file_get_parse_name (output);
864ee8
-
864ee8
-        *undo_description = g_strdup_printf (_("Delete '%s'"), name);
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        *undo_description = g_strdup_printf (ngettext ("Delete %d extracted file",
864ee8
-                                                       "Delete %d extracted files",
864ee8
-                                                       total_outputs),
864ee8
-                                             total_outputs);
864ee8
-    }
864ee8
-
864ee8
-    if (total_sources == 1)
864ee8
-    {
864ee8
-        GFile *source;
864ee8
-        g_autofree gchar *name = NULL;
864ee8
-
864ee8
-        source = self->priv->sources->data;
864ee8
-        name = g_file_get_parse_name (source);
864ee8
-
864ee8
-        *redo_description = g_strdup_printf (_("Extract '%s'"), name);
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        *redo_description = g_strdup_printf (ngettext ("Extract %d file",
864ee8
-                                                       "Extract %d files",
864ee8
-                                                       total_sources),
864ee8
-                                             total_sources);
864ee8
-    }
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-extract_redo_func (NautilusFileUndoInfo *info,
864ee8
-                   GtkWindow            *parent_window)
864ee8
-{
864ee8
-    NautilusFileUndoInfoExtract *self = NAUTILUS_FILE_UNDO_INFO_EXTRACT (info);
864ee8
-
864ee8
-    nautilus_file_operations_extract_files (self->priv->sources,
864ee8
-                                            self->priv->destination_directory,
864ee8
-                                            parent_window,
864ee8
-                                            extract_callback,
864ee8
-                                            self);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-extract_undo_func (NautilusFileUndoInfo *info,
864ee8
-                   GtkWindow            *parent_window)
864ee8
-{
864ee8
-    NautilusFileUndoInfoExtract *self = NAUTILUS_FILE_UNDO_INFO_EXTRACT (info);
864ee8
-
864ee8
-    nautilus_file_operations_delete (self->priv->outputs, parent_window,
864ee8
-                                     file_undo_info_delete_callback, self);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-nautilus_file_undo_info_extract_init (NautilusFileUndoInfoExtract *self)
864ee8
-{
864ee8
-    self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, nautilus_file_undo_info_extract_get_type (),
864ee8
-                                              NautilusFileUndoInfoExtractDetails);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-nautilus_file_undo_info_extract_finalize (GObject *obj)
864ee8
-{
864ee8
-    NautilusFileUndoInfoExtract *self = NAUTILUS_FILE_UNDO_INFO_EXTRACT (obj);
864ee8
-
864ee8
-    g_object_unref (self->priv->destination_directory);
864ee8
-    g_list_free_full (self->priv->sources, g_object_unref);
864ee8
-    if (self->priv->outputs)
864ee8
-    {
864ee8
-        g_list_free_full (self->priv->outputs, g_object_unref);
864ee8
-    }
864ee8
-
864ee8
-    G_OBJECT_CLASS (nautilus_file_undo_info_extract_parent_class)->finalize (obj);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-nautilus_file_undo_info_extract_class_init (NautilusFileUndoInfoExtractClass *klass)
864ee8
-{
864ee8
-    GObjectClass *oclass = G_OBJECT_CLASS (klass);
864ee8
-    NautilusFileUndoInfoClass *iclass = NAUTILUS_FILE_UNDO_INFO_CLASS (klass);
864ee8
-
864ee8
-    oclass->finalize = nautilus_file_undo_info_extract_finalize;
864ee8
-
864ee8
-    iclass->undo_func = extract_undo_func;
864ee8
-    iclass->redo_func = extract_redo_func;
864ee8
-    iclass->strings_func = extract_strings_func;
864ee8
-
864ee8
-    g_type_class_add_private (klass, sizeof (NautilusFileUndoInfoExtractDetails));
864ee8
-}
864ee8
-
864ee8
-void
864ee8
-nautilus_file_undo_info_extract_set_outputs (NautilusFileUndoInfoExtract *self,
864ee8
-                                             GList                       *outputs)
864ee8
-{
864ee8
-    if (self->priv->outputs)
864ee8
-    {
864ee8
-        g_list_free_full (self->priv->outputs, g_object_unref);
864ee8
-    }
864ee8
-    self->priv->outputs = g_list_copy_deep (outputs,
864ee8
-                                            (GCopyFunc) g_object_ref,
864ee8
-                                            NULL);
864ee8
-}
864ee8
-
864ee8
-NautilusFileUndoInfo *
864ee8
-nautilus_file_undo_info_extract_new (GList *sources,
864ee8
-                                     GFile *destination_directory)
864ee8
-{
864ee8
-    NautilusFileUndoInfoExtract *self;
864ee8
-
864ee8
-    self = g_object_new (NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT,
864ee8
-                         "item-count", 1,
864ee8
-                         "op-type", NAUTILUS_FILE_UNDO_OP_EXTRACT,
864ee8
-                         NULL);
864ee8
-
864ee8
-    self->priv->sources = g_list_copy_deep (sources,
864ee8
-                                            (GCopyFunc) g_object_ref,
864ee8
-                                            NULL);
864ee8
-    self->priv->destination_directory = g_object_ref (destination_directory);
864ee8
-
864ee8
-    return NAUTILUS_FILE_UNDO_INFO (self);
864ee8
-}
864ee8
-
864ee8
-
864ee8
-/* compress */
864ee8
-G_DEFINE_TYPE (NautilusFileUndoInfoCompress, nautilus_file_undo_info_compress, NAUTILUS_TYPE_FILE_UNDO_INFO)
864ee8
-
864ee8
-struct _NautilusFileUndoInfoCompressDetails
864ee8
-{
864ee8
-    GList *sources;
864ee8
-    GFile *output;
864ee8
-    AutoarFormat format;
864ee8
-    AutoarFilter filter;
864ee8
-};
864ee8
-
864ee8
-static void
864ee8
-compress_callback (GFile    *new_file,
864ee8
-                   gboolean  success,
864ee8
-                   gpointer  callback_data)
864ee8
-{
864ee8
-    NautilusFileUndoInfoCompress *self = NAUTILUS_FILE_UNDO_INFO_COMPRESS (callback_data);
864ee8
-
864ee8
-    if (success)
864ee8
-    {
864ee8
-        g_object_unref (self->priv->output);
864ee8
-
864ee8
-        self->priv->output = g_object_ref (new_file);
864ee8
-    }
864ee8
-
864ee8
-    file_undo_info_transfer_callback (NULL, success, self);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-compress_strings_func (NautilusFileUndoInfo  *info,
864ee8
-                       gchar                **undo_label,
864ee8
-                       gchar                **undo_description,
864ee8
-                       gchar                **redo_label,
864ee8
-                       gchar                **redo_description)
864ee8
-{
864ee8
-    NautilusFileUndoInfoCompress *self = NAUTILUS_FILE_UNDO_INFO_COMPRESS (info);
864ee8
-    g_autofree gchar *output_name = NULL;
864ee8
-    gint sources_count;
864ee8
-
864ee8
-    output_name = g_file_get_parse_name (self->priv->output);
864ee8
-    *undo_description = g_strdup_printf (_("Delete '%s'"), output_name);
864ee8
-
864ee8
-    sources_count = g_list_length (self->priv->sources);
864ee8
-    if (sources_count == 1)
864ee8
-    {
864ee8
-        GFile *source;
864ee8
-        g_autofree gchar *source_name = NULL;
864ee8
-
864ee8
-        source = self->priv->sources->data;
864ee8
-        source_name = g_file_get_parse_name (source);
864ee8
-
864ee8
-        *redo_description = g_strdup_printf (_("Compress '%s'"), source_name);
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        *redo_description = g_strdup_printf (ngettext ("Compress %d file",
864ee8
-                                                       "Compress %d files",
864ee8
-                                                       sources_count),
864ee8
-                                             sources_count);
864ee8
-    }
864ee8
-
864ee8
-    *undo_label = g_strdup (_("_Undo Compress"));
864ee8
-    *redo_label = g_strdup (_("_Redo Compress"));
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-compress_redo_func (NautilusFileUndoInfo *info,
864ee8
-                    GtkWindow            *parent_window)
864ee8
-{
864ee8
-    NautilusFileUndoInfoCompress *self = NAUTILUS_FILE_UNDO_INFO_COMPRESS (info);
864ee8
-
864ee8
-    nautilus_file_operations_compress (self->priv->sources,
864ee8
-                                       self->priv->output,
864ee8
-                                       self->priv->format,
864ee8
-                                       self->priv->filter,
864ee8
-                                       parent_window,
864ee8
-                                       compress_callback,
864ee8
-                                       self);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-compress_undo_func (NautilusFileUndoInfo *info,
864ee8
-                    GtkWindow            *parent_window)
864ee8
-{
864ee8
-    NautilusFileUndoInfoCompress *self = NAUTILUS_FILE_UNDO_INFO_COMPRESS (info);
864ee8
-    GList *files = NULL;
864ee8
-
864ee8
-    files = g_list_prepend (files, self->priv->output);
864ee8
-
864ee8
-    nautilus_file_operations_delete (files, parent_window,
864ee8
-                                     file_undo_info_delete_callback, self);
864ee8
-
864ee8
-    g_list_free (files);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-nautilus_file_undo_info_compress_init (NautilusFileUndoInfoCompress *self)
864ee8
-{
864ee8
-    self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, nautilus_file_undo_info_compress_get_type (),
864ee8
-                                              NautilusFileUndoInfoCompressDetails);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-nautilus_file_undo_info_compress_finalize (GObject *obj)
864ee8
-{
864ee8
-    NautilusFileUndoInfoCompress *self = NAUTILUS_FILE_UNDO_INFO_COMPRESS (obj);
864ee8
-
864ee8
-    g_list_free_full (self->priv->sources, g_object_unref);
864ee8
-    g_clear_object (&self->priv->output);
864ee8
-
864ee8
-    G_OBJECT_CLASS (nautilus_file_undo_info_compress_parent_class)->finalize (obj);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-nautilus_file_undo_info_compress_class_init (NautilusFileUndoInfoCompressClass *klass)
864ee8
-{
864ee8
-    GObjectClass *oclass = G_OBJECT_CLASS (klass);
864ee8
-    NautilusFileUndoInfoClass *iclass = NAUTILUS_FILE_UNDO_INFO_CLASS (klass);
864ee8
-
864ee8
-    oclass->finalize = nautilus_file_undo_info_compress_finalize;
864ee8
-
864ee8
-    iclass->undo_func = compress_undo_func;
864ee8
-    iclass->redo_func = compress_redo_func;
864ee8
-    iclass->strings_func = compress_strings_func;
864ee8
-
864ee8
-    g_type_class_add_private (klass, sizeof (NautilusFileUndoInfoCompressDetails));
864ee8
-}
864ee8
-
864ee8
-NautilusFileUndoInfo *
864ee8
-nautilus_file_undo_info_compress_new (GList        *sources,
864ee8
-                                      GFile        *output,
864ee8
-                                      AutoarFormat  format,
864ee8
-                                      AutoarFilter  filter)
864ee8
-{
864ee8
-    NautilusFileUndoInfoCompress *self;
864ee8
-
864ee8
-    self = g_object_new (NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS,
864ee8
-                         "item-count", 1,
864ee8
-                         "op-type", NAUTILUS_FILE_UNDO_OP_COMPRESS,
864ee8
-                         NULL);
864ee8
-
864ee8
-    self->priv->sources = g_list_copy_deep (sources, (GCopyFunc) g_object_ref, NULL);
864ee8
-    self->priv->output = g_object_ref (output);
864ee8
-    self->priv->format = format;
864ee8
-    self->priv->filter = filter;
864ee8
-
864ee8
-    return NAUTILUS_FILE_UNDO_INFO (self);
864ee8
-}
864ee8
diff --git a/src/nautilus-file-undo-operations.h b/src/nautilus-file-undo-operations.h
864ee8
index 630443f10..8a153c32d 100644
864ee8
--- a/src/nautilus-file-undo-operations.h
864ee8
+++ b/src/nautilus-file-undo-operations.h
864ee8
@@ -27,7 +27,6 @@
864ee8
 
864ee8
 #include <gio/gio.h>
864ee8
 #include <gtk/gtk.h>
864ee8
-#include <gnome-autoar/gnome-autoar.h>
864ee8
 
864ee8
 typedef enum {
864ee8
 	NAUTILUS_FILE_UNDO_OP_COPY,
864ee8
@@ -38,8 +37,6 @@ typedef enum {
864ee8
 	NAUTILUS_FILE_UNDO_OP_CREATE_EMPTY_FILE,
864ee8
 	NAUTILUS_FILE_UNDO_OP_CREATE_FILE_FROM_TEMPLATE,
864ee8
 	NAUTILUS_FILE_UNDO_OP_CREATE_FOLDER,
864ee8
-	NAUTILUS_FILE_UNDO_OP_EXTRACT,
864ee8
-	NAUTILUS_FILE_UNDO_OP_COMPRESS,
864ee8
 	NAUTILUS_FILE_UNDO_OP_MOVE_TO_TRASH,
864ee8
 	NAUTILUS_FILE_UNDO_OP_RESTORE_FROM_TRASH,
864ee8
 	NAUTILUS_FILE_UNDO_OP_CREATE_LINK,
864ee8
@@ -328,59 +325,4 @@ NautilusFileUndoInfo *nautilus_file_undo_info_ownership_new (NautilusFileUndoOp
864ee8
 							     const char         *current_data,
864ee8
 							     const char         *new_data);
864ee8
 
864ee8
-/* extract */
864ee8
-#define NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT         (nautilus_file_undo_info_extract_get_type ())
864ee8
-#define NAUTILUS_FILE_UNDO_INFO_EXTRACT(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT, NautilusFileUndoInfoExtract))
864ee8
-#define NAUTILUS_FILE_UNDO_INFO_EXTRACT_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT, NautilusFileUndoInfoExtractClass))
864ee8
-#define NAUTILUS_IS_FILE_UNDO_INFO_EXTRACT(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT))
864ee8
-#define NAUTILUS_IS_FILE_UNDO_INFO_EXTRACT_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT))
864ee8
-#define NAUTILUS_FILE_UNDO_INFO_EXTRACT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), NAUTILUS_TYPE_FILE_UNDO_INFO_EXTRACT, NautilusFileUndoInfoExtractClass))
864ee8
-
864ee8
-typedef struct _NautilusFileUndoInfoExtract        NautilusFileUndoInfoExtract;
864ee8
-typedef struct _NautilusFileUndoInfoExtractClass   NautilusFileUndoInfoExtractClass;
864ee8
-typedef struct _NautilusFileUndoInfoExtractDetails NautilusFileUndoInfoExtractDetails;
864ee8
-
864ee8
-struct _NautilusFileUndoInfoExtract {
864ee8
-        NautilusFileUndoInfo parent;
864ee8
-        NautilusFileUndoInfoExtractDetails *priv;
864ee8
-};
864ee8
-
864ee8
-struct _NautilusFileUndoInfoExtractClass {
864ee8
-        NautilusFileUndoInfoClass parent_class;
864ee8
-};
864ee8
-
864ee8
-GType nautilus_file_undo_info_extract_get_type (void) G_GNUC_CONST;
864ee8
-NautilusFileUndoInfo * nautilus_file_undo_info_extract_new (GList *sources,
864ee8
-                                                            GFile *destination_directory);
864ee8
-void nautilus_file_undo_info_extract_set_outputs (NautilusFileUndoInfoExtract *self,
864ee8
-                                                  GList                       *outputs);
864ee8
-
864ee8
-/* compress */
864ee8
-#define NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS         (nautilus_file_undo_info_compress_get_type ())
864ee8
-#define NAUTILUS_FILE_UNDO_INFO_COMPRESS(o)           (G_TYPE_CHECK_INSTANCE_CAST ((o), NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS, NautilusFileUndoInfoCompress))
864ee8
-#define NAUTILUS_FILE_UNDO_INFO_COMPRESS_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS, NautilusFileUndoInfoCompressClass))
864ee8
-#define NAUTILUS_IS_FILE_UNDO_INFO_COMPRESS(o)        (G_TYPE_CHECK_INSTANCE_TYPE ((o), NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS))
864ee8
-#define NAUTILUS_IS_FILE_UNDO_INFO_COMPRESS_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS))
864ee8
-#define NAUTILUS_FILE_UNDO_INFO_COMPRESS_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), NAUTILUS_TYPE_FILE_UNDO_INFO_COMPRESS, NautilusFileUndoInfoCompressClass))
864ee8
-
864ee8
-typedef struct _NautilusFileUndoInfoCompress        NautilusFileUndoInfoCompress;
864ee8
-typedef struct _NautilusFileUndoInfoCompressClass   NautilusFileUndoInfoCompressClass;
864ee8
-typedef struct _NautilusFileUndoInfoCompressDetails NautilusFileUndoInfoCompressDetails;
864ee8
-
864ee8
-struct _NautilusFileUndoInfoCompress {
864ee8
-        NautilusFileUndoInfo parent;
864ee8
-        NautilusFileUndoInfoCompressDetails *priv;
864ee8
-};
864ee8
-
864ee8
-struct _NautilusFileUndoInfoCompressClass {
864ee8
-        NautilusFileUndoInfoClass parent_class;
864ee8
-};
864ee8
-
864ee8
-GType nautilus_file_undo_info_compress_get_type (void) G_GNUC_CONST;
864ee8
-NautilusFileUndoInfo * nautilus_file_undo_info_compress_new (GList        *sources,
864ee8
-                                                             GFile        *output,
864ee8
-                                                             AutoarFormat  format,
864ee8
-                                                             AutoarFilter  filter);
864ee8
-
864ee8
-
864ee8
 #endif /* __NAUTILUS_FILE_UNDO_OPERATIONS_H__ */
864ee8
diff --git a/src/nautilus-file.c b/src/nautilus-file.c
864ee8
index bb7948da0..d7df1d9fc 100644
864ee8
--- a/src/nautilus-file.c
864ee8
+++ b/src/nautilus-file.c
864ee8
@@ -51,7 +51,6 @@
864ee8
 #include <glib/gstdio.h>
864ee8
 #include <gio/gio.h>
864ee8
 #include <glib.h>
864ee8
-#include <gnome-autoar/gnome-autoar.h>
864ee8
 #include <gdesktop-enums.h>
864ee8
 #include <libnautilus-extension/nautilus-file-info.h>
864ee8
 #include <libnautilus-extension/nautilus-extension-private.h>
864ee8
@@ -8169,11 +8168,38 @@ real_is_special_link (NautilusFile *file)
864ee8
 gboolean
864ee8
 nautilus_file_is_archive (NautilusFile *file)
864ee8
 {
864ee8
-    g_autofree char *mime_type = NULL;
864ee8
-
864ee8
-    mime_type = nautilus_file_get_mime_type (file);
864ee8
-
864ee8
-    return autoar_check_mime_type_supported (mime_type);
864ee8
+	char *mime_type;
864ee8
+	int i;
864ee8
+	static const char * archive_mime_types[] = { "application/x-gtar",
864ee8
+						     "application/x-zip",
864ee8
+						     "application/x-zip-compressed",
864ee8
+						     "application/zip",
864ee8
+						     "application/x-zip",
864ee8
+						     "application/x-tar",
864ee8
+						     "application/x-7z-compressed",
864ee8
+						     "application/x-rar",
864ee8
+						     "application/x-rar-compressed",
864ee8
+						     "application/x-jar",
864ee8
+						     "application/x-java-archive",
864ee8
+						     "application/x-war",
864ee8
+						     "application/x-ear",
864ee8
+						     "application/x-arj",
864ee8
+						     "application/x-gzip",
864ee8
+						     "application/x-bzip-compressed-tar",
864ee8
+						     "application/x-compressed-tar" };
864ee8
+
864ee8
+	g_return_val_if_fail (file != NULL, FALSE);
864ee8
+
864ee8
+	mime_type = nautilus_file_get_mime_type (file);
864ee8
+	for (i = 0; i < G_N_ELEMENTS (archive_mime_types); i++) {
864ee8
+		if (!strcmp (mime_type, archive_mime_types[i])) {
864ee8
+			g_free (mime_type);
864ee8
+			return TRUE;
864ee8
+		}
864ee8
+	}
864ee8
+	g_free (mime_type);
864ee8
+
864ee8
+	return FALSE;
864ee8
 }
864ee8
 
864ee8
 
864ee8
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
864ee8
index 721682f4b..7caee9b5b 100644
864ee8
--- a/src/nautilus-files-view.c
864ee8
+++ b/src/nautilus-files-view.c
864ee8
@@ -58,7 +58,6 @@
864ee8
 #include <glib/gi18n.h>
864ee8
 #include <glib/gstdio.h>
864ee8
 #include <gio/gio.h>
864ee8
-#include <gnome-autoar/gnome-autoar.h>
864ee8
 #include <math.h>
864ee8
 #include <string.h>
864ee8
 #include <sys/types.h>
864ee8
@@ -85,7 +84,6 @@
864ee8
 #include "nautilus-file-name-widget-controller.h"
864ee8
 #include "nautilus-rename-file-popover-controller.h"
864ee8
 #include "nautilus-new-folder-dialog-controller.h"
864ee8
-#include "nautilus-compress-dialog-controller.h"
864ee8
 #include "nautilus-global-preferences.h"
864ee8
 #include "nautilus-link.h"
864ee8
 #include "nautilus-metadata.h"
864ee8
@@ -182,7 +180,6 @@ struct NautilusFilesViewDetails
864ee8
 
864ee8
     NautilusRenameFilePopoverController *rename_file_controller;
864ee8
     NautilusNewFolderDialogController *new_folder_controller;
864ee8
-    NautilusCompressDialogController *compress_controller;
864ee8
 
864ee8
     gboolean supports_zooming;
864ee8
 
864ee8
@@ -319,12 +316,6 @@ static void     nautilus_files_view_select_file (NautilusFilesView *view,
864ee8
 
864ee8
 static void     update_templates_directory (NautilusFilesView *view);
864ee8
 
864ee8
-static void     extract_files (NautilusFilesView *view,
864ee8
-                               GList             *files,
864ee8
-                               GFile             *destination_directory);
864ee8
-static void     extract_files_to_chosen_location (NautilusFilesView *view,
864ee8
-                                                  GList             *files);
864ee8
-
864ee8
 static void     nautilus_files_view_check_empty_states (NautilusFilesView *view);
864ee8
 
864ee8
 static gboolean nautilus_files_view_is_searching (NautilusView *view);
864ee8
@@ -697,16 +688,6 @@ nautilus_files_view_supports_creating_files (NautilusFilesView *view)
864ee8
 }
864ee8
 
864ee8
 static gboolean
864ee8
-nautilus_files_view_supports_extract_here (NautilusFilesView *view)
864ee8
-{
864ee8
-    g_return_val_if_fail (NAUTILUS_IS_FILES_VIEW (view), FALSE);
864ee8
-
864ee8
-    return nautilus_files_view_supports_creating_files (view)
864ee8
-           && !nautilus_directory_is_remote (view->details->model)
864ee8
-           && !nautilus_view_is_searching (NAUTILUS_VIEW (view));
864ee8
-}
864ee8
-
864ee8
-static gboolean
864ee8
 nautilus_files_view_is_empty (NautilusFilesView *view)
864ee8
 {
864ee8
     g_return_val_if_fail (NAUTILUS_IS_FILES_VIEW (view), FALSE);
864ee8
@@ -1143,44 +1124,17 @@ nautilus_files_view_activate_files (NautilusFilesView       *view,
864ee8
                                     NautilusWindowOpenFlags  flags,
864ee8
                                     gboolean                 confirm_multiple)
864ee8
 {
864ee8
-    GList *files_to_extract;
864ee8
-    GList *files_to_activate;
864ee8
     char *path;
864ee8
 
864ee8
-    files_to_extract = nautilus_file_list_filter (files,
864ee8
-                                                  &files_to_activate,
864ee8
-                                                  (NautilusFileFilterFunc) nautilus_mime_file_extracts,
864ee8
-                                                  NULL);
864ee8
-
864ee8
-    if (nautilus_files_view_supports_extract_here (view))
864ee8
-    {
864ee8
-        g_autoptr (GFile) location = NULL;
864ee8
-        g_autoptr (GFile) parent = NULL;
864ee8
-
864ee8
-        location = nautilus_file_get_location (NAUTILUS_FILE (g_list_first (files)->data));
864ee8
-        /* Get a parent from a random file. We assume all files has a common parent.
864ee8
-         * But don't assume the parent is the view location, since that's not the
864ee8
-         * case in list view when expand-folder setting is set
864ee8
-         */
864ee8
-        parent = g_file_get_parent (location);
864ee8
-        extract_files (view, files_to_extract, parent);
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        extract_files_to_chosen_location (view, files_to_extract);
864ee8
-    }
864ee8
-
864ee8
     path = get_view_directory (view);
864ee8
     nautilus_mime_activate_files (nautilus_files_view_get_containing_window (view),
864ee8
                                   view->details->slot,
864ee8
-                                  files_to_activate,
864ee8
+                                  files,
864ee8
                                   path,
864ee8
                                   flags,
864ee8
                                   confirm_multiple);
864ee8
 
864ee8
     g_free (path);
864ee8
-    g_list_free (files_to_extract);
864ee8
-    g_list_free (files_to_activate);
864ee8
 }
864ee8
 
864ee8
 static void
864ee8
@@ -1190,35 +1144,6 @@ nautilus_files_view_activate_file (NautilusFilesView       *view,
864ee8
 {
864ee8
     char *path;
864ee8
 
864ee8
-    if (nautilus_mime_file_extracts (file))
864ee8
-    {
864ee8
-        GList *files = NULL;
864ee8
-
864ee8
-        files = g_list_prepend (files, file);
864ee8
-
864ee8
-        if (nautilus_files_view_supports_extract_here (view))
864ee8
-        {
864ee8
-            g_autoptr (GFile) location = NULL;
864ee8
-            g_autoptr (GFile) parent = NULL;
864ee8
-
864ee8
-            location = nautilus_file_get_location (file);
864ee8
-            /* Get a parent from a random file. We assume all files has a common parent.
864ee8
-             * But don't assume the parent is the view location, since that's not the
864ee8
-             * case in list view when expand-folder setting is set
864ee8
-             */
864ee8
-            parent = g_file_get_parent (location);
864ee8
-            extract_files (view, files, parent);
864ee8
-        }
864ee8
-        else
864ee8
-        {
864ee8
-            extract_files_to_chosen_location (view, files);
864ee8
-        }
864ee8
-
864ee8
-        g_list_free (files);
864ee8
-
864ee8
-        return;
864ee8
-    }
864ee8
-
864ee8
     path = get_view_directory (view);
864ee8
     nautilus_mime_activate_file (nautilus_files_view_get_containing_window (view),
864ee8
                                  view->details->slot,
864ee8
@@ -1990,215 +1915,6 @@ nautilus_files_view_new_folder_dialog_new (NautilusFilesView *view,
864ee8
     nautilus_directory_unref (containing_directory);
864ee8
 }
864ee8
 
864ee8
-typedef struct
864ee8
-{
864ee8
-    NautilusFilesView *view;
864ee8
-    GHashTable *added_locations;
864ee8
-} CompressData;
864ee8
-
864ee8
-static void
864ee8
-compress_done (GFile    *new_file,
864ee8
-               gboolean  success,
864ee8
-               gpointer  user_data)
864ee8
-{
864ee8
-    CompressData *data;
864ee8
-    NautilusFilesView *view;
864ee8
-    NautilusFile *file;
864ee8
-
864ee8
-    data = user_data;
864ee8
-    view = data->view;
864ee8
-
864ee8
-    if (view == NULL)
864ee8
-    {
864ee8
-        goto out;
864ee8
-    }
864ee8
-
864ee8
-    g_signal_handlers_disconnect_by_func (view,
864ee8
-                                          G_CALLBACK (track_newly_added_locations),
864ee8
-                                          data->added_locations);
864ee8
-
864ee8
-    if (!success)
864ee8
-    {
864ee8
-        goto out;
864ee8
-    }
864ee8
-
864ee8
-    file = nautilus_file_get (new_file);
864ee8
-
864ee8
-    if (g_hash_table_contains (data->added_locations, new_file))
864ee8
-    {
864ee8
-        /* The file was already added */
864ee8
-        nautilus_files_view_select_file (view, file);
864ee8
-        nautilus_files_view_reveal_selection (view);
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        g_hash_table_insert (view->details->pending_reveal,
864ee8
-                             file,
864ee8
-                             GUINT_TO_POINTER (TRUE));
864ee8
-    }
864ee8
-
864ee8
-    nautilus_file_unref (file);
864ee8
-out:
864ee8
-    g_hash_table_destroy (data->added_locations);
864ee8
-
864ee8
-    if (data->view != NULL)
864ee8
-    {
864ee8
-        g_object_remove_weak_pointer (G_OBJECT (data->view),
864ee8
-                                      (gpointer *) &data->view);
864ee8
-    }
864ee8
-
864ee8
-    g_free (data);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *controller,
864ee8
-                                             gpointer                          user_data)
864ee8
-{
864ee8
-    NautilusFilesView *view;
864ee8
-    g_autofree gchar *name = NULL;
864ee8
-    GList *selection;
864ee8
-    GList *source_files = NULL;
864ee8
-    GList *l;
864ee8
-    CompressData *data;
864ee8
-    g_autoptr (GFile) output = NULL;
864ee8
-    g_autoptr (GFile) parent = NULL;
864ee8
-    NautilusCompressionFormat compression_format;
864ee8
-    AutoarFormat format;
864ee8
-    AutoarFilter filter;
864ee8
-
864ee8
-    view = NAUTILUS_FILES_VIEW (user_data);
864ee8
-
864ee8
-    selection = nautilus_files_view_get_selection_for_file_transfer (view);
864ee8
-
864ee8
-    for (l = selection; l != NULL; l = l->next)
864ee8
-    {
864ee8
-        source_files = g_list_prepend (source_files,
864ee8
-                                       nautilus_file_get_location (l->data));
864ee8
-    }
864ee8
-    source_files = g_list_reverse (source_files);
864ee8
-
864ee8
-    name = nautilus_file_name_widget_controller_get_new_name (controller);
864ee8
-    /* Get a parent from a random file. We assume all files has a common parent.
864ee8
-     * But don't assume the parent is the view location, since that's not the
864ee8
-     * case in list view when expand-folder setting is set
864ee8
-     */
864ee8
-    parent = g_file_get_parent (G_FILE (g_list_first (source_files)->data));
864ee8
-    output = g_file_get_child (parent, name);
864ee8
-
864ee8
-    data = g_new (CompressData, 1);
864ee8
-    data->view = view;
864ee8
-    data->added_locations = g_hash_table_new_full (g_file_hash, (GEqualFunc) g_file_equal,
864ee8
-                                                   g_object_unref, NULL);
864ee8
-    g_object_add_weak_pointer (G_OBJECT (data->view),
864ee8
-                               (gpointer *) &data->view);
864ee8
-
864ee8
-    g_signal_connect_data (view,
864ee8
-                           "add-file",
864ee8
-                           G_CALLBACK (track_newly_added_locations),
864ee8
-                           data->added_locations,
864ee8
-                           NULL,
864ee8
-                           G_CONNECT_AFTER);
864ee8
-
864ee8
-    compression_format = g_settings_get_enum (nautilus_compression_preferences,
864ee8
-                                              NAUTILUS_PREFERENCES_DEFAULT_COMPRESSION_FORMAT);
864ee8
-
864ee8
-    switch (compression_format)
864ee8
-    {
864ee8
-        case NAUTILUS_COMPRESSION_ZIP:
864ee8
-        {
864ee8
-            format = AUTOAR_FORMAT_ZIP;
864ee8
-            filter = AUTOAR_FILTER_NONE;
864ee8
-        }
864ee8
-        break;
864ee8
-
864ee8
-        case NAUTILUS_COMPRESSION_TAR_XZ:
864ee8
-        {
864ee8
-            format = AUTOAR_FORMAT_TAR;
864ee8
-            filter = AUTOAR_FILTER_XZ;
864ee8
-        }
864ee8
-        break;
864ee8
-
864ee8
-        case NAUTILUS_COMPRESSION_7ZIP:
864ee8
-        {
864ee8
-            format = AUTOAR_FORMAT_7ZIP;
864ee8
-            filter = AUTOAR_FILTER_NONE;
864ee8
-        }
864ee8
-        break;
864ee8
-
864ee8
-        default:
864ee8
-            g_assert_not_reached ();
864ee8
-    }
864ee8
-
864ee8
-    nautilus_file_operations_compress (source_files, output,
864ee8
-                                       format,
864ee8
-                                       filter,
864ee8
-                                       nautilus_files_view_get_containing_window (view),
864ee8
-                                       compress_done,
864ee8
-                                       data);
864ee8
-
864ee8
-    nautilus_file_list_free (selection);
864ee8
-    g_list_free_full (source_files, g_object_unref);
864ee8
-    g_clear_object (&view->details->compress_controller);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-compress_dialog_controller_on_cancelled (NautilusNewFolderDialogController *controller,
864ee8
-                                         gpointer                           user_data)
864ee8
-{
864ee8
-    NautilusFilesView *view;
864ee8
-
864ee8
-    view = NAUTILUS_FILES_VIEW (user_data);
864ee8
-
864ee8
-    g_clear_object (&view->details->compress_controller);
864ee8
-}
864ee8
-
864ee8
-
864ee8
-static void
864ee8
-nautilus_files_view_compress_dialog_new (NautilusFilesView *view)
864ee8
-{
864ee8
-    NautilusDirectory *containing_directory;
864ee8
-    GList *selection;
864ee8
-    g_autofree char *common_prefix = NULL;
864ee8
-
864ee8
-    if (view->details->compress_controller != NULL)
864ee8
-    {
864ee8
-        return;
864ee8
-    }
864ee8
-
864ee8
-    containing_directory = nautilus_directory_get_by_uri (nautilus_files_view_get_backing_uri (view));
864ee8
-
864ee8
-    selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
864ee8
-
864ee8
-    if (g_list_length (selection) == 1)
864ee8
-    {
864ee8
-        g_autofree char *display_name = NULL;
864ee8
-
864ee8
-        display_name = nautilus_file_get_display_name (selection->data);
864ee8
-
864ee8
-        common_prefix = eel_filename_strip_extension (display_name);
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        common_prefix = nautilus_get_common_filename_prefix (selection,
864ee8
-                                                             MIN_COMMON_FILENAME_PREFIX_LENGTH);
864ee8
-    }
864ee8
-
864ee8
-    view->details->compress_controller = nautilus_compress_dialog_controller_new (nautilus_files_view_get_containing_window (view),
864ee8
-                                                                                  containing_directory,
864ee8
-                                                                                  common_prefix);
864ee8
-
864ee8
-    g_signal_connect (view->details->compress_controller,
864ee8
-                      "name-accepted",
864ee8
-                      (GCallback) compress_dialog_controller_on_name_accepted,
864ee8
-                      view);
864ee8
-    g_signal_connect (view->details->compress_controller,
864ee8
-                      "cancelled",
864ee8
-                      (GCallback) compress_dialog_controller_on_cancelled,
864ee8
-                      view);
864ee8
-
864ee8
-    nautilus_file_list_free (selection);
864ee8
-}
864ee8
-
864ee8
 static void
864ee8
 nautilus_files_view_new_folder (NautilusFilesView *directory_view,
864ee8
                                 gboolean           with_selection)
864ee8
@@ -3061,7 +2777,6 @@ nautilus_files_view_finalize (GObject *object)
864ee8
     g_clear_object (&view->details->toolbar_menu_sections->extended_section);
864ee8
     g_clear_object (&view->details->rename_file_controller);
864ee8
     g_clear_object (&view->details->new_folder_controller);
864ee8
-    g_clear_object (&view->details->compress_controller);
864ee8
     g_free (view->details->toolbar_menu_sections);
864ee8
 
864ee8
     g_hash_table_destroy (view->details->non_ready_files);
864ee8
@@ -5964,273 +5679,6 @@ action_rename (GSimpleAction *action,
864ee8
     real_action_rename (NAUTILUS_FILES_VIEW (user_data));
864ee8
 }
864ee8
 
864ee8
-typedef struct
864ee8
-{
864ee8
-    NautilusFilesView *view;
864ee8
-    GHashTable *added_locations;
864ee8
-} ExtractData;
864ee8
-
864ee8
-static void
864ee8
-extract_done (GList    *outputs,
864ee8
-              gpointer  user_data)
864ee8
-{
864ee8
-    ExtractData *data;
864ee8
-    GList *l;
864ee8
-    gboolean all_files_acknowledged;
864ee8
-
864ee8
-    data = user_data;
864ee8
-
864ee8
-    if (data->view == NULL)
864ee8
-    {
864ee8
-        goto out;
864ee8
-    }
864ee8
-
864ee8
-    g_signal_handlers_disconnect_by_func (data->view,
864ee8
-                                          G_CALLBACK (track_newly_added_locations),
864ee8
-                                          data->added_locations);
864ee8
-
864ee8
-    if (outputs == NULL)
864ee8
-    {
864ee8
-        goto out;
864ee8
-    }
864ee8
-
864ee8
-    all_files_acknowledged = TRUE;
864ee8
-    for (l = outputs; l && all_files_acknowledged; l = l->next)
864ee8
-    {
864ee8
-        all_files_acknowledged = g_hash_table_contains (data->added_locations,
864ee8
-                                                        l->data);
864ee8
-    }
864ee8
-
864ee8
-    if (all_files_acknowledged)
864ee8
-    {
864ee8
-        GList *selection = NULL;
864ee8
-
864ee8
-        for (l = outputs; l != NULL; l = l->next)
864ee8
-        {
864ee8
-            selection = g_list_prepend (selection,
864ee8
-                                        nautilus_file_get (l->data));
864ee8
-        }
864ee8
-
864ee8
-        nautilus_files_view_set_selection (NAUTILUS_VIEW (data->view),
864ee8
-                                           selection);
864ee8
-        nautilus_files_view_reveal_selection (data->view);
864ee8
-
864ee8
-        nautilus_file_list_free (selection);
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        for (l = outputs; l != NULL; l = l->next)
864ee8
-        {
864ee8
-            gboolean acknowledged;
864ee8
-
864ee8
-            acknowledged = g_hash_table_contains (data->added_locations,
864ee8
-                                                  l->data);
864ee8
-
864ee8
-            g_hash_table_insert (data->view->details->pending_reveal,
864ee8
-                                 nautilus_file_get (l->data),
864ee8
-                                 GUINT_TO_POINTER (acknowledged));
864ee8
-        }
864ee8
-    }
864ee8
-out:
864ee8
-    g_hash_table_destroy (data->added_locations);
864ee8
-
864ee8
-    if (data->view != NULL)
864ee8
-    {
864ee8
-        g_object_remove_weak_pointer (G_OBJECT (data->view),
864ee8
-                                      (gpointer *) &data->view);
864ee8
-    }
864ee8
-
864ee8
-    g_free (data);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-extract_files (NautilusFilesView *view,
864ee8
-               GList             *files,
864ee8
-               GFile             *destination_directory)
864ee8
-{
864ee8
-    GList *locations = NULL;
864ee8
-    GList *l;
864ee8
-    gboolean extracting_to_current_directory;
864ee8
-
864ee8
-    if (files == NULL)
864ee8
-    {
864ee8
-        return;
864ee8
-    }
864ee8
-
864ee8
-    for (l = files; l != NULL; l = l->next)
864ee8
-    {
864ee8
-        locations = g_list_prepend (locations,
864ee8
-                                    nautilus_file_get_location (l->data));
864ee8
-    }
864ee8
-
864ee8
-    locations = g_list_reverse (locations);
864ee8
-
864ee8
-    extracting_to_current_directory = g_file_equal (destination_directory,
864ee8
-                                                    nautilus_view_get_location (NAUTILUS_VIEW (view)));
864ee8
-
864ee8
-    if (extracting_to_current_directory)
864ee8
-    {
864ee8
-        ExtractData *data;
864ee8
-
864ee8
-        data = g_new (ExtractData, 1);
864ee8
-        data->view = view;
864ee8
-        data->added_locations = g_hash_table_new_full (g_file_hash,
864ee8
-                                                       (GEqualFunc) g_file_equal,
864ee8
-                                                       g_object_unref, NULL);
864ee8
-
864ee8
-
864ee8
-        g_object_add_weak_pointer (G_OBJECT (data->view),
864ee8
-                                   (gpointer *) &data->view);
864ee8
-
864ee8
-        g_signal_connect_data (view,
864ee8
-                               "add-file",
864ee8
-                               G_CALLBACK (track_newly_added_locations),
864ee8
-                               data->added_locations,
864ee8
-                               NULL,
864ee8
-                               G_CONNECT_AFTER);
864ee8
-
864ee8
-        nautilus_file_operations_extract_files (locations,
864ee8
-                                                destination_directory,
864ee8
-                                                nautilus_files_view_get_containing_window (view),
864ee8
-                                                extract_done,
864ee8
-                                                data);
864ee8
-    }
864ee8
-    else
864ee8
-    {
864ee8
-        nautilus_file_operations_extract_files (locations,
864ee8
-                                                destination_directory,
864ee8
-                                                nautilus_files_view_get_containing_window (view),
864ee8
-                                                NULL,
864ee8
-                                                NULL);
864ee8
-    }
864ee8
-
864ee8
-    g_list_free_full (locations, g_object_unref);
864ee8
-}
864ee8
-
864ee8
-typedef struct
864ee8
-{
864ee8
-    NautilusFilesView *view;
864ee8
-    GList *files;
864ee8
-} ExtractToData;
864ee8
-
864ee8
-static void
864ee8
-on_extract_destination_dialog_response (GtkDialog *dialog,
864ee8
-                                        gint       response_id,
864ee8
-                                        gpointer   user_data)
864ee8
-{
864ee8
-    ExtractToData *data;
864ee8
-
864ee8
-    data = user_data;
864ee8
-
864ee8
-    if (response_id == GTK_RESPONSE_OK)
864ee8
-    {
864ee8
-        g_autoptr (GFile) destination_directory = NULL;
864ee8
-
864ee8
-        destination_directory = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
864ee8
-
864ee8
-        extract_files (data->view, data->files, destination_directory);
864ee8
-    }
864ee8
-
864ee8
-    gtk_widget_destroy (GTK_WIDGET (dialog));
864ee8
-    nautilus_file_list_free (data->files);
864ee8
-    g_free (data);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-extract_files_to_chosen_location (NautilusFilesView *view,
864ee8
-                                  GList             *files)
864ee8
-{
864ee8
-    ExtractToData *data;
864ee8
-    GtkWidget *dialog;
864ee8
-    g_autofree char *uri = NULL;
864ee8
-
864ee8
-    if (files == NULL)
864ee8
-    {
864ee8
-        return;
864ee8
-    }
864ee8
-
864ee8
-    data = g_new (ExtractToData, 1);
864ee8
-
864ee8
-    dialog = gtk_file_chooser_dialog_new (_("Select Extract Destination"),
864ee8
-                                          GTK_WINDOW (nautilus_files_view_get_window (view)),
864ee8
-                                          GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER,
864ee8
-                                          _("_Cancel"), GTK_RESPONSE_CANCEL,
864ee8
-                                          _("_Select"), GTK_RESPONSE_OK,
864ee8
-                                          NULL);
864ee8
-    gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (dialog), FALSE);
864ee8
-
864ee8
-    gtk_dialog_set_default_response (GTK_DIALOG (dialog),
864ee8
-                                     GTK_RESPONSE_OK);
864ee8
-
864ee8
-    gtk_window_set_destroy_with_parent (GTK_WINDOW (dialog), TRUE);
864ee8
-    gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
864ee8
-
864ee8
-    uri = nautilus_directory_get_uri (view->details->model);
864ee8
-    gtk_file_chooser_set_current_folder_uri (GTK_FILE_CHOOSER (dialog), uri);
864ee8
-
864ee8
-    data->view = view;
864ee8
-    data->files = nautilus_file_list_copy (files);
864ee8
-
864ee8
-    g_signal_connect (dialog, "response",
864ee8
-                      G_CALLBACK (on_extract_destination_dialog_response),
864ee8
-                      data);
864ee8
-
864ee8
-    gtk_widget_show_all (dialog);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-action_extract_here (GSimpleAction *action,
864ee8
-                     GVariant      *state,
864ee8
-                     gpointer       user_data)
864ee8
-{
864ee8
-    NautilusFilesView *view;
864ee8
-    GList *selection;
864ee8
-    g_autoptr (GFile) location = NULL;
864ee8
-    g_autoptr (GFile) parent = NULL;
864ee8
-
864ee8
-    view = NAUTILUS_FILES_VIEW (user_data);
864ee8
-
864ee8
-    selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
864ee8
-    location = nautilus_file_get_location (NAUTILUS_FILE (g_list_first (selection)->data));
864ee8
-    /* Get a parent from a random file. We assume all files has a common parent.
864ee8
-     * But don't assume the parent is the view location, since that's not the
864ee8
-     * case in list view when expand-folder setting is set
864ee8
-     */
864ee8
-    parent = g_file_get_parent (location);
864ee8
-
864ee8
-    extract_files (view, selection, parent);
864ee8
-
864ee8
-    nautilus_file_list_free (selection);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-action_extract_to (GSimpleAction *action,
864ee8
-                   GVariant      *state,
864ee8
-                   gpointer       user_data)
864ee8
-{
864ee8
-    NautilusFilesView *view;
864ee8
-    GList *selection;
864ee8
-
864ee8
-    view = NAUTILUS_FILES_VIEW (user_data);
864ee8
-
864ee8
-    selection = nautilus_view_get_selection (NAUTILUS_VIEW (view));
864ee8
-
864ee8
-    extract_files_to_chosen_location (view, selection);
864ee8
-
864ee8
-    nautilus_file_list_free (selection);
864ee8
-}
864ee8
-
864ee8
-static void
864ee8
-action_compress (GSimpleAction *action,
864ee8
-                 GVariant      *state,
864ee8
-                 gpointer       user_data)
864ee8
-{
864ee8
-    NautilusFilesView *view = user_data;
864ee8
-
864ee8
-    nautilus_files_view_compress_dialog_new (view);
864ee8
-}
864ee8
-
864ee8
-
864ee8
 #define BG_KEY_PRIMARY_COLOR      "primary-color"
864ee8
 #define BG_KEY_SECONDARY_COLOR    "secondary-color"
864ee8
 #define BG_KEY_COLOR_TYPE         "color-shading-type"
864ee8
@@ -6691,9 +6139,6 @@ const GActionEntry view_entries[] =
864ee8
     { "restore-from-trash", action_restore_from_trash},
864ee8
     { "paste-into", action_paste_files_into },
864ee8
     { "rename", action_rename},
864ee8
-    { "extract-here", action_extract_here },
864ee8
-    { "extract-to", action_extract_to },
864ee8
-    { "compress", action_compress },
864ee8
     { "properties", action_properties},
864ee8
     { "set-as-wallpaper", action_set_as_wallpaper },
864ee8
     { "mount-volume", action_mount_volume },
864ee8
@@ -6997,23 +6442,6 @@ all_in_trash (GList *files)
864ee8
     return TRUE;
864ee8
 }
864ee8
 
864ee8
-static gboolean
864ee8
-can_extract_all (GList *files)
864ee8
-{
864ee8
-    NautilusFile *file;
864ee8
-    GList *l;
864ee8
-
864ee8
-    for (l = files; l != NULL; l = l->next)
864ee8
-    {
864ee8
-        file = l->data;
864ee8
-        if (!nautilus_file_is_archive (file))
864ee8
-        {
864ee8
-            return FALSE;
864ee8
-        }
864ee8
-    }
864ee8
-    return TRUE;
864ee8
-}
864ee8
-
864ee8
 GActionGroup *
864ee8
 nautilus_files_view_get_action_group (NautilusFilesView *view)
864ee8
 {
864ee8
@@ -7040,8 +6468,6 @@ real_update_actions_state (NautilusFilesView *view)
864ee8
     gboolean can_trash_files;
864ee8
     gboolean can_copy_files;
864ee8
     gboolean can_paste_files_into;
864ee8
-    gboolean can_extract_files;
864ee8
-    gboolean can_extract_here;
864ee8
     gboolean item_opens_in_view;
864ee8
     gboolean is_read_only;
864ee8
     GAction *action;
864ee8
@@ -7054,7 +6480,6 @@ real_update_actions_state (NautilusFilesView *view)
864ee8
     gboolean show_detect_media;
864ee8
     gboolean settings_show_delete_permanently;
864ee8
     gboolean settings_show_create_link;
864ee8
-    gboolean settings_automatic_decompression;
864ee8
     GDriveStartStopType start_stop_type;
864ee8
 
864ee8
     view_action_group = view->details->view_action_group;
864ee8
@@ -7088,15 +6513,10 @@ real_update_actions_state (NautilusFilesView *view)
864ee8
     can_paste_files_into = (!selection_contains_recent &&
864ee8
                             selection_count == 1 &&
864ee8
                             can_paste_into_file (NAUTILUS_FILE (selection->data)));
864ee8
-    can_extract_files = selection_count != 0 &&
864ee8
-                        can_extract_all (selection);
864ee8
-    can_extract_here = nautilus_files_view_supports_extract_here (view);
864ee8
     settings_show_delete_permanently = g_settings_get_boolean (nautilus_preferences,
864ee8
                                                                NAUTILUS_PREFERENCES_SHOW_DELETE_PERMANENTLY);
864ee8
     settings_show_create_link = g_settings_get_boolean (nautilus_preferences,
864ee8
                                                         NAUTILUS_PREFERENCES_SHOW_CREATE_LINK);
864ee8
-    settings_automatic_decompression = g_settings_get_boolean (nautilus_preferences,
864ee8
-                                                               NAUTILUS_PREFERENCES_AUTOMATIC_DECOMPRESSION);
864ee8
 
864ee8
     /* Right click actions */
864ee8
     /* Selection menu actions */
864ee8
@@ -7132,25 +6552,6 @@ real_update_actions_state (NautilusFilesView *view)
864ee8
     }
864ee8
 
864ee8
     action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
864ee8
-                                         "extract-here");
864ee8
-    g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
864ee8
-                                 can_extract_files &&
864ee8
-                                 !settings_automatic_decompression &&
864ee8
-                                 can_extract_here);
864ee8
-
864ee8
-    action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
864ee8
-                                         "extract-to");
864ee8
-    g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
864ee8
-                                 can_extract_files &&
864ee8
-                                 (!settings_automatic_decompression ||
864ee8
-                                  can_extract_here));
864ee8
-
864ee8
-    action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
864ee8
-                                         "compress");
864ee8
-    g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
864ee8
-                                 can_create_files && can_copy_files);
864ee8
-
864ee8
-    action = g_action_map_lookup_action (G_ACTION_MAP (view_action_group),
864ee8
                                          "open-item-location");
864ee8
 
864ee8
     g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
864ee8
@@ -7417,7 +6818,6 @@ update_selection_menu (NautilusFilesView *view)
864ee8
     gint selection_count;
864ee8
     gboolean show_app;
864ee8
     gboolean show_run;
864ee8
-    gboolean show_extract;
864ee8
     gboolean item_opens_in_view;
864ee8
     gchar *item_label;
864ee8
     GAppInfo *app;
864ee8
@@ -7455,17 +6855,13 @@ update_selection_menu (NautilusFilesView *view)
864ee8
     g_free (item_label);
864ee8
 
864ee8
     /* Open With <App> menu item */
864ee8
-    show_extract = show_app = show_run = item_opens_in_view = selection_count != 0;
864ee8
+    show_app = show_run = item_opens_in_view = selection_count != 0;
864ee8
     for (l = selection; l != NULL; l = l->next)
864ee8
     {
864ee8
         NautilusFile *file;
864ee8
 
864ee8
         file = NAUTILUS_FILE (l->data);
864ee8
 
864ee8
-        if (!nautilus_mime_file_extracts (file))
864ee8
-        {
864ee8
-            show_extract = FALSE;
864ee8
-        }
864ee8
 
864ee8
         if (!nautilus_mime_file_opens_in_external_app (file))
864ee8
         {
864ee8
@@ -7482,7 +6878,7 @@ update_selection_menu (NautilusFilesView *view)
864ee8
             item_opens_in_view = FALSE;
864ee8
         }
864ee8
 
864ee8
-        if (!show_extract && !show_app && !show_run && !item_opens_in_view)
864ee8
+        if (!show_app && !show_run && !item_opens_in_view)
864ee8
         {
864ee8
             break;
864ee8
         }
864ee8
@@ -7515,12 +6911,6 @@ update_selection_menu (NautilusFilesView *view)
864ee8
     {
864ee8
         item_label = g_strdup (_("Run"));
864ee8
     }
864ee8
-    else if (show_extract)
864ee8
-    {
864ee8
-        item_label = nautilus_files_view_supports_extract_here (view) ?
864ee8
-                     g_strdup (_("Extract Here")) :
864ee8
-                     g_strdup (_("Extract to…"));
864ee8
-    }
864ee8
     else
864ee8
     {
864ee8
         item_label = g_strdup (_("Open"));
864ee8
diff --git a/src/nautilus-mime-actions.c b/src/nautilus-mime-actions.c
864ee8
index 3f7033baa..796dabbe1 100644
864ee8
--- a/src/nautilus-mime-actions.c
864ee8
+++ b/src/nautilus-mime-actions.c
864ee8
@@ -54,7 +54,6 @@ typedef enum
864ee8
     ACTIVATION_ACTION_LAUNCH_IN_TERMINAL,
864ee8
     ACTIVATION_ACTION_OPEN_IN_VIEW,
864ee8
     ACTIVATION_ACTION_OPEN_IN_APPLICATION,
864ee8
-    ACTIVATION_ACTION_EXTRACT,
864ee8
     ACTIVATION_ACTION_DO_NOTHING,
864ee8
 } ActivationAction;
864ee8
 
864ee8
@@ -716,14 +715,6 @@ get_activation_action (NautilusFile *file)
864ee8
 {
864ee8
     ActivationAction action;
864ee8
     char *activation_uri;
864ee8
-    gboolean can_extract;
864ee8
-    can_extract = g_settings_get_boolean (nautilus_preferences,
864ee8
-                                          NAUTILUS_PREFERENCES_AUTOMATIC_DECOMPRESSION);
864ee8
-
864ee8
-    if (can_extract && nautilus_file_is_archive (file))
864ee8
-    {
864ee8
-        return ACTIVATION_ACTION_EXTRACT;
864ee8
-    }
864ee8
 
864ee8
     if (nautilus_file_is_nautilus_link (file))
864ee8
     {
864ee8
@@ -772,12 +763,6 @@ get_activation_action (NautilusFile *file)
864ee8
 }
864ee8
 
864ee8
 gboolean
864ee8
-nautilus_mime_file_extracts (NautilusFile *file)
864ee8
-{
864ee8
-    return get_activation_action (file) == ACTIVATION_ACTION_EXTRACT;
864ee8
-}
864ee8
-
864ee8
-gboolean
864ee8
 nautilus_mime_file_launches (NautilusFile *file)
864ee8
 {
864ee8
     ActivationAction activation_action;
864ee8
@@ -1712,13 +1697,6 @@ activate_files (ActivateParameters *parameters)
864ee8
                 }
864ee8
                 break;
864ee8
 
864ee8
-            case ACTIVATION_ACTION_EXTRACT:
864ee8
-                {
864ee8
-                    /* Extraction of files should be handled in the view */
864ee8
-                    g_assert_not_reached ();
864ee8
-                }
864ee8
-                break;
864ee8
-
864ee8
             case ACTIVATION_ACTION_ASK:
864ee8
                 {
864ee8
                     g_assert_not_reached ();
864ee8
@@ -2475,6 +2453,7 @@ nautilus_mime_activate_files (GtkWindow               *parent_window,
864ee8
     }
864ee8
 
864ee8
 
864ee8
+    g_print ("number of files %d\n", g_list_length (parameters->locations));
864ee8
     for (l = parameters->locations; l != NULL; l = next)
864ee8
     {
864ee8
         location = l->data;
864ee8
-- 
864ee8
2.12.0
864ee8