[gthumb] made the code more readable using adding a file_to_save attribute



commit 966719cdf426e5b4ec908296dc61a2b1a226c4bc
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Mon Jan 2 11:53:42 2012 +0100

    made the code more readable using adding a file_to_save attribute

 extensions/image_viewer/gth-image-viewer-page.c |   42 ++++++++++++++---------
 1 files changed, 26 insertions(+), 16 deletions(-)
---
diff --git a/extensions/image_viewer/gth-image-viewer-page.c b/extensions/image_viewer/gth-image-viewer-page.c
index fd810cc..6323f55 100644
--- a/extensions/image_viewer/gth-image-viewer-page.c
+++ b/extensions/image_viewer/gth-image-viewer-page.c
@@ -1042,6 +1042,7 @@ gth_image_viewer_page_real_update_sensitivity (GthViewerPage *base)
 
 typedef struct {
 	GthImageViewerPage *self;
+	GthFileData        *file_to_save;
 	GthFileData        *original_file;
 	FileSavedFunc       func;
 	gpointer            user_data;
@@ -1049,6 +1050,15 @@ typedef struct {
 
 
 static void
+save_data_free (SaveData *data)
+{
+	g_object_unref (data->file_to_save);
+	g_object_unref (data->original_file);
+	g_free (data);
+}
+
+
+static void
 image_saved_cb (GthFileData *file_data,
 		GError      *error,
 		gpointer     user_data)
@@ -1060,17 +1070,12 @@ image_saved_cb (GthFileData *file_data,
 	error_occurred = error != NULL;
 
 	if (error_occurred) {
-		GthFileData *current_file;
-
-		current_file = gth_browser_get_current_file (self->priv->browser);
-		if (current_file != NULL) {
-			gth_file_data_set_file (current_file, data->original_file->file);
-			g_file_info_set_attribute_boolean (current_file->info, "gth::file::is-modified", FALSE);
-		}
+		gth_file_data_set_file (data->file_to_save, data->original_file->file);
+		g_file_info_set_attribute_boolean (data->file_to_save->info, "gth::file::is-modified", FALSE);
 	}
 
 	if (data->func != NULL)
-		(data->func) ((GthViewerPage *) self, self->priv->file_data, error, data->user_data);
+		(data->func) ((GthViewerPage *) self, data->file_to_save, error, data->user_data);
 	else if (error != NULL)
 		_gtk_error_dialog_from_gerror_show (GTK_WINDOW (self->priv->browser), _("Could not save the file"), error);
 
@@ -1078,8 +1083,8 @@ image_saved_cb (GthFileData *file_data,
 		GFile *folder;
 		GList *file_list;
 
-		folder = g_file_get_parent (self->priv->file_data->file);
-		file_list = g_list_prepend (NULL, g_object_ref (self->priv->file_data->file));
+		folder = g_file_get_parent (data->file_to_save->file);
+		file_list = g_list_prepend (NULL, g_object_ref (data->file_to_save->file));
 		gth_monitor_folder_changed (gth_main_get_default_monitor (),
 					    folder,
 					    file_list,
@@ -1089,8 +1094,7 @@ image_saved_cb (GthFileData *file_data,
 		g_object_unref (folder);
 	}
 
-	g_object_unref (data->original_file);
-	g_free (data);
+	save_data_free (data);
 }
 
 
@@ -1117,14 +1121,20 @@ _gth_image_viewer_page_real_save (GthViewerPage *base,
 		mime_type = gth_file_data_get_mime_type (self->priv->file_data);
 
 	current_file = gth_browser_get_current_file (self->priv->browser);
+	if (current_file == NULL)
+		return;
+
+	data->file_to_save = g_object_ref (current_file);
 	data->original_file = gth_file_data_dup (current_file);
 	if (file != NULL)
-		gth_file_data_set_file (current_file, file);
+		gth_file_data_set_file (data->file_to_save, file);
 
 	/* save the value of 'gth::file::is-modified' into 'gth::file::image-changed'
 	 * to allow the exiv2 metadata writer to not change some fields if the
 	 * content wasn't modified. */
-	g_file_info_set_attribute_boolean (current_file->info, "gth::file::image-changed", g_file_info_get_attribute_boolean (current_file->info, "gth::file::is-modified"));
+	g_file_info_set_attribute_boolean (data->file_to_save->info,
+					   "gth::file::image-changed",
+					   g_file_info_get_attribute_boolean (data->file_to_save->info, "gth::file::is-modified"));
 
 	/* the 'gth::file::is-modified' attribute must be set to false before
 	 * saving the file to avoid a scenario where the user is asked whether
@@ -1135,11 +1145,11 @@ _gth_image_viewer_page_real_save (GthViewerPage *base,
 	 * (see file_attributes_ready_cb in gth-browser.c) and if it has been
 	 * modified ('gth::file::is-modified' is TRUE) the user is asked if he
 	 * wants to save (see load_file_delayed_cb in gth-browser.c). */
-	g_file_info_set_attribute_boolean (current_file->info, "gth::file::is-modified", FALSE);
+	g_file_info_set_attribute_boolean (data->file_to_save->info, "gth::file::is-modified", FALSE);
 
 	pixbuf = gth_image_viewer_get_current_pixbuf (GTH_IMAGE_VIEWER (self->priv->viewer));
 	_gdk_pixbuf_save_async (pixbuf,
-			        current_file,
+				data->file_to_save,
 			        mime_type,
 			        TRUE,
 				image_saved_cb,



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]