[gthumb] show a warning if no file was imported, or delete is not supported



commit 295d308baa3490c4dcad655a459ba17ce8b4503f
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Thu Feb 18 21:29:38 2010 +0100

    show a warning if no file was imported, or delete is not supported
    
    [bug #610190]

 .../importer/data/gthumb-importer.schemas.in       |   13 +++++
 extensions/importer/gth-import-task.c              |   53 ++++++++++++++++++--
 extensions/importer/preferences.h                  |    1 +
 gthumb/gtk-utils.c                                 |    5 +-
 4 files changed, 66 insertions(+), 6 deletions(-)
---
diff --git a/extensions/importer/data/gthumb-importer.schemas.in b/extensions/importer/data/gthumb-importer.schemas.in
index 4054ed3..4a3f7ad 100644
--- a/extensions/importer/data/gthumb-importer.schemas.in
+++ b/extensions/importer/data/gthumb-importer.schemas.in
@@ -92,5 +92,18 @@
 	</locale>
       </schema>
 
+      <schema>
+	<key>/schemas/apps/gthumb/ext/importer/warn_delete_unsupported</key>
+	<applyto>/apps/gthumb/ext/importer/warn_delete_unsupported</applyto>
+	<owner>gthumb</owner>
+	<type>bool</type>
+	<default>TRUE</default>
+	<locale name="C">
+	  <short></short>
+	  <long>
+	  </long>
+	</locale>
+      </schema>
+
     </schemalist>
 </gconfschemafile>
diff --git a/extensions/importer/gth-import-task.c b/extensions/importer/gth-import-task.c
index 3543c85..1075347 100644
--- a/extensions/importer/gth-import-task.c
+++ b/extensions/importer/gth-import-task.c
@@ -25,6 +25,7 @@
 #include <extensions/exiv2_tools/exiv2-utils.h>
 #include <extensions/image_rotation/rotation-utils.h>
 #include "gth-import-task.h"
+#include "preferences.h"
 #include "utils.h"
 
 
@@ -52,6 +53,8 @@ struct _GthImportTaskPrivate {
 	GList               *current;
 	GthFileData         *destination_file;
 	GFile               *imported_catalog;
+	gboolean             delete_not_supported;
+	int                  n_imported;
 };
 
 
@@ -120,6 +123,8 @@ catalog_imported_file (GthImportTask *self)
 	GTimeVal    timeval;
 	GthCatalog *catalog;
 
+	self->priv->n_imported++;
+
 	if (! gth_main_extension_is_active ("catalogs")) {
 		import_next_file (self);
 		return;
@@ -233,6 +238,7 @@ write_buffer_ready_cb (void     **buffer,
 		{
 			if (g_error_matches (local_error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED)) {
 				self->priv->delete_imported = FALSE;
+				self->priv->delete_not_supported = TRUE;
 				local_error = NULL;
 			}
 			if (local_error != NULL) {
@@ -344,10 +350,47 @@ import_current_file (GthImportTask *self)
 
 	if (self->priv->current == NULL) {
 		save_catalogs (self);
-		if (self->priv->imported_catalog != NULL)
-			gth_browser_go_to (self->priv->browser, self->priv->imported_catalog, NULL);
-		else
-			gth_browser_go_to (self->priv->browser, self->priv->destination, NULL);
+
+		if (self->priv->n_imported == 0) {
+			GtkWidget *d;
+
+			d =  _gtk_message_dialog_new (GTK_WINDOW (self->priv->browser),
+						      0,
+						      GTK_STOCK_DIALOG_WARNING,
+						      _("No file imported"),
+						      _("The selected files are already present in the destination."),
+						      GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL,
+						      NULL);
+			g_signal_connect (G_OBJECT (d), "response",
+					  G_CALLBACK (gtk_widget_destroy),
+					  NULL);
+			gtk_widget_show (d);
+		}
+		else {
+			if (self->priv->imported_catalog != NULL)
+				gth_browser_go_to (self->priv->browser, self->priv->imported_catalog, NULL);
+			else
+				gth_browser_go_to (self->priv->browser, self->priv->destination, NULL);
+
+			if (self->priv->delete_not_supported && eel_gconf_get_boolean (PREF_IMPORT_WARN_DELETE_UNSUPPORTED, TRUE)) {
+				GtkWidget *d;
+
+				d =  _gtk_message_dialog_new (GTK_WINDOW (self->priv->browser),
+							      0,
+							      GTK_STOCK_DIALOG_WARNING,
+							      _("Could not delete the files"),
+							      _("Delete operation not supported."),
+							      GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL,
+							      NULL);
+				g_signal_connect (G_OBJECT (d), "response",
+						  G_CALLBACK (gtk_widget_destroy),
+						  NULL);
+				gtk_widget_show (d);
+
+				eel_gconf_set_boolean (PREF_IMPORT_WARN_DELETE_UNSUPPORTED, FALSE);
+			}
+		}
+
 		gth_task_completed (GTH_TASK (self), NULL);
 		return;
 	}
@@ -375,6 +418,7 @@ gth_import_task_exec (GthTask *base)
 	GthImportTask *self = (GthImportTask *) base;
 	GList         *scan;
 
+	self->priv->n_imported = 0;
 	self->priv->tot_size = 0;
 	for (scan = self->priv->files; scan; scan = scan->next) {
 		GthFileData *file_data = scan->data;
@@ -445,6 +489,7 @@ gth_import_task_init (GthImportTask *self)
 {
 	self->priv = G_TYPE_INSTANCE_GET_PRIVATE (self, GTH_TYPE_IMPORT_TASK, GthImportTaskPrivate);
 	self->priv->catalogs = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
+	self->priv->delete_not_supported = FALSE;
 }
 
 
diff --git a/extensions/importer/preferences.h b/extensions/importer/preferences.h
index b1cc126..6ada88b 100644
--- a/extensions/importer/preferences.h
+++ b/extensions/importer/preferences.h
@@ -34,6 +34,7 @@ G_BEGIN_DECLS
 #define PREF_IMPORT_SUBFOLDER_CUSTOM_FORMAT "/apps/gthumb/ext/importer/subfolder_custom_format"
 #define PREF_IMPORT_OVERWRITE               "/apps/gthumb/ext/importer/overwrite_files"
 #define PREF_IMPORT_ADJUST_ORIENTATION      "/apps/gthumb/ext/importer/adjust_orientation"
+#define PREF_IMPORT_WARN_DELETE_UNSUPPORTED "/apps/gthumb/ext/importer/warn_delete_unsupported"
 
 G_END_DECLS
 
diff --git a/gthumb/gtk-utils.c b/gthumb/gtk-utils.c
index 122aecd..0b0690e 100644
--- a/gthumb/gtk-utils.c
+++ b/gthumb/gtk-utils.c
@@ -119,7 +119,8 @@ _gtk_message_dialog_new (GtkWindow        *parent,
 					       escaped_message,
 					       escaped_secondary_message);
 		g_free (escaped_secondary_message);
-	} else
+	}
+	else
 		markup_text = g_strdup (escaped_message);
 	gtk_label_set_markup (GTK_LABEL (label), markup_text);
 	g_free (markup_text);
@@ -128,7 +129,7 @@ _gtk_message_dialog_new (GtkWindow        *parent,
 	gtk_label_set_line_wrap (GTK_LABEL (label), TRUE);
 	gtk_label_set_selectable (GTK_LABEL (label), TRUE);
 
-	hbox = gtk_hbox_new (FALSE, 6);
+	hbox = gtk_hbox_new (FALSE, 18);
 	gtk_container_set_border_width (GTK_CONTAINER (hbox), 6);
 
 	gtk_box_pack_start (GTK_BOX (hbox), image,



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