diff src/utilops.c @ 1231:ca8ccf0c3e81

added done callback to utilops used the callback for metadata writting at exit and for renaming new folder
author nadvornik
date Fri, 02 Jan 2009 14:58:21 +0000
parents ebfd305d902e
children e0e12512cde2
line wrap: on
line diff
--- a/src/utilops.c	Fri Jan 02 09:39:14 2009 +0000
+++ b/src/utilops.c	Fri Jan 02 14:58:21 2009 +0000
@@ -314,6 +314,9 @@
 	
 	gint external_command;
 	gpointer resume_data;
+	
+	FileUtilDoneFunc done_func;
+	gpointer done_data;
 };
 
 enum {
@@ -1566,6 +1569,10 @@
 				{
 				metadata_write_queue_remove_list(ud->flist);
 				}
+			
+			if (ud->done_func)
+				ud->done_func((ud->phase == UTILITY_PHASE_DONE), ud->dest_path, ud->done_data);
+				
 			if (ud->with_sidecars)
 				file_data_sc_free_ci_list(ud->flist);
 			else
@@ -1641,7 +1648,7 @@
 	file_util_dialog_run(ud);
 }
 
-static void file_util_write_metadata_full(FileData *source_fd, GList *source_list, GtkWidget *parent, UtilityPhase phase)
+static void file_util_write_metadata_full(FileData *source_fd, GList *source_list, GtkWidget *parent, UtilityPhase phase, FileUtilDoneFunc done_func, gpointer done_data)
 {
 	UtilityData *ud;
 	GList *flist = filelist_copy(source_list);
@@ -1669,6 +1676,9 @@
 	ud->content_list = NULL;
 	ud->parent = parent;
 	
+	ud->done_func = done_func;
+	ud->done_data = done_data;
+	
 	ud->messages.title = _("Write metadata");
 	ud->messages.question = _("Write metadata?");
 	ud->messages.desc_flist = _("This will write the changed metadata into the following files");
@@ -2232,7 +2242,7 @@
 	file_util_dialog_run(ud);
 }
 
-static void file_util_create_dir_full(FileData *fd, const gchar *dest_path, GtkWidget *parent, UtilityPhase phase)
+static void file_util_create_dir_full(FileData *fd, const gchar *dest_path, GtkWidget *parent, UtilityPhase phase, FileUtilDoneFunc done_func, gpointer done_data)
 {
 	UtilityData *ud; 
 
@@ -2258,6 +2268,9 @@
 		}
 	
 	ud->dir_fd = file_data_new_simple(ud->dest_path);
+
+	ud->done_func = done_func;
+	ud->done_data = done_data;
 	
 	ud->messages.title = _("Create Folder");
 	ud->messages.question = _("Create folder?");
@@ -2277,10 +2290,11 @@
 	file_util_delete_full(source_fd, source_list, parent, options->file_ops.confirm_delete ? UTILITY_PHASE_START : UTILITY_PHASE_ENTERING);
 }
 
-void file_util_write_metadata(FileData *source_fd, GList *source_list, GtkWidget *parent)
+void file_util_write_metadata(FileData *source_fd, GList *source_list, GtkWidget *parent, FileUtilDoneFunc done_func, gpointer done_data)
 {
 	file_util_write_metadata_full(source_fd, source_list, parent, 
-	                              (options->metadata.save_in_image_file && options->metadata.confirm_write) ? UTILITY_PHASE_START : UTILITY_PHASE_ENTERING);
+	                              (options->metadata.save_in_image_file && options->metadata.confirm_write) ? UTILITY_PHASE_START : UTILITY_PHASE_ENTERING,
+	                              done_func, done_data);
 }
 
 void file_util_copy(FileData *source_fd, GList *source_list, const gchar *dest_path, GtkWidget *parent)
@@ -2342,9 +2356,9 @@
 	file_util_delete_dir_full(fd, parent, UTILITY_PHASE_START);
 }
 
-void file_util_create_dir(FileData *dir_fd, GtkWidget *parent)
+void file_util_create_dir(FileData *dir_fd, GtkWidget *parent, FileUtilDoneFunc done_func, gpointer done_data)
 {
-	file_util_create_dir_full(dir_fd, NULL, parent, UTILITY_PHASE_ENTERING);
+	file_util_create_dir_full(dir_fd, NULL, parent, UTILITY_PHASE_ENTERING, done_func, done_data);
 }
 
 void file_util_rename_dir(FileData *source_fd, const gchar *new_path, GtkWidget *parent)