Mercurial > geeqie
changeset 1564:9de20cf1fac9
added details dialog for other operations too
author | nadvornik |
---|---|
date | Fri, 24 Apr 2009 23:26:49 +0000 |
parents | 9e99bf609394 |
children | 54bb40066b35 |
files | src/utilops.c |
diffstat | 1 files changed, 97 insertions(+), 46 deletions(-) [+] |
line wrap: on
line diff
--- a/src/utilops.c Fri Apr 24 22:51:00 2009 +0000 +++ b/src/utilops.c Fri Apr 24 23:26:49 2009 +0000 @@ -1700,45 +1700,6 @@ } -static void file_util_delete_full(FileData *source_fd, GList *source_list, GtkWidget *parent, UtilityPhase phase) -{ - UtilityData *ud; - GList *flist = filelist_copy(source_list); - - if (source_fd) - flist = g_list_append(flist, file_data_ref(source_fd)); - - if (!flist) return; - - file_util_disable_grouping_sc_list(flist); - - if (!file_data_sc_add_ci_delete_list(flist)) - { - file_util_warn_op_in_progress(_("File deletion failed")); - filelist_free(flist); - return; - } - - ud = file_util_data_new(UTILITY_TYPE_DELETE); - - ud->phase = phase; - - ud->with_sidecars = TRUE; - - ud->dir_fd = NULL; - ud->flist = flist; - ud->content_list = NULL; - ud->parent = parent; - - ud->messages.title = (gchar *)pgettext("physical","Delete"); - ud->messages.question = _("Delete files?"); - ud->messages.desc_flist = _("This will delete the following files"); - ud->messages.desc_source_fd = ""; - ud->messages.fail = _("File deletion failed"); - - file_util_dialog_run(ud); -} - static void file_util_details_dialog_close_cb(GtkWidget *widget, gpointer data) { gtk_widget_destroy(data); @@ -1757,7 +1718,7 @@ /* no op */ } -static void file_util_write_metadata_details_dialog_exclude(GenericDialog *gd, gpointer data, gboolean discard) +static void file_util_details_dialog_exclude(GenericDialog *gd, gpointer data, gboolean discard) { UtilityData *ud = data; FileData *fd = g_object_get_data(G_OBJECT(gd->dialog), "file_data"); @@ -1778,14 +1739,58 @@ } } -static void file_util_write_metadata_details_dialog_exclude_cb(GenericDialog *gd, gpointer data) +static void file_util_details_dialog_exclude_cb(GenericDialog *gd, gpointer data) { - file_util_write_metadata_details_dialog_exclude(gd, data, FALSE); + file_util_details_dialog_exclude(gd, data, FALSE); +} + +static void file_util_details_dialog_discard_cb(GenericDialog *gd, gpointer data) +{ + file_util_details_dialog_exclude(gd, data, TRUE); } -static void file_util_write_metadata_details_dialog_discard_cb(GenericDialog *gd, gpointer data) +static void file_util_details_dialog(UtilityData *ud, FileData *fd) { - file_util_write_metadata_details_dialog_exclude(gd, data, TRUE); + GenericDialog *gd; + GtkWidget *box; + gchar *message; + gint error; + const gchar *stock_id; + + gd = file_util_gen_dlg(_("File details"), "details", ud->gd->dialog, TRUE, NULL, ud); + generic_dialog_add_button(gd, GTK_STOCK_OK, NULL, file_util_details_dialog_ok_cb, TRUE); + generic_dialog_add_button(gd, GTK_STOCK_CANCEL, _("Exclude file"), file_util_details_dialog_exclude_cb, FALSE); + + g_object_set_data(G_OBJECT(gd->dialog), "file_data", fd); + + g_signal_connect(G_OBJECT(gd->dialog), "destroy", + G_CALLBACK(file_util_details_dialog_destroy_cb), ud); + + /* in case the ud->gd->dialog is closed during editing */ + g_signal_connect(G_OBJECT(ud->gd->dialog), "destroy", + G_CALLBACK(file_util_details_dialog_close_cb), gd->dialog); + + + error = ud->with_sidecars ? file_data_sc_verify_ci(fd) : file_data_verify_ci(fd); + + if (error) + { + message = file_data_get_error_string(error); + stock_id = (error & CHANGE_ERROR_MASK) ? GTK_STOCK_DIALOG_ERROR : GTK_STOCK_DIALOG_WARNING; + } + else + { + message = g_strdup(_("No problem detected")); + stock_id = GTK_STOCK_APPLY; + } + + box = generic_dialog_add_message(gd, stock_id, _("File details"), message); + + generic_dialog_add_image(gd, box, fd, NULL, NULL, NULL, FALSE); + + gtk_widget_show(gd->dialog); + + g_free(message); } static void file_util_write_metadata_details_dialog(UtilityData *ud, FileData *fd) @@ -1808,8 +1813,8 @@ gd = file_util_gen_dlg(_("Overview of changed metadata"), "details", ud->gd->dialog, TRUE, NULL, ud); generic_dialog_add_button(gd, GTK_STOCK_OK, NULL, file_util_details_dialog_ok_cb, TRUE); - generic_dialog_add_button(gd, GTK_STOCK_CANCEL, _("Exclude file"), file_util_write_metadata_details_dialog_exclude_cb, FALSE); - generic_dialog_add_button(gd, GTK_STOCK_REVERT_TO_SAVED, _("Discard changes"), file_util_write_metadata_details_dialog_discard_cb, FALSE); + generic_dialog_add_button(gd, GTK_STOCK_CANCEL, _("Exclude file"), file_util_details_dialog_exclude_cb, FALSE); + generic_dialog_add_button(gd, GTK_STOCK_REVERT_TO_SAVED, _("Discard changes"), file_util_details_dialog_discard_cb, FALSE); g_object_set_data(G_OBJECT(gd->dialog), "file_data", fd); @@ -1871,6 +1876,48 @@ g_free(message); } +static void file_util_delete_full(FileData *source_fd, GList *source_list, GtkWidget *parent, UtilityPhase phase) +{ + UtilityData *ud; + GList *flist = filelist_copy(source_list); + + if (source_fd) + flist = g_list_append(flist, file_data_ref(source_fd)); + + if (!flist) return; + + file_util_disable_grouping_sc_list(flist); + + if (!file_data_sc_add_ci_delete_list(flist)) + { + file_util_warn_op_in_progress(_("File deletion failed")); + filelist_free(flist); + return; + } + + ud = file_util_data_new(UTILITY_TYPE_DELETE); + + ud->phase = phase; + + ud->with_sidecars = TRUE; + + ud->dir_fd = NULL; + ud->flist = flist; + ud->content_list = NULL; + ud->parent = parent; + + ud->details_func = file_util_details_dialog; + + ud->messages.title = (gchar *)pgettext("physical","Delete"); + ud->messages.question = _("Delete files?"); + ud->messages.desc_flist = _("This will delete the following files"); + ud->messages.desc_source_fd = ""; + ud->messages.fail = _("File deletion failed"); + + file_util_dialog_run(ud); +} + + 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; @@ -2027,6 +2074,8 @@ ud->flist = flist; ud->content_list = NULL; ud->parent = parent; + + ud->details_func = file_util_details_dialog; ud->messages.title = _("Rename"); ud->messages.question = _("Rename files?"); @@ -2076,6 +2125,8 @@ ud->content_list = NULL; ud->parent = parent; + ud->details_func = file_util_details_dialog; + if (dest_path) ud->dest_path = g_strdup(dest_path); ud->messages.title = _("Editor");