|
|
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 |
|