[gthumb] show a warning if no file was imported, or delete is not supported
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] show a warning if no file was imported, or delete is not supported
- Date: Thu, 18 Feb 2010 20:31:24 +0000 (UTC)
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]