Mercurial > geeqie
changeset 44:458e396d3f35
Wed May 18 19:36:49 2005 John Ellis <johne@verizon.net>
* utilops.[ch] (file_util_rename_dir): New utility to rename a folder,
does proper checking for existing folder to avoid clobbering an
existing folder.
* view_dir_list.c, view_dir_tree.c: Use new utility above when renaming
a folder to fix possible clobbering of an existing folder with the
same name as the requested name.
##### Note: GQview CVS on sourceforge is not always up to date, please use #####
##### an offical release when making enhancements and translation updates. #####
author | gqview |
---|---|
date | Wed, 18 May 2005 23:52:16 +0000 |
parents | ee03f36e9e4b |
children | 7cfa60beda76 |
files | ChangeLog src/utilops.c src/utilops.h src/view_dir_list.c src/view_dir_tree.c |
diffstat | 5 files changed, 53 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/ChangeLog Mon May 16 01:49:51 2005 +0000 +++ b/ChangeLog Wed May 18 23:52:16 2005 +0000 @@ -1,3 +1,12 @@ +Wed May 18 19:36:49 2005 John Ellis <johne@verizon.net> + + * utilops.[ch] (file_util_rename_dir): New utility to rename a folder, + does proper checking for existing folder to avoid clobbering an + existing folder. + * view_dir_list.c, view_dir_tree.c: Use new utility above when renaming + a folder to fix possible clobbering of an existing folder with the + same name as the requested name. + Sun May 15 21:40:26 2005 John Ellis <johne@verizon.net> * format_raw.[ch]: New files to parse image data and exif offsets for
--- a/src/utilops.c Mon May 16 01:49:51 2005 +0000 +++ b/src/utilops.c Wed May 18 23:52:16 2005 +0000 @@ -2453,3 +2453,43 @@ gtk_widget_show(GENERIC_DIALOG(fd)->dialog); } +gint file_util_rename_dir(const gchar *old_path, const gchar *new_path, GtkWidget *parent) +{ + const gchar *old_name; + const gchar *new_name; + + if (!old_path || !new_path || !isdir(old_path)) return FALSE; + + old_name = filename_from_path(old_path); + new_name = filename_from_path(new_path); + + if (isdir(new_path)) + { + gchar *text = g_strdup_printf(_("The folder:\n%s\nalready exists."), new_name); + file_util_warning_dialog(_("Folder exists"), text, GTK_STOCK_DIALOG_INFO, parent); + g_free(text); + + return FALSE; + } + + if (isname(new_path)) + { + gchar *text = g_strdup_printf(_("The path:\n%s\nalready exists as a file."), new_name); + file_util_warning_dialog(_("Rename failed"), text, GTK_STOCK_DIALOG_INFO,parent); + g_free(text); + + return FALSE; + } + + if (!rename_file(old_path, new_path)) + { + gchar *text = g_strdup_printf(_("Failed to rename %s to %s."), old_name, new_name); + file_util_warning_dialog("Rename failed", text, GTK_STOCK_DIALOG_ERROR, parent); + g_free(text); + + return FALSE; + } + + return TRUE; +} +
--- a/src/utilops.h Mon May 16 01:49:51 2005 +0000 +++ b/src/utilops.h Wed May 18 23:52:16 2005 +0000 @@ -39,7 +39,9 @@ void file_util_move(const gchar *source_path, GList *source_list, const gchar *dest_path, GtkWidget *parent); void file_util_copy(const gchar *source_path, GList *source_list, const gchar *dest_path, GtkWidget *parent); void file_util_rename(const gchar *source_path, GList *source_list, GtkWidget *parent); + void file_util_create_dir(const gchar *path, GtkWidget *parent); +gint file_util_rename_dir(const gchar *old_path, const gchar *new_path, GtkWidget *parent); /* these avoid the location entry dialog, list must be files only and * dest_path must be a valid directory path
--- a/src/view_dir_list.c Mon May 16 01:49:51 2005 +0000 +++ b/src/view_dir_list.c Wed May 18 23:52:16 2005 +0000 @@ -90,15 +90,7 @@ new_path = concat_dir_and_file(base, new); g_free(base); - if (!rename_file(old_path, new_path)) - { - gchar *buf; - - buf = g_strdup_printf(_("Failed to rename %s to %s."), old, new); - file_util_warning_dialog("Rename failed", buf, GTK_STOCK_DIALOG_ERROR, vdl->listview); - g_free(buf); - } - else + if (file_util_rename_dir(old_path, new_path, vdl->listview)) { if (vdl->layout && strcmp(vdl->path, old_path) == 0) {
--- a/src/view_dir_tree.c Mon May 16 01:49:51 2005 +0000 +++ b/src/view_dir_tree.c Wed May 18 23:52:16 2005 +0000 @@ -197,15 +197,7 @@ new_path = concat_dir_and_file(base, new); g_free(base); - if (!rename_file(old_path, new_path)) - { - gchar *buf; - - buf = g_strdup_printf(_("Failed to rename %s to %s."), old, new); - file_util_warning_dialog("Rename failed", buf, GTK_STOCK_DIALOG_ERROR, vdt->treeview); - g_free(buf); - } - else + if (file_util_rename_dir(old_path, new_path, vdt->treeview)) { vdtree_populate_path(vdt, new_path, TRUE, TRUE);