summaryrefslogtreecommitdiff
path: root/libcaja-private
diff options
context:
space:
mode:
authorZenWalker <[email protected]>2016-11-03 23:24:51 +0100
committerZenWalker <[email protected]>2016-11-03 23:24:51 +0100
commit1ca6c5f9c7ced0f906de5dda119cdd37c76d8cfa (patch)
tree9cd8e5431fb79e2a6d0e8a44f636cc06107f3f90 /libcaja-private
parent5aa0c0f7f1d9b6fe1b844d7688a18e68347db96b (diff)
downloadcaja-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
Diffstat (limited to 'libcaja-private')
-rw-r--r--libcaja-private/caja-file-conflict-dialog.c48
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,