import nautilus-40.2-3.el9_b

This commit is contained in:
CentOS Sources 2021-11-02 11:26:21 -04:00 committed by Stepan Oksanichenko
parent 9e7351a54f
commit 2f8f1dcd64
8 changed files with 1992 additions and 61 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/nautilus-40.1.tar.xz
SOURCES/nautilus-40.2.tar.xz

View File

@ -1 +1 @@
72aee7242696f687fcd8f774d00e90b537f9ca39 SOURCES/nautilus-40.1.tar.xz
c1b959b40074dd0e8e2df8289c61a3abf5fa8d5a SOURCES/nautilus-40.2.tar.xz

View File

@ -1,53 +0,0 @@
From 3e03a8b05258cf88bd61c61e3ac599103d464b38 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Ant=C3=B3nio=20Fernandes?= <antoniof@gnome.org>
Date: Sat, 1 May 2021 23:54:43 +0100
Subject: [PATCH] files-view: Set PWD to current dir to run scripts
When running an executable text file as a program, it's reasonable to
expect that the directory currently displayed by the file browser
becomes the current working directory for that program. This used to be
handled correctly by the activation action.
While taking "Run as a Program" out of activation into a standalone
action, this behavior was left behind.
Let's add it back to the standalone action to fix the regression.
Fixes https://gitlab.gnome.org/GNOME/nautilus/-/issues/1842
---
src/nautilus-files-view.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 250c37264..e027f10e0 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -6619,6 +6619,7 @@ action_run_in_terminal (GSimpleAction *action,
{
NautilusFilesView *view;
g_autolist (NautilusFile) selection = NULL;
+ g_autofree char *old_working_dir = NULL;
g_autofree char *uri = NULL;
g_autofree char *executable_path = NULL;
g_autofree char *quoted_path = NULL;
@@ -6636,6 +6637,8 @@ action_run_in_terminal (GSimpleAction *action,
return;
}
+ old_working_dir = change_to_view_directory (view);
+
uri = nautilus_file_get_activation_uri (NAUTILUS_FILE (selection->data));
executable_path = g_filename_from_uri (uri, NULL, NULL);
quoted_path = g_shell_quote (executable_path);
@@ -6646,6 +6649,8 @@ action_run_in_terminal (GSimpleAction *action,
DEBUG ("Launching in terminal %s", quoted_path);
nautilus_launch_application_from_command (screen, quoted_path, TRUE, NULL);
+
+ g_chdir (old_working_dir);
}
#define BG_KEY_PRIMARY_COLOR "primary-color"
--
GitLab

View File

@ -0,0 +1,611 @@
From 98c79d46ab05bd86fc1309d9ae560edc19f62071 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Fri, 30 Jul 2021 10:52:55 +0200
Subject: [PATCH] compress-dialog: Add support for encrypted .zip
Currently, it is not possible to create encrypted archives over
Nautilus. Let's add support for encrypted .zip files to not have
to install a dedicated archive manager.
Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/822
---
data/org.gnome.nautilus.gschema.xml | 1 +
meson.build | 2 +-
src/nautilus-compress-dialog-controller.c | 136 +++++++++++++++++++
src/nautilus-compress-dialog-controller.h | 1 +
src/nautilus-file-operations.c | 8 +-
src/nautilus-file-operations.h | 1 +
src/nautilus-file-undo-operations.c | 7 +-
src/nautilus-file-undo-operations.h | 3 +-
src/nautilus-files-view.c | 10 ++
src/nautilus-global-preferences.h | 3 +-
src/resources/css/nautilus.css | 9 ++
src/resources/ui/nautilus-compress-dialog.ui | 57 ++++++++
12 files changed, 233 insertions(+), 5 deletions(-)
diff --git a/data/org.gnome.nautilus.gschema.xml b/data/org.gnome.nautilus.gschema.xml
index 3f89466de..7585be8cd 100644
--- a/data/org.gnome.nautilus.gschema.xml
+++ b/data/org.gnome.nautilus.gschema.xml
@@ -65,6 +65,7 @@
<value value="0" nick="zip"/>
<value value="1" nick="tar.xz"/>
<value value="2" nick="7z"/>
+ <value value="3" nick="encrypted_zip"/>
</enum>
<schema path="/org/gnome/nautilus/" id="org.gnome.nautilus" gettext-domain="nautilus">
diff --git a/meson.build b/meson.build
index d5316475d..446b25614 100644
--- a/meson.build
+++ b/meson.build
@@ -117,7 +117,7 @@ gio = dependency('gio-2.0', version: glib_ver)
gio_unix = dependency('gio-unix-2.0', version: glib_ver)
glib = dependency('glib-2.0', version: glib_ver)
gmodule = dependency('gmodule-no-export-2.0', version: glib_ver)
-gnome_autoar = dependency('gnome-autoar-0', version: '>= 0.3.0')
+gnome_autoar = dependency('gnome-autoar-0', version: '>= 0.4.0')
gnome_desktop = dependency('gnome-desktop-3.0', version: '>= 3.0.0')
gtk = dependency('gtk+-3.0', version: '>= 3.22.27')
libhandy = dependency('libhandy-1', version: '>= 1.1.90')
diff --git a/src/nautilus-compress-dialog-controller.c b/src/nautilus-compress-dialog-controller.c
index 154573c0f..e1ba5a803 100644
--- a/src/nautilus-compress-dialog-controller.c
+++ b/src/nautilus-compress-dialog-controller.c
@@ -32,17 +32,24 @@ struct _NautilusCompressDialogController
NautilusFileNameWidgetController parent_instance;
GtkWidget *compress_dialog;
+ GtkWidget *activate_button;
+ GtkWidget *error_label;
GtkWidget *name_entry;
GtkWidget *extension_stack;
GtkWidget *zip_label;
+ GtkWidget *encrypted_zip_label;
GtkWidget *tar_xz_label;
GtkWidget *seven_zip_label;
GtkWidget *extension_popover;
GtkWidget *zip_checkmark;
+ GtkWidget *encrypted_zip_checkmark;
GtkWidget *tar_xz_checkmark;
GtkWidget *seven_zip_checkmark;
+ GtkWidget *passphrase_label;
+ GtkWidget *passphrase_entry;
const char *extension;
+ gchar *passphrase;
gulong response_handler_id;
};
@@ -142,6 +149,7 @@ update_selected_format (NautilusCompressDialogController *self,
const char *extension;
GtkWidget *active_label;
GtkWidget *active_checkmark;
+ gboolean show_passphrase = FALSE;
switch (format)
{
@@ -153,6 +161,15 @@ update_selected_format (NautilusCompressDialogController *self,
}
break;
+ case NAUTILUS_COMPRESSION_ENCRYPTED_ZIP:
+ {
+ extension = ".zip";
+ active_label = self->encrypted_zip_label;
+ active_checkmark = self->encrypted_zip_checkmark;
+ show_passphrase = TRUE;
+ }
+ break;
+
case NAUTILUS_COMPRESSION_TAR_XZ:
{
extension = ".tar.xz";
@@ -178,12 +195,26 @@ update_selected_format (NautilusCompressDialogController *self,
self->extension = extension;
+ gtk_widget_set_visible (self->passphrase_label, show_passphrase);
+ gtk_widget_set_visible (self->passphrase_entry, show_passphrase);
+ if (!show_passphrase)
+ {
+ gtk_entry_set_text (GTK_ENTRY (self->passphrase_entry), "");
+ gtk_entry_set_visibility (GTK_ENTRY (self->passphrase_entry), FALSE);
+ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (self->passphrase_entry),
+ GTK_ENTRY_ICON_SECONDARY,
+ "view-conceal");
+ }
+
gtk_stack_set_visible_child (GTK_STACK (self->extension_stack),
active_label);
gtk_image_set_from_icon_name (GTK_IMAGE (self->zip_checkmark),
NULL,
GTK_ICON_SIZE_BUTTON);
+ gtk_image_set_from_icon_name (GTK_IMAGE (self->encrypted_zip_checkmark),
+ NULL,
+ GTK_ICON_SIZE_BUTTON);
gtk_image_set_from_icon_name (GTK_IMAGE (self->tar_xz_checkmark),
NULL,
GTK_ICON_SIZE_BUTTON);
@@ -200,6 +231,7 @@ update_selected_format (NautilusCompressDialogController *self,
/* Since the extension changes when the button is toggled, force a
* verification of the new file name by simulating an entry change
*/
+ gtk_widget_set_sensitive (self->activate_button, FALSE);
g_signal_emit_by_name (self->name_entry, "changed");
}
@@ -216,6 +248,19 @@ zip_row_on_activated (HdyActionRow *row,
NAUTILUS_COMPRESSION_ZIP);
}
+static void
+encrypted_zip_row_on_activated (HdyActionRow *row,
+ gpointer user_data)
+{
+ NautilusCompressDialogController *controller;
+
+ controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data);
+
+ gtk_popover_popdown (GTK_POPOVER (controller->extension_popover));
+ update_selected_format (controller,
+ NAUTILUS_COMPRESSION_ENCRYPTED_ZIP);
+}
+
static void
tar_xz_row_on_activated (HdyActionRow *row,
gpointer user_data)
@@ -242,6 +287,67 @@ seven_zip_row_on_activated (HdyActionRow *row,
NAUTILUS_COMPRESSION_7ZIP);
}
+static void
+passphrase_entry_on_changed (GtkEditable *editable,
+ gpointer user_data)
+{
+ NautilusCompressDialogController *self;
+ const gchar *error_message;
+
+ self = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data);
+
+ g_free (self->passphrase);
+ self->passphrase = g_strdup (gtk_entry_get_text (GTK_ENTRY (self->passphrase_entry)));
+
+ /* Simulate a change of the name_entry to ensure the correct sensitivity of
+ * the activate_button, but only if the name_entry is valid in order to
+ * avoid changes of the error_revealer.
+ */
+ error_message = gtk_label_get_text (GTK_LABEL (self->error_label));
+ if (error_message[0] == '\0')
+ {
+ gtk_widget_set_sensitive (self->activate_button, FALSE);
+ g_signal_emit_by_name (self->name_entry, "changed");
+ }
+}
+
+static void
+passphrase_entry_on_icon_press (GtkEntry *entry,
+ GtkEntryIconPosition icon_pos,
+ GdkEvent *event,
+ gpointer user_data)
+{
+ NautilusCompressDialogController *self;
+ gboolean visibility;
+
+ self = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data);
+ visibility = gtk_entry_get_visibility (GTK_ENTRY (self->passphrase_entry));
+
+ gtk_entry_set_icon_from_icon_name (GTK_ENTRY (self->passphrase_entry),
+ GTK_ENTRY_ICON_SECONDARY,
+ visibility ? "view-conceal" : "view-reveal");
+ gtk_entry_set_visibility (GTK_ENTRY (self->passphrase_entry), !visibility);
+}
+
+static void
+activate_button_on_sensitive_notify (GObject *gobject,
+ GParamSpec *pspec,
+ gpointer user_data)
+{
+ NautilusCompressDialogController *self;
+ NautilusCompressionFormat format;
+
+ self = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data);
+ format = g_settings_get_enum (nautilus_compression_preferences,
+ NAUTILUS_PREFERENCES_DEFAULT_COMPRESSION_FORMAT);
+ if (format == NAUTILUS_COMPRESSION_ENCRYPTED_ZIP &&
+ (self->passphrase == NULL || self->passphrase[0] == '\0'))
+ {
+ /* Reset sensitivity of the activate_button if password is not set. */
+ gtk_widget_set_sensitive (self->activate_button, FALSE);
+ }
+}
+
NautilusCompressDialogController *
nautilus_compress_dialog_controller_new (GtkWindow *parent_window,
NautilusDirectory *destination_directory,
@@ -256,12 +362,16 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window,
GtkWidget *activate_button;
GtkWidget *extension_stack;
GtkWidget *zip_label;
+ GtkWidget *encrypted_zip_label;
GtkWidget *tar_xz_label;
GtkWidget *seven_zip_label;
GtkWidget *extension_popover;
GtkWidget *zip_checkmark;
+ GtkWidget *encrypted_zip_checkmark;
GtkWidget *tar_xz_checkmark;
GtkWidget *seven_zip_checkmark;
+ GtkWidget *passphrase_label;
+ GtkWidget *passphrase_entry;
NautilusCompressionFormat format;
builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/ui/nautilus-compress-dialog.ui");
@@ -272,12 +382,16 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window,
activate_button = GTK_WIDGET (gtk_builder_get_object (builder, "activate_button"));
extension_stack = GTK_WIDGET (gtk_builder_get_object (builder, "extension_stack"));
zip_label = GTK_WIDGET (gtk_builder_get_object (builder, "zip_label"));
+ encrypted_zip_label = GTK_WIDGET (gtk_builder_get_object (builder, "encrypted_zip_label"));
tar_xz_label = GTK_WIDGET (gtk_builder_get_object (builder, "tar_xz_label"));
seven_zip_label = GTK_WIDGET (gtk_builder_get_object (builder, "seven_zip_label"));
extension_popover = GTK_WIDGET (gtk_builder_get_object (builder, "extension_popover"));
zip_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "zip_checkmark"));
+ encrypted_zip_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "encrypted_zip_checkmark"));
tar_xz_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "tar_xz_checkmark"));
seven_zip_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "seven_zip_checkmark"));
+ passphrase_label = GTK_WIDGET (gtk_builder_get_object (builder, "passphrase_label"));
+ passphrase_entry = GTK_WIDGET (gtk_builder_get_object (builder, "passphrase_entry"));
gtk_window_set_transient_for (GTK_WINDOW (compress_dialog),
parent_window);
@@ -290,16 +404,22 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window,
"containing-directory", destination_directory, NULL);
self->compress_dialog = compress_dialog;
+ self->activate_button = activate_button;
+ self->error_label = error_label;
self->extension_stack = extension_stack;
self->zip_label = zip_label;
+ self->encrypted_zip_label = encrypted_zip_label;
self->tar_xz_label = tar_xz_label;
self->seven_zip_label = seven_zip_label;
self->name_entry = name_entry;
self->extension_popover = extension_popover;
self->zip_checkmark = zip_checkmark;
+ self->encrypted_zip_checkmark = encrypted_zip_checkmark;
self->tar_xz_checkmark = tar_xz_checkmark;
self->seven_zip_checkmark = seven_zip_checkmark;
self->name_entry = name_entry;
+ self->passphrase_label = passphrase_label;
+ self->passphrase_entry = passphrase_entry;
self->response_handler_id = g_signal_connect (compress_dialog,
"response",
@@ -309,10 +429,18 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window,
gtk_builder_add_callback_symbols (builder,
"zip_row_on_activated",
G_CALLBACK (zip_row_on_activated),
+ "encrypted_zip_row_on_activated",
+ G_CALLBACK (encrypted_zip_row_on_activated),
"tar_xz_row_on_activated",
G_CALLBACK (tar_xz_row_on_activated),
"seven_zip_row_on_activated",
G_CALLBACK (seven_zip_row_on_activated),
+ "passphrase_entry_on_changed",
+ G_CALLBACK (passphrase_entry_on_changed),
+ "passphrase_entry_on_icon_press",
+ G_CALLBACK (passphrase_entry_on_icon_press),
+ "activate_button_on_sensitive_notify",
+ G_CALLBACK (activate_button_on_sensitive_notify),
NULL);
gtk_builder_connect_signals (builder, self);
@@ -350,6 +478,8 @@ nautilus_compress_dialog_controller_finalize (GObject *object)
self->compress_dialog = NULL;
}
+ g_free (self->passphrase);
+
G_OBJECT_CLASS (nautilus_compress_dialog_controller_parent_class)->finalize (object);
}
@@ -364,3 +494,9 @@ nautilus_compress_dialog_controller_class_init (NautilusCompressDialogController
parent_class->get_new_name = nautilus_compress_dialog_controller_get_new_name;
parent_class->name_is_valid = nautilus_compress_dialog_controller_name_is_valid;
}
+
+const gchar *
+nautilus_compress_dialog_controller_get_passphrase (NautilusCompressDialogController *self)
+{
+ return self->passphrase;
+}
diff --git a/src/nautilus-compress-dialog-controller.h b/src/nautilus-compress-dialog-controller.h
index 2421b8115..6c96d68fa 100644
--- a/src/nautilus-compress-dialog-controller.h
+++ b/src/nautilus-compress-dialog-controller.h
@@ -31,3 +31,4 @@ G_DECLARE_FINAL_TYPE (NautilusCompressDialogController, nautilus_compress_dialog
NautilusCompressDialogController * nautilus_compress_dialog_controller_new (GtkWindow *parent_window,
NautilusDirectory *destination_directory,
gchar *initial_name);
+const gchar * nautilus_compress_dialog_controller_get_passphrase (NautilusCompressDialogController *controller);
diff --git a/src/nautilus-file-operations.c b/src/nautilus-file-operations.c
index 59beecd7e..f909173f9 100644
--- a/src/nautilus-file-operations.c
+++ b/src/nautilus-file-operations.c
@@ -222,6 +222,7 @@ typedef struct
AutoarFormat format;
AutoarFilter filter;
+ gchar *passphrase;
guint64 total_size;
guint total_files;
@@ -8753,6 +8754,7 @@ compress_task_done (GObject *source_object,
g_object_unref (compress_job->output_file);
g_list_free_full (compress_job->source_files, g_object_unref);
+ g_free (compress_job->passphrase);
finalize_common ((CommonJob *) compress_job);
@@ -9027,6 +9029,7 @@ compress_task_thread_func (GTask *task,
compress_job->format,
compress_job->filter,
FALSE);
+ autoar_compressor_set_passphrase (compressor, compress_job->passphrase);
autoar_compressor_set_output_is_dest (compressor, TRUE);
@@ -9057,6 +9060,7 @@ nautilus_file_operations_compress (GList *files,
GFile *output,
AutoarFormat format,
AutoarFilter filter,
+ const gchar *passphrase,
GtkWindow *parent_window,
NautilusFileOperationsDBusData *dbus_data,
NautilusCreateCallback done_callback,
@@ -9072,6 +9076,7 @@ nautilus_file_operations_compress (GList *files,
compress_job->output_file = g_object_ref (output);
compress_job->format = format;
compress_job->filter = filter;
+ compress_job->passphrase = g_strdup (passphrase);
compress_job->done_callback = done_callback;
compress_job->done_callback_data = done_callback_data;
@@ -9082,7 +9087,8 @@ nautilus_file_operations_compress (GList *files,
compress_job->common.undo_info = nautilus_file_undo_info_compress_new (files,
output,
format,
- filter);
+ filter,
+ passphrase);
}
task = g_task_new (NULL, compress_job->common.cancellable,
diff --git a/src/nautilus-file-operations.h b/src/nautilus-file-operations.h
index 8236e0e06..14d664f80 100644
--- a/src/nautilus-file-operations.h
+++ b/src/nautilus-file-operations.h
@@ -159,6 +159,7 @@ void nautilus_file_operations_compress (GList *files,
GFile *output,
AutoarFormat format,
AutoarFilter filter,
+ const gchar *passphrase,
GtkWindow *parent_window,
NautilusFileOperationsDBusData *dbus_data,
NautilusCreateCallback done_callback,
diff --git a/src/nautilus-file-undo-operations.c b/src/nautilus-file-undo-operations.c
index a6a3b2025..64f9ce76c 100644
--- a/src/nautilus-file-undo-operations.c
+++ b/src/nautilus-file-undo-operations.c
@@ -2495,6 +2495,7 @@ struct _NautilusFileUndoInfoCompress
GFile *output;
AutoarFormat format;
AutoarFilter filter;
+ gchar *passphrase;
};
G_DEFINE_TYPE (NautilusFileUndoInfoCompress, nautilus_file_undo_info_compress, NAUTILUS_TYPE_FILE_UNDO_INFO)
@@ -2562,6 +2563,7 @@ compress_redo_func (NautilusFileUndoInfo *info,
self->output,
self->format,
self->filter,
+ self->passphrase,
parent_window,
dbus_data,
compress_callback,
@@ -2597,6 +2599,7 @@ nautilus_file_undo_info_compress_finalize (GObject *obj)
g_list_free_full (self->sources, g_object_unref);
g_clear_object (&self->output);
+ g_free (self->passphrase);
G_OBJECT_CLASS (nautilus_file_undo_info_compress_parent_class)->finalize (obj);
}
@@ -2618,7 +2621,8 @@ NautilusFileUndoInfo *
nautilus_file_undo_info_compress_new (GList *sources,
GFile *output,
AutoarFormat format,
- AutoarFilter filter)
+ AutoarFilter filter,
+ const gchar *passphrase)
{
NautilusFileUndoInfoCompress *self;
@@ -2631,6 +2635,7 @@ nautilus_file_undo_info_compress_new (GList *sources,
self->output = g_object_ref (output);
self->format = format;
self->filter = filter;
+ self->passphrase = g_strdup (passphrase);
return NAUTILUS_FILE_UNDO_INFO (self);
}
diff --git a/src/nautilus-file-undo-operations.h b/src/nautilus-file-undo-operations.h
index f96f2fe69..09ae17cef 100644
--- a/src/nautilus-file-undo-operations.h
+++ b/src/nautilus-file-undo-operations.h
@@ -226,4 +226,5 @@ G_DECLARE_FINAL_TYPE (NautilusFileUndoInfoCompress, nautilus_file_undo_info_comp
NautilusFileUndoInfo * nautilus_file_undo_info_compress_new (GList *sources,
GFile *output,
AutoarFormat format,
- AutoarFilter filter);
+ AutoarFilter filter,
+ const gchar *passphrase);
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index b4a91226b..47aed3cc1 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -2235,6 +2235,7 @@ compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *c
NautilusFilesViewPrivate *priv;
AutoarFormat format;
AutoarFilter filter;
+ const gchar *passphrase = NULL;
view = NAUTILUS_FILES_VIEW (callback_data->view);
priv = nautilus_files_view_get_instance_private (view);
@@ -2280,6 +2281,14 @@ compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *c
}
break;
+ case NAUTILUS_COMPRESSION_ENCRYPTED_ZIP:
+ {
+ format = AUTOAR_FORMAT_ZIP;
+ filter = AUTOAR_FILTER_NONE;
+ passphrase = nautilus_compress_dialog_controller_get_passphrase (priv->compress_controller);
+ }
+ break;
+
case NAUTILUS_COMPRESSION_TAR_XZ:
{
format = AUTOAR_FORMAT_TAR;
@@ -2301,6 +2310,7 @@ compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *c
nautilus_file_operations_compress (source_files, output,
format,
filter,
+ passphrase,
nautilus_files_view_get_containing_window (view),
NULL,
compress_done,
diff --git a/src/nautilus-global-preferences.h b/src/nautilus-global-preferences.h
index 8c482f7ce..2e8753b3c 100644
--- a/src/nautilus-global-preferences.h
+++ b/src/nautilus-global-preferences.h
@@ -77,7 +77,8 @@ typedef enum
{
NAUTILUS_COMPRESSION_ZIP = 0,
NAUTILUS_COMPRESSION_TAR_XZ,
- NAUTILUS_COMPRESSION_7ZIP
+ NAUTILUS_COMPRESSION_7ZIP,
+ NAUTILUS_COMPRESSION_ENCRYPTED_ZIP
} NautilusCompressionFormat;
/* Icon View */
diff --git a/src/resources/css/nautilus.css b/src/resources/css/nautilus.css
index 2e46b7abe..ee25a36a8 100644
--- a/src/resources/css/nautilus.css
+++ b/src/resources/css/nautilus.css
@@ -3,3 +3,12 @@
padding-left: 5px;
padding-right: 5px;
}
+
+label.encrypted_zip,
+row.encrypted_zip label.title {
+ background-image: -gtk-icontheme('system-lock-screen-symbolic');
+ background-position: right center;
+ background-repeat: no-repeat;
+ background-size: 16px 16px;
+ padding-right: 24px;
+}
diff --git a/src/resources/ui/nautilus-compress-dialog.ui b/src/resources/ui/nautilus-compress-dialog.ui
index b36539294..a57765eed 100644
--- a/src/resources/ui/nautilus-compress-dialog.ui
+++ b/src/resources/ui/nautilus-compress-dialog.ui
@@ -28,6 +28,26 @@
</child>
</object>
</child>
+ <child>
+ <object class="HdyActionRow" id="encrypted_zip_row">
+ <property name="visible">True</property>
+ <property name="activatable">True</property>
+ <property name="title" translatable="no">.zip</property>
+ <property name="subtitle" translatable="yes">Password protected .zip, must be installed on Windows and Mac.</property>
+ <signal name="activated" handler="encrypted_zip_row_on_activated"/>
+ <style>
+ <class name="encrypted_zip"/>
+ </style>
+ <child>
+ <object class="GtkImage" id="encrypted_zip_checkmark">
+ <property name="visible">True</property>
+ <property name="width-request">16</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
<child>
<object class="HdyActionRow">
<property name="visible">True</property>
@@ -129,6 +149,15 @@
<property name="xalign">0</property>
</object>
</child>
+ <child>
+ <object class="GtkLabel" id="encrypted_zip_label">
+ <property name="label" translatable="no">.zip</property>
+ <property name="xalign">0</property>
+ <style>
+ <class name="encrypted_zip"/>
+ </style>
+ </object>
+ </child>
<child>
<object class="GtkLabel" id="tar_xz_label">
<property name="label" translatable="no">.tar.xz</property>
@@ -179,6 +208,33 @@
<property name="position">3</property>
</packing>
</child>
+ <child>
+ <object class="GtkLabel" id="passphrase_label">
+ <property name="label" translatable="yes">Password</property>
+ <property name="margin-top">6</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">4</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkEntry" id="passphrase_entry">
+ <property name="placeholder-text" translatable="yes">Enter a password here.</property>
+ <property name="input-purpose">password</property>
+ <property name="visibility">False</property>
+ <property name="secondary-icon-name">view-conceal</property>
+ <signal name="changed" handler="passphrase_entry_on_changed"/>
+ <signal name="icon-press" handler="passphrase_entry_on_icon_press"/>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">5</property>
+ </packing>
+ </child>
</object>
</child>
<child type="action">
@@ -197,6 +253,7 @@
<property name="can_default">True</property>
<property name="receives_default">True</property>
<property name="sensitive">False</property>
+ <signal name="notify::sensitive" handler="activate_button_on_sensitive_notify"/>
</object>
</child>
<action-widgets>
--
2.31.1

View File

@ -0,0 +1,682 @@
diff --git a/po/ca.po b/po/ca.po
index aeae0331c..bbab22965 100644
--- a/po/ca.po
+++ b/po/ca.po
@@ -5895,3 +5895,15 @@ msgstr "Introduïu l'adreça del servidor..."
#~ msgid "Only create windows for explicitly specified URIs."
#~ msgstr "Només crea finestres per als URI indicats explícitament."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "Fitxer .zip protegit amb contrasenya, s'ha d'instal·lar a Windows i Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Contrasenya"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Introduïu una contrasenya aquí."
diff --git a/po/cs.po b/po/cs.po
index 36a8d4ebb..5bca98e82 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -5755,3 +5755,15 @@ msgstr "Připojit se k _serveru"
msgid "Enter server address…"
msgstr "zadejte adresu serveru…"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "Heslem chráněný .zip, do Windows a na Mac je nutné doinstalovat."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Heslo"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "zde zadejte heslo"
diff --git a/po/da.po b/po/da.po
index d6901920f..7c2b9a1ce 100644
--- a/po/da.po
+++ b/po/da.po
@@ -7510,3 +7510,15 @@ msgstr "Indtast serveradresse …"
#~ msgid "link"
#~ msgstr "henvisning"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "Adgangskodebeskyttet .zip — skal installeres på Windows og Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Adgangskode"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Indtast en adgangskode her."
diff --git a/po/de.po b/po/de.po
index 4e4bc33d6..dd9128f32 100644
--- a/po/de.po
+++ b/po/de.po
@@ -6020,3 +6020,17 @@ msgstr "Serveradresse eingeben …"
#~ msgid "Prefere_nces"
#~ msgstr "_Einstellungen"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"Passwortgeschütztes .zip-Archiv. Hierfür muss unter Windows und Mac Software "
+"installiert werden."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Passwort"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Geben Sie hier ein Passwort ein."
diff --git a/po/el.po b/po/el.po
index 65029aec6..5e89b8a33 100644
--- a/po/el.po
+++ b/po/el.po
@@ -6121,3 +6121,17 @@ msgstr "Εισαγωγή διεύθυνσης διακομιστή…"
#~ msgid "smb://"
#~ msgstr "smb://"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"Αρχεία .zip προστατευμένα με συνθηματικό, πρέπει να εγκατασταθούν σε Windows "
+"και Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Συνθηματικό"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Εισαγωγή συνθηματικού εδώ."
diff --git a/po/en_GB.po b/po/en_GB.po
index 1adc903d8..254d6022e 100644
--- a/po/en_GB.po
+++ b/po/en_GB.po
@@ -10311,3 +10311,15 @@ msgstr "Enter server address…"
#~ msgid "Question"
#~ msgstr "Question"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "Password protected .zip, must be installed on Windows and Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Password"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Enter a password here."
diff --git a/po/es.po b/po/es.po
index f168c54d6..de8e7e7fa 100644
--- a/po/es.po
+++ b/po/es.po
@@ -11253,3 +11253,19 @@ msgstr "Introduzca la dirección del servidor…"
#~ msgstr ""
#~ "Nautilus es un shell gráfico para GNOME que facilita la administración de "
#~ "sus archivos y el resto de su sistema."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+#| msgid "Smaller archives but must be installed on Windows and Mac."
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ".zip protegido por contraseña, se debe instalar en Windows o Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+#| msgid "Pass_word:"
+msgid "Password"
+msgstr "Contraseña"
+
+# src/nautilus-location-bar.c:401
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+#| msgid "Enter password…"
+msgid "Enter a password here."
+msgstr "Introduzca una contraseña aquí."
diff --git a/po/eu.po b/po/eu.po
index 5f48c29c8..f886de542 100644
--- a/po/eu.po
+++ b/po/eu.po
@@ -5676,3 +5676,15 @@ msgstr "Sartu zerbitzariaren helbidea…"
#~ msgid "Only create windows for explicitly specified URIs."
#~ msgstr "Zehaztutako URIentzat bakarrik sortu leihoak."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "Pasahitzez babestutako .zip fitxategia, Windows eta Mac-en instalatu behar da."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Pasahitza"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Idatzi pasahitza hemen."
diff --git a/po/fa.po b/po/fa.po
index 52b1d9f2a..d1aa5131b 100644
--- a/po/fa.po
+++ b/po/fa.po
@@ -10614,3 +10614,15 @@ msgstr "نشانی کارساز را وارد کنید…"
#~ msgid "C_ancel Remove"
#~ msgstr "ان_صراف از حذف"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "پروندهٔ .zip محافظت‌شده با گذرواژه. باید روی ویندوز و مک نصب باشد."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "گذرواژه"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "این‌جا گذرواژه‌ای وارد کنید."
diff --git a/po/fi.po b/po/fi.po
index 7fc36774d..235453bb3 100644
--- a/po/fi.po
+++ b/po/fi.po
@@ -7363,3 +7363,15 @@ msgstr "Anna palvelimen osoite…"
#~ msgid "_Up"
#~ msgstr "_Ylös"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "Salasanalla suojattu .zip, tulee asentaa Windowsille ja Macille."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Salasana"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Kirjoita salasana tähän."
diff --git a/po/fr.po b/po/fr.po
index c01c70e4a..8cb792c9d 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -6002,3 +6002,20 @@ msgstr "Saisir ladresse du serveur…"
#~ msgid "smb://"
#~ msgstr "smb://"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+#| msgid "Smaller archives but must be installed on Windows and Mac."
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+".zip protégé par mot de passe, mais nécessite une installation sur Windows "
+"et Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+#| msgid "Password Required"
+msgid "Password"
+msgstr "Mot de passe"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+#| msgid "Enter password…"
+msgid "Enter a password here."
+msgstr "Saisissez un mot de passe ici."
diff --git a/po/gl.po b/po/gl.po
index 0e695ca91..98d5b8487 100644
--- a/po/gl.po
+++ b/po/gl.po
@@ -5881,3 +5881,19 @@ msgstr "Escriba o enderezo do servidor…"
#~ msgid "New _Folder…"
#~ msgstr "Novo _cartafol…"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+#| msgid "Smaller archives but must be installed on Windows and Mac."
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+".zip protexido con contrasinal, deben estar instalados en Windows e Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+#| msgid "Password Required"
+msgid "Password"
+msgstr "Contrasinal"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+#| msgid "Enter password…"
+msgid "Enter a password here."
+msgstr "Escriba un contrasinal aquí…"
diff --git a/po/he.po b/po/he.po
index 3706273a9..86bbf14e9 100644
--- a/po/he.po
+++ b/po/he.po
@@ -11131,3 +11131,15 @@ msgstr "יש לההזין כתובת שרת…"
#~ msgid "Question"
#~ msgstr "שאלה"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "קובץ .zip מוגן בססמה, חייב להיות מותקן ב־Windows וב־Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "ססמה"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "נא למלא כאן ססמה."
diff --git a/po/hr.po b/po/hr.po
index 1a864ce9d..45625fd20 100644
--- a/po/hr.po
+++ b/po/hr.po
@@ -6477,3 +6477,15 @@ msgstr "Upiši adresu poslužitelja…"
#~ msgid "Re_verse Order"
#~ msgstr "Ob_rni poredak"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "Lozinkom zaštićeni .zip, mora biti instaliran na Windows i Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Lozinka"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Upišite lozinku ovdje."
diff --git a/po/hu.po b/po/hu.po
index b547cd30d..1fa73c01e 100644
--- a/po/hu.po
+++ b/po/hu.po
@@ -5853,3 +5853,18 @@ msgstr "Adja meg a kiszolgáló címét…"
#~ msgid "New _Folder…"
#~ msgstr "Új _mappa…"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+#| msgid "Smaller archives but must be installed on Windows and Mac."
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "Jelszóval védett .zip, Windowsra és Macre telepíteni kell."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+#| msgid "Password Required"
+msgid "Password"
+msgstr "Jelszó"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+#| msgid "Enter password…"
+msgid "Enter a password here."
+msgstr "Adjon meg egy jelszót itt."
diff --git a/po/id.po b/po/id.po
index 7bfd400b2..352cf746e 100644
--- a/po/id.po
+++ b/po/id.po
@@ -6355,3 +6355,16 @@ msgstr "Masukkan alamat peladen…"
#~ msgid "Mark as _Trusted"
#~ msgstr "_Tandai Dipercaya"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"Berkas .zip yang dilindungi kata sandi, harus dipasang pada Windows dan Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Kata Sandi"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Masukkan kata sandi di sini."
diff --git a/po/kk.po b/po/kk.po
index 6b1ed27b9..921c46940 100644
--- a/po/kk.po
+++ b/po/kk.po
@@ -7842,3 +7842,17 @@ msgstr "Сервер адресін енгізіңіз…"
#~ msgstr ""
#~ "Қоқыс шелегін тазартуды таңдасаңыз, құрамасы жойылады. Оларды жеке-жеке "
#~ "өшіруге болатынын есте сақтаңыз."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"Парольмен қорғалған .zip архивтері, Windows және Mac-та орнатылған болуы "
+"тиіс."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Пароль"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Парольді осында енгізіңіз."
diff --git a/po/ko.po b/po/ko.po
index 43533fe3b..56077c21f 100644
--- a/po/ko.po
+++ b/po/ko.po
@@ -5733,3 +5733,15 @@ msgstr "서버 주소 입력…"
#~ msgid "smb://"
#~ msgstr "smb://"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "암호로 보호된 .zip 파일, 윈도우와 맥에서 설치해야 함."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "암호"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "여기 암호를 입력하십시오."
diff --git a/po/lt.po b/po/lt.po
index 7a257c609..4fc020a94 100644
--- a/po/lt.po
+++ b/po/lt.po
@@ -7500,3 +7500,19 @@ msgstr "Įveskite _serverio adresą…"
#~ msgid "_Up"
#~ msgstr "_Aukštyn"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+#| msgid "Smaller archives but must be installed on Windows and Mac."
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"Slaptažodžiu apsaugotas .zip, turi būti įdiegti Windows ir Mac sistemose."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+#| msgid "Password Required"
+msgid "Password"
+msgstr "Slaptažodis"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+#| msgid "Enter password…"
+msgid "Enter a password here."
+msgstr "Įveskite slaptažodį čia."
diff --git a/po/nl.po b/po/nl.po
index 77eab583b..393749329 100644
--- a/po/nl.po
+++ b/po/nl.po
@@ -6837,3 +6837,17 @@ msgstr "Voer serveradres in…"
#~ msgid "Move Dow_n"
#~ msgstr "Naar b_eneden"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"Zipbestand beschermd met wachtwoord, moet op Windows en Mac geïnstalleerd "
+"worden."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Wachtwoord"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Voer hier een wachtwoord in."
diff --git a/po/oc.po b/po/oc.po
index e4d1cabbc..f0c23bfda 100644
--- a/po/oc.po
+++ b/po/oc.po
@@ -7520,3 +7520,16 @@ msgstr "Entrar l'adreça del _servidor…"
#~ msgid "Copying “%B” to “%B”"
#~ msgstr "Còpia de « %B » cap a « %B »"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"Fichièr zip protegit per senhal, requerís una installacion sus Windows e Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Senhal"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Picatz un senhal aquí."
diff --git a/po/pl.po b/po/pl.po
index 499b5b1ea..ce1c46677 100644
--- a/po/pl.po
+++ b/po/pl.po
@@ -5776,3 +5776,17 @@ msgstr "Połącz z _serwerem"
#: src/gtk/nautilusgtkplacesview.ui:340
msgid "Enter server address…"
msgstr "Adres serwera…"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"Archiwum .zip chronione hasłem, wymaga dodatkowego oprogramowania "
+"w systemach Windows i Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Hasło"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Hasło…"
diff --git a/po/pt.po b/po/pt.po
index 2c071f039..ffacf5123 100644
--- a/po/pt.po
+++ b/po/pt.po
@@ -6482,3 +6482,16 @@ msgstr "Insira o endereço do servidor…"
#~ msgid "Whether the row represents a network location"
#~ msgstr "Se a linha representa uma localização de rede"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"O .zip protegido por palavra-passe deve ser instalado no Windows e Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Palavra-passe"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Introduza aqui uma palavra-passe."
diff --git a/po/pt_BR.po b/po/pt_BR.po
index 2bb4e4ca6..42c5f4a81 100644
--- a/po/pt_BR.po
+++ b/po/pt_BR.po
@@ -7565,3 +7565,15 @@ msgstr "Insira endereço do servidor…"
#~ msgid "_Bookmarks..."
#~ msgstr "_Marcadores..."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "Arquivo .zip protegido por senha, pode ser instalado no Windows e Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Senha"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Insira uma senha aqui."
diff --git a/po/ro.po b/po/ro.po
index cc2a2cb6d..b96dffd27 100644
--- a/po/ro.po
+++ b/po/ro.po
@@ -9645,3 +9645,16 @@ msgstr "Introduceți adresa serverului…"
#~ msgstr ""
#~ "Afișează modele, culori și embleme ce pot fi folosite pentru a "
#~ "personaliza aspectul"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"Arhive zip protejate de parolă, dar trebuiesc instalate pe Windows și Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Parolă"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Introduceți parola."
diff --git a/po/ru.po b/po/ru.po
index b0d6868fa..be97cf11d 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -6573,3 +6573,17 @@ msgstr "Ввести адрес сервера…"
#~ msgctxt "Bookmark"
#~ msgid "_Name"
#~ msgstr "_Имя"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"Защищённый паролем архив, требует установки приложения для открытия в "
+"Windows и Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Пароль"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Введите пароль здесь."
diff --git a/po/sk.po b/po/sk.po
index d44e7fbe7..00edea5f8 100644
--- a/po/sk.po
+++ b/po/sk.po
@@ -7706,3 +7706,16 @@ msgstr "Zadajte adresu servera…"
#~ msgid "Places"
#~ msgstr "Miesta"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"Heslom chránený súbor .zip, musí byť nainštalovaný v systéme Windows a Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Heslo"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Sem zadajte heslo."
diff --git a/po/sl.po b/po/sl.po
index 988752a10..7d1d001d6 100644
--- a/po/sl.po
+++ b/po/sl.po
@@ -7743,3 +7743,17 @@ msgstr "Vpis naslova strežnika …"
#~ "Skupaj s programom bi morali prejeti kopijo GNU Splošne javne licence. V "
#~ "primeru, da je niste, pišite na Free Software Foundation, Inc., 51 "
#~ "Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr ""
+"Z geslom zaščinen arhiv .zip, ki mora biti nameščen na sistemih Windows in "
+"Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Geslo"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Vnos gesla"
diff --git a/po/sv.po b/po/sv.po
index 734631dde..2b9c3ecc9 100644
--- a/po/sv.po
+++ b/po/sv.po
@@ -6710,3 +6710,15 @@ msgstr "Ange serveradress…"
#~ msgid "%a, %b %e %Y %T"
#~ msgstr "%a %-e %b %Y %T"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "Lösenordsskyddad .zip, måste vara installerat på Windows och Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Lösenord"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Ange ett lösenord här."
diff --git a/po/tr.po b/po/tr.po
index 025d23e72..b0b8b0004 100644
--- a/po/tr.po
+++ b/po/tr.po
@@ -6594,3 +6594,15 @@ msgstr "Sunucu adresini gir…"
#~ msgid "D_efault zoom level:"
#~ msgstr "Ön_tanımlı yaklaştırma seviyesi:"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "Parola korumalı .zip, Windows ve Mac üzerinde kurulmalıdır."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Parola"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Buraya parola gir…"
diff --git a/po/uk.po b/po/uk.po
index 8a4eb3001..71ad8edbf 100644
--- a/po/uk.po
+++ b/po/uk.po
@@ -6018,3 +6018,15 @@ msgstr "Уведіть адресу сервера…"
#~| msgid "New _Folder"
#~ msgid "New _Folder…"
#~ msgstr "Створити _теку…"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "Захищений паролем .zip, має бути встановлено у Windows і Mac."
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "Пароль"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "Тут слід ввести пароль."
diff --git a/po/zh_CN.po b/po/zh_CN.po
index e98220b83..896d7415f 100644
--- a/po/zh_CN.po
+++ b/po/zh_CN.po
@@ -6185,3 +6185,15 @@ msgstr "输入服务器地址…"
#~ msgid "Zoom In"
#~ msgstr "放大"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:36
+msgid "Password protected .zip, must be installed on Windows and Mac."
+msgstr "有密码保护的 .zip 文件,必须在 Windows 和 Mac 上安装额外程序才能打开。"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:213
+msgid "Password"
+msgstr "密码"
+
+#: src/resources/ui/nautilus-compress-dialog.ui:225
+msgid "Enter a password here."
+msgstr "在此处输入密码。"
--
2.31.1

View File

@ -0,0 +1,564 @@
From e71b54bafcbfffcb352600ebff4be8776de171f9 Mon Sep 17 00:00:00 2001
From: Ondrej Holy <oholy@redhat.com>
Date: Fri, 30 Jul 2021 11:01:42 +0200
Subject: [PATCH] compress-dialog: Update dialog design
Let's update the Compress dialog design as per the mockup for the
encrypted archives support. The most visible change is `GtkPopover`
with `HdyActionRow` rows for the format selection instead of the
`GtkRadioButton` buttons.
https://gitlab.gnome.org/GNOME/nautilus/-/issues/822
---
src/nautilus-compress-dialog-controller.c | 132 ++++++-----
src/resources/ui/nautilus-compress-dialog.ui | 229 ++++++++++---------
2 files changed, 199 insertions(+), 162 deletions(-)
diff --git a/src/nautilus-compress-dialog-controller.c b/src/nautilus-compress-dialog-controller.c
index d8aa792ee..154573c0f 100644
--- a/src/nautilus-compress-dialog-controller.c
+++ b/src/nautilus-compress-dialog-controller.c
@@ -19,6 +19,7 @@
#include <glib/gi18n.h>
#include <gnome-autoar/gnome-autoar.h>
+#include <libhandy-1/handy.h>
#include <eel/eel-vfs-extensions.h>
@@ -31,11 +32,15 @@ struct _NautilusCompressDialogController
NautilusFileNameWidgetController parent_instance;
GtkWidget *compress_dialog;
- GtkWidget *description_stack;
GtkWidget *name_entry;
- GtkWidget *zip_radio_button;
- GtkWidget *tar_xz_radio_button;
- GtkWidget *seven_zip_radio_button;
+ GtkWidget *extension_stack;
+ GtkWidget *zip_label;
+ GtkWidget *tar_xz_label;
+ GtkWidget *seven_zip_label;
+ GtkWidget *extension_popover;
+ GtkWidget *zip_checkmark;
+ GtkWidget *tar_xz_checkmark;
+ GtkWidget *seven_zip_checkmark;
const char *extension;
@@ -135,32 +140,32 @@ update_selected_format (NautilusCompressDialogController *self,
NautilusCompressionFormat format)
{
const char *extension;
- const char *description_label_name;
- GtkWidget *active_button;
+ GtkWidget *active_label;
+ GtkWidget *active_checkmark;
switch (format)
{
case NAUTILUS_COMPRESSION_ZIP:
{
extension = ".zip";
- description_label_name = "zip-description-label";
- active_button = self->zip_radio_button;
+ active_label = self->zip_label;
+ active_checkmark = self->zip_checkmark;
}
break;
case NAUTILUS_COMPRESSION_TAR_XZ:
{
extension = ".tar.xz";
- description_label_name = "tar-xz-description-label";
- active_button = self->tar_xz_radio_button;
+ active_label = self->tar_xz_label;
+ active_checkmark = self->tar_xz_checkmark;
}
break;
case NAUTILUS_COMPRESSION_7ZIP:
{
extension = ".7z";
- description_label_name = "seven-zip-description-label";
- active_button = self->seven_zip_radio_button;
+ active_label = self->seven_zip_label;
+ active_checkmark = self->seven_zip_checkmark;
}
break;
@@ -173,11 +178,21 @@ update_selected_format (NautilusCompressDialogController *self,
self->extension = extension;
- gtk_stack_set_visible_child_name (GTK_STACK (self->description_stack),
- description_label_name);
-
- gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (active_button),
- TRUE);
+ gtk_stack_set_visible_child (GTK_STACK (self->extension_stack),
+ active_label);
+
+ gtk_image_set_from_icon_name (GTK_IMAGE (self->zip_checkmark),
+ NULL,
+ GTK_ICON_SIZE_BUTTON);
+ gtk_image_set_from_icon_name (GTK_IMAGE (self->tar_xz_checkmark),
+ NULL,
+ GTK_ICON_SIZE_BUTTON);
+ gtk_image_set_from_icon_name (GTK_IMAGE (self->seven_zip_checkmark),
+ NULL,
+ GTK_ICON_SIZE_BUTTON);
+ gtk_image_set_from_icon_name (GTK_IMAGE (active_checkmark),
+ "object-select-symbolic",
+ GTK_ICON_SIZE_BUTTON);
g_settings_set_enum (nautilus_compression_preferences,
NAUTILUS_PREFERENCES_DEFAULT_COMPRESSION_FORMAT,
@@ -189,52 +204,40 @@ update_selected_format (NautilusCompressDialogController *self,
}
static void
-zip_radio_button_on_toggled (GtkToggleButton *toggle_button,
- gpointer user_data)
+zip_row_on_activated (HdyActionRow *row,
+ gpointer user_data)
{
NautilusCompressDialogController *controller;
controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data);
- if (!gtk_toggle_button_get_active (toggle_button))
- {
- return;
- }
-
+ gtk_popover_popdown (GTK_POPOVER (controller->extension_popover));
update_selected_format (controller,
NAUTILUS_COMPRESSION_ZIP);
}
static void
-tar_xz_radio_button_on_toggled (GtkToggleButton *toggle_button,
- gpointer user_data)
+tar_xz_row_on_activated (HdyActionRow *row,
+ gpointer user_data)
{
NautilusCompressDialogController *controller;
controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data);
- if (!gtk_toggle_button_get_active (toggle_button))
- {
- return;
- }
-
+ gtk_popover_popdown (GTK_POPOVER (controller->extension_popover));
update_selected_format (controller,
NAUTILUS_COMPRESSION_TAR_XZ);
}
static void
-seven_zip_radio_button_on_toggled (GtkToggleButton *toggle_button,
- gpointer user_data)
+seven_zip_row_on_activated (HdyActionRow *row,
+ gpointer user_data)
{
NautilusCompressDialogController *controller;
controller = NAUTILUS_COMPRESS_DIALOG_CONTROLLER (user_data);
- if (!gtk_toggle_button_get_active (toggle_button))
- {
- return;
- }
-
+ gtk_popover_popdown (GTK_POPOVER (controller->extension_popover));
update_selected_format (controller,
NAUTILUS_COMPRESSION_7ZIP);
}
@@ -251,10 +254,14 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window,
GtkWidget *error_label;
GtkWidget *name_entry;
GtkWidget *activate_button;
- GtkWidget *description_stack;
- GtkWidget *zip_radio_button;
- GtkWidget *tar_xz_radio_button;
- GtkWidget *seven_zip_radio_button;
+ GtkWidget *extension_stack;
+ GtkWidget *zip_label;
+ GtkWidget *tar_xz_label;
+ GtkWidget *seven_zip_label;
+ GtkWidget *extension_popover;
+ GtkWidget *zip_checkmark;
+ GtkWidget *tar_xz_checkmark;
+ GtkWidget *seven_zip_checkmark;
NautilusCompressionFormat format;
builder = gtk_builder_new_from_resource ("/org/gnome/nautilus/ui/nautilus-compress-dialog.ui");
@@ -263,10 +270,14 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window,
error_label = GTK_WIDGET (gtk_builder_get_object (builder, "error_label"));
name_entry = GTK_WIDGET (gtk_builder_get_object (builder, "name_entry"));
activate_button = GTK_WIDGET (gtk_builder_get_object (builder, "activate_button"));
- zip_radio_button = GTK_WIDGET (gtk_builder_get_object (builder, "zip_radio_button"));
- tar_xz_radio_button = GTK_WIDGET (gtk_builder_get_object (builder, "tar_xz_radio_button"));
- seven_zip_radio_button = GTK_WIDGET (gtk_builder_get_object (builder, "seven_zip_radio_button"));
- description_stack = GTK_WIDGET (gtk_builder_get_object (builder, "description_stack"));
+ extension_stack = GTK_WIDGET (gtk_builder_get_object (builder, "extension_stack"));
+ zip_label = GTK_WIDGET (gtk_builder_get_object (builder, "zip_label"));
+ tar_xz_label = GTK_WIDGET (gtk_builder_get_object (builder, "tar_xz_label"));
+ seven_zip_label = GTK_WIDGET (gtk_builder_get_object (builder, "seven_zip_label"));
+ extension_popover = GTK_WIDGET (gtk_builder_get_object (builder, "extension_popover"));
+ zip_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "zip_checkmark"));
+ tar_xz_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "tar_xz_checkmark"));
+ seven_zip_checkmark = GTK_WIDGET (gtk_builder_get_object (builder, "seven_zip_checkmark"));
gtk_window_set_transient_for (GTK_WINDOW (compress_dialog),
parent_window);
@@ -279,10 +290,15 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window,
"containing-directory", destination_directory, NULL);
self->compress_dialog = compress_dialog;
- self->zip_radio_button = zip_radio_button;
- self->tar_xz_radio_button = tar_xz_radio_button;
- self->seven_zip_radio_button = seven_zip_radio_button;
- self->description_stack = description_stack;
+ self->extension_stack = extension_stack;
+ self->zip_label = zip_label;
+ self->tar_xz_label = tar_xz_label;
+ self->seven_zip_label = seven_zip_label;
+ self->name_entry = name_entry;
+ self->extension_popover = extension_popover;
+ self->zip_checkmark = zip_checkmark;
+ self->tar_xz_checkmark = tar_xz_checkmark;
+ self->seven_zip_checkmark = seven_zip_checkmark;
self->name_entry = name_entry;
self->response_handler_id = g_signal_connect (compress_dialog,
@@ -291,20 +307,18 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window,
self);
gtk_builder_add_callback_symbols (builder,
- "zip_radio_button_on_toggled",
- G_CALLBACK (zip_radio_button_on_toggled),
- "tar_xz_radio_button_on_toggled",
- G_CALLBACK (tar_xz_radio_button_on_toggled),
- "seven_zip_radio_button_on_toggled",
- G_CALLBACK (seven_zip_radio_button_on_toggled),
+ "zip_row_on_activated",
+ G_CALLBACK (zip_row_on_activated),
+ "tar_xz_row_on_activated",
+ G_CALLBACK (tar_xz_row_on_activated),
+ "seven_zip_row_on_activated",
+ G_CALLBACK (seven_zip_row_on_activated),
NULL);
gtk_builder_connect_signals (builder, self);
format = g_settings_get_enum (nautilus_compression_preferences,
NAUTILUS_PREFERENCES_DEFAULT_COMPRESSION_FORMAT);
- update_selected_format (self, format);
-
if (initial_name != NULL)
{
gtk_entry_set_text (GTK_ENTRY (name_entry), initial_name);
@@ -312,6 +326,8 @@ nautilus_compress_dialog_controller_new (GtkWindow *parent_window,
gtk_widget_show_all (compress_dialog);
+ update_selected_format (self, format);
+
return self;
}
diff --git a/src/resources/ui/nautilus-compress-dialog.ui b/src/resources/ui/nautilus-compress-dialog.ui
index 526e9eed2..b36539294 100644
--- a/src/resources/ui/nautilus-compress-dialog.ui
+++ b/src/resources/ui/nautilus-compress-dialog.ui
@@ -1,6 +1,70 @@
<?xml version="1.0" encoding="UTF-8"?>
<interface>
<requires lib="gtk+" version="3.14"/>
+ <object class="GtkPopover" id="extension_popover">
+ <property name="position">bottom</property>
+ <property name="constrain-to">none</property>
+ <child>
+ <object class="HdyPreferencesGroup">
+ <property name="visible">True</property>
+ <property name="margin-top">12</property>
+ <property name="margin-bottom">12</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="activatable">True</property>
+ <property name="title" translatable="no">.zip</property>
+ <property name="subtitle" translatable="yes">Compatible with all operating systems.</property>
+ <signal name="activated" handler="zip_row_on_activated"/>
+ <child>
+ <object class="GtkImage" id="zip_checkmark">
+ <property name="visible">True</property>
+ <property name="width-request">16</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="activatable">True</property>
+ <property name="title" translatable="no">.tar.xz</property>
+ <property name="subtitle" translatable="yes">Smaller archives but Linux and Mac only.</property>
+ <signal name="activated" handler="tar_xz_row_on_activated"/>
+ <child>
+ <object class="GtkImage" id="tar_xz_checkmark">
+ <property name="visible">True</property>
+ <property name="width-request">16</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child>
+ <object class="HdyActionRow">
+ <property name="visible">True</property>
+ <property name="activatable">True</property>
+ <property name="title" translatable="no">.7z</property>
+ <property name="subtitle" translatable="yes">Smaller archives but must be installed on Windows and Mac.</property>
+ <signal name="activated" handler="seven_zip_row_on_activated"/>
+ <child>
+ <object class="GtkImage" id="seven_zip_checkmark">
+ <property name="visible">True</property>
+ <property name="width-request">16</property>
+ <property name="margin-start">12</property>
+ <property name="margin-end">12</property>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ </object>
<object class="GtkDialog" id="compress_dialog">
<property name="title" translatable="yes">Create Archive</property>
<property name="resizable">False</property>
@@ -9,19 +73,26 @@
<property name="destroy_with_parent">True</property>
<property name="type_hint">dialog</property>
<property name="use-header-bar">1</property>
+ <property name="default-width">500</property>
+ <property name="default-height">210</property>
<child internal-child="vbox">
<object class="GtkBox" id="vbox">
<property name="orientation">vertical</property>
- <property name="margin_top">18</property>
- <property name="margin_bottom">12</property>
- <property name="margin_start">18</property>
- <property name="margin_end">18</property>
+ <property name="margin-top">30</property>
+ <property name="margin-bottom">30</property>
+ <property name="margin-start">30</property>
+ <property name="margin-end">30</property>
+ <property name="width-request">390</property>
+ <property name="halign">center</property>
<property name="spacing">6</property>
<child>
<object class="GtkLabel" id="name_label">
<property name="label" translatable="yes">Archive name</property>
<property name="visible">True</property>
<property name="xalign">0</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
</object>
<packing>
<property name="expand">False</property>
@@ -30,132 +101,82 @@
</packing>
</child>
<child>
- <object class="GtkEntry" id="name_entry">
- <property name="visible">True</property>
- <property name="can_focus">True</property>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
- </child>
- <child>
- <object class="GtkRevealer" id="error_revealer">
- <child>
- <object class="GtkLabel" id="error_label">
- <property name="margin_top">4</property>
- <property name="margin_bottom">4</property>
- <property name="visible">True</property>
- <property name="xalign">0</property>
- </object>
- </child>
- </object>
- <packing>
- <property name="expand">False</property>
- <property name="fill">True</property>
- <property name="position">3</property>
- </packing>
- </child>
- <child>
- <object class="GtkBox" id="hbox">
+ <object class="GtkBox">
<property name="orientation">horizontal</property>
- <property name="homogeneous">True</property>
- <property name="spacing">0</property>
- <child>
- <object class="GtkRadioButton" id="zip_radio_button">
- <property name="label" translatable="no">.zip</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="zip_radio_button_on_toggled"/>
- </object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">0</property>
- </packing>
- </child>
+ <property name="spacing">12</property>
<child>
- <object class="GtkRadioButton" id="tar_xz_radio_button">
- <property name="label" translatable="no">.tar.xz</property>
- <property name="group">zip_radio_button</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="tar_xz_radio_button_on_toggled"/>
+ <object class="GtkEntry" id="name_entry">
+ <property name="visible">True</property>
+ <property name="can_focus">True</property>
+ <property name="width-chars">30</property>
</object>
<packing>
<property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">1</property>
</packing>
</child>
<child>
- <object class="GtkRadioButton" id="seven_zip_radio_button">
- <property name="label" translatable="no">.7z</property>
- <property name="group">zip_radio_button</property>
- <property name="draw_indicator">True</property>
- <signal name="toggled" handler="seven_zip_radio_button_on_toggled"/>
+ <object class="GtkMenuButton" id="extension_button">
+ <property name="popover">extension_popover</property>
+ <child>
+ <object class="GtkBox">
+ <property name="orientation">horizontal</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkStack" id="extension_stack">
+ <child>
+ <object class="GtkLabel" id="zip_label">
+ <property name="label" translatable="no">.zip</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="tar_xz_label">
+ <property name="label" translatable="no">.tar.xz</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ <child>
+ <object class="GtkLabel" id="seven_zip_label">
+ <property name="label" translatable="no">.7z</property>
+ <property name="xalign">0</property>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">True</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkImage">
+ <property name="icon-name">pan-down-symbolic</property>
+ </object>
+ </child>
+ </object>
+ </child>
</object>
- <packing>
- <property name="expand">True</property>
- <property name="fill">True</property>
- <property name="position">2</property>
- </packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">4</property>
+ <property name="position">2</property>
</packing>
</child>
<child>
- <object class="GtkStack" id="description_stack">
- <property name="visible">True</property>
- <property name="can_focus">False</property>
- <property name="homogeneous">True</property>
- <child>
- <object class="GtkLabel" id="zip_description_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Compatible with all operating systems.</property>
- <property name="xalign">0</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="name">zip-description-label</property>
- </packing>
- </child>
- <child>
- <object class="GtkLabel" id="tar_xz_description_label">
- <property name="visible">True</property>
- <property name="label" translatable="yes">Smaller archives but Linux and Mac only.</property>
- <property name="xalign">0</property>
- <style>
- <class name="dim-label"/>
- </style>
- </object>
- <packing>
- <property name="name">tar-xz-description-label</property>
- </packing>
- </child>
+ <object class="GtkRevealer" id="error_revealer">
<child>
- <object class="GtkLabel" id="seven_zip_description_label">
+ <object class="GtkLabel" id="error_label">
+ <property name="margin_top">4</property>
+ <property name="margin_bottom">4</property>
<property name="visible">True</property>
- <property name="label" translatable="yes">Smaller archives but must be installed on Windows and Mac.</property>
<property name="xalign">0</property>
- <style>
- <class name="dim-label"/>
- </style>
</object>
- <packing>
- <property name="name">seven-zip-description-label</property>
- </packing>
</child>
</object>
<packing>
<property name="expand">False</property>
<property name="fill">True</property>
- <property name="position">5</property>
+ <property name="position">3</property>
</packing>
</child>
</object>
--
2.31.1

View File

@ -0,0 +1,117 @@
From 67c7bdbf8757c51d3b1bc1f5c40eaeddef9e3a89 Mon Sep 17 00:00:00 2001
From: Anubhav Tyagi <tyagianubhav619@gmail.com>
Date: Sat, 17 Jul 2021 12:39:20 +0530
Subject: [PATCH] files-view: Store selected files list for compressing
The selected files list is chosen after the user confirmed the compress
operation in the compress-dialog which may result in files other than
chosen file being compressed.
Store the list of selected files when the user chooses the "Compress"
option from the menu, to avoid that
Fixes: https://gitlab.gnome.org/GNOME/nautilus/-/issues/1900
(cherry picked from commit 6c7eacd20302046521e89dd28240c6b0193ba942)
---
src/nautilus-files-view.c | 37 +++++++++++++++++++++++++++----------
1 file changed, 27 insertions(+), 10 deletions(-)
diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c
index 378e6bdba..b4a91226b 100644
--- a/src/nautilus-files-view.c
+++ b/src/nautilus-files-view.c
@@ -302,6 +302,12 @@ typedef struct
NautilusDirectory *directory;
} FileAndDirectory;
+typedef struct
+{
+ NautilusFilesView *view;
+ GList *selection;
+} CompressCallbackData;
+
/* forward declarations */
static gboolean display_selection_info_idle_callback (gpointer data);
@@ -2217,9 +2223,9 @@ static void
compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *controller,
gpointer user_data)
{
+ CompressCallbackData *callback_data = user_data;
NautilusFilesView *view;
g_autofree gchar *name = NULL;
- GList *selection;
GList *source_files = NULL;
GList *l;
CompressData *data;
@@ -2230,12 +2236,10 @@ compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *c
AutoarFormat format;
AutoarFilter filter;
- view = NAUTILUS_FILES_VIEW (user_data);
+ view = NAUTILUS_FILES_VIEW (callback_data->view);
priv = nautilus_files_view_get_instance_private (view);
- selection = nautilus_files_view_get_selection_for_file_transfer (view);
-
- for (l = selection; l != NULL; l = l->next)
+ for (l = callback_data->selection; l != NULL; l = l->next)
{
source_files = g_list_prepend (source_files,
nautilus_file_get_location (l->data));
@@ -2302,7 +2306,6 @@ compress_dialog_controller_on_name_accepted (NautilusFileNameWidgetController *c
compress_done,
data);
- nautilus_file_list_free (selection);
g_list_free_full (source_files, g_object_unref);
g_clear_object (&priv->compress_controller);
}
@@ -2320,6 +2323,12 @@ compress_dialog_controller_on_cancelled (NautilusNewFolderDialogController *cont
g_clear_object (&priv->compress_controller);
}
+static void
+compress_callback_data_free (CompressCallbackData *data)
+{
+ nautilus_file_list_free (data->selection);
+ g_free (data);
+}
static void
nautilus_files_view_compress_dialog_new (NautilusFilesView *view)
@@ -2328,6 +2337,7 @@ nautilus_files_view_compress_dialog_new (NautilusFilesView *view)
NautilusFilesViewPrivate *priv;
g_autolist (NautilusFile) selection = NULL;
g_autofree char *common_prefix = NULL;
+ CompressCallbackData *data;
priv = nautilus_files_view_get_instance_private (view);
@@ -2365,10 +2375,17 @@ nautilus_files_view_compress_dialog_new (NautilusFilesView *view)
containing_directory,
common_prefix);
- g_signal_connect (priv->compress_controller,
- "name-accepted",
- (GCallback) compress_dialog_controller_on_name_accepted,
- view);
+ data = g_new0 (CompressCallbackData, 1);
+ data->view = view;
+ data->selection = nautilus_files_view_get_selection_for_file_transfer (view);
+
+ g_signal_connect_data (priv->compress_controller,
+ "name-accepted",
+ (GCallback) compress_dialog_controller_on_name_accepted,
+ data,
+ (GClosureNotify) compress_callback_data_free,
+ G_CONNECT_AFTER);
+
g_signal_connect (priv->compress_controller,
"cancelled",
(GCallback) compress_dialog_controller_on_cancelled,
--
2.31.1

View File

@ -1,21 +1,22 @@
%global glib2_version 2.67.1
%global gnome_autoar_version 0.3.0
%global gnome_autoar_version 0.4.0
%global gtk3_version 3.22.27
%global tarball_version %%(echo %{version} | tr '~' '.')
Name: nautilus
Version: 40.1
Release: 4%{?dist}
Version: 40.2
Release: 3%{?dist}
Summary: File manager for GNOME
License: GPLv3+
URL: https://wiki.gnome.org/Apps/Nautilus
Source0: https://download.gnome.org/sources/%{name}/40/%{name}-%{tarball_version}.tar.xz
# Backported from upstream
# https://gitlab.gnome.org/GNOME/nautilus/-/merge_requests/664
Patch0: 664.patch
Patch0: files-view-Store-selected-files-list-for-compressing.patch
Patch1: compress-dialog-Update-dialog-design.patch
Patch2: compress-dialog-Add-support-for-encrypted-.zip.patch
Patch3: compress-dialog-Backport-translations.patch
BuildRequires: desktop-file-utils
BuildRequires: gcc
@ -147,6 +148,15 @@ desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/*.desktop
%doc %{_datadir}/gtk-doc/html/libnautilus-extension/
%changelog
* Fri Sep 17 2021 Ondrej Holy <oholy@redhat.com> - 40.2-3
- Backport translations for encrypted archives support (#1993015)
* Tue Aug 10 2021 Ondrej Holy <oholy@redhat.com> - 40.2-2
- Add support for creation of password-protected archives (#1991575)
* Tue Aug 10 2021 Ondrej Holy <oholy@redhat.com> - 40.2-1
- Update to 40.2 (#1991433)
* Mon Aug 09 2021 Mohan Boddu <mboddu@redhat.com> - 40.1-4
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688