diff options
author | ZenWalker <[email protected]> | 2016-11-03 23:24:51 +0100 |
---|---|---|
committer | ZenWalker <[email protected]> | 2016-11-03 23:24:51 +0100 |
commit | 1ca6c5f9c7ced0f906de5dda119cdd37c76d8cfa (patch) | |
tree | 9cd8e5431fb79e2a6d0e8a44f636cc06107f3f90 | |
parent | 5aa0c0f7f1d9b6fe1b844d7688a18e68347db96b (diff) | |
download | caja-1ca6c5f9c7ced0f906de5dda119cdd37c76d8cfa.tar.bz2 caja-1ca6c5f9c7ced0f906de5dda119cdd37c76d8cfa.tar.xz |
Improved merge folder dialog
based on nautilus commit:
https://git.gnome.org/browse/nautilus/commit/?id=b370817
Fixes partially #535
-rw-r--r-- | libcaja-private/caja-file-conflict-dialog.c | 48 |
1 files changed, 40 insertions, 8 deletions
diff --git a/libcaja-private/caja-file-conflict-dialog.c b/libcaja-private/caja-file-conflict-dialog.c index 531ac8c7..588483be 100644 --- a/libcaja-private/caja-file-conflict-dialog.c +++ b/libcaja-private/caja-file-conflict-dialog.c @@ -306,8 +306,14 @@ file_list_ready_cb (GList *files, } str = g_string_new (NULL); - g_string_append_printf (str, "<b>%s</b>\n", _("Original file")); - g_string_append_printf (str, "%s %s\n", _("Size:"), size); + if (dest_is_dir) { + g_string_append_printf (str, "<b>%s</b>\n", _("Original folder")); + g_string_append_printf (str, "%s %s\n", _("Items:"), size); + } + else { + g_string_append_printf (str, "<b>%s</b>\n", _("Original file")); + g_string_append_printf (str, "%s %s\n", _("Size:"), size); + } if (should_show_type) { @@ -339,8 +345,14 @@ file_list_ready_cb (GList *files, type = caja_file_get_string_attribute (src, "type"); } - g_string_append_printf (str, "<b>%s</b>\n", _("Replace with")); - g_string_append_printf (str, "%s %s\n", _("Size:"), size); + if (source_is_dir) { + g_string_append_printf (str, "<b>%s</b>\n", dest_is_dir ? _("Merge with") : _("Replace with")); + g_string_append_printf (str, "%s %s\n", _("Items:"), size); + } + else { + g_string_append_printf (str, "<b>%s</b>\n", _("Replace with")); + g_string_append_printf (str, "%s %s\n", _("Size:"), size); + } if (should_show_type) { @@ -592,10 +604,13 @@ caja_file_conflict_dialog_init (CajaFileConflictDialog *fcd) GtkWidget *widget, *dialog_area; CajaFileConflictDialogDetails *details; GtkDialog *dialog; + gboolean source_is_dir; details = fcd->details = CAJA_FILE_CONFLICT_DIALOG_GET_PRIVATE (fcd); dialog = GTK_DIALOG (fcd); + source_is_dir = caja_file_is_directory (details->source); + /* Setup the main hbox */ hbox = gtk_hbox_new (FALSE, 12); dialog_area = gtk_dialog_get_content_area (dialog); @@ -685,7 +700,8 @@ caja_file_conflict_dialog_init (CajaFileConflictDialog *fcd) gtk_widget_hide (details->diff_button); /* Setup the checkbox to apply the action to all files */ - widget = gtk_check_button_new_with_mnemonic (_("Apply this action to all files")); + widget = gtk_check_button_new_with_mnemonic (_("Apply this action to all files and folders")); + gtk_box_pack_start (GTK_BOX (vbox), widget, FALSE, FALSE, 0); details->checkbox = widget; @@ -780,10 +796,26 @@ caja_file_conflict_dialog_new (GtkWindow *parent, GFile *dest_dir) { GtkWidget *dialog; + CajaFile *src, *dest; + gboolean source_is_dir, dest_is_dir; + + src = caja_file_get (source); + dest = caja_file_get (destination); + + source_is_dir = caja_file_is_directory (src); + dest_is_dir = caja_file_is_directory (dest); + + if (source_is_dir) { + dialog = GTK_WIDGET (g_object_new (CAJA_TYPE_FILE_CONFLICT_DIALOG, + "title", dest_is_dir ? _("Merge Folder") : _("File and Folder conflict"), + NULL)); + } + else { + dialog = GTK_WIDGET (g_object_new (CAJA_TYPE_FILE_CONFLICT_DIALOG, + "title", dest_is_dir ? _("File and Folder conflict") : _("File conflict"), + NULL)); + } - dialog = GTK_WIDGET (g_object_new (CAJA_TYPE_FILE_CONFLICT_DIALOG, - "title", _("File conflict"), - NULL)); set_source_and_destination (dialog, source, destination, |