Revision: 1657
http://geeqie.svn.sourceforge.net/geeqie/?rev=1657&view=rev
Author: nadvornik
Date: 2009-04-23 20:48:03 +0000 (Thu, 23 Apr 2009)
Log Message:
-----------
differentiate between "Cancel" and "Discard changes"
Modified Paths:
--------------
trunk/src/utilops.c
Modified: trunk/src/utilops.c
===================================================================
--- trunk/src/utilops.c 2009-04-21 21:47:11 UTC (rev 1656)
+++ trunk/src/utilops.c 2009-04-23 20:48:03 UTC (rev 1657)
@@ -252,7 +252,8 @@
UTILITY_PHASE_ENTERING,
UTILITY_PHASE_CHECKED,
UTILITY_PHASE_DONE,
- UTILITY_PHASE_CANCEL
+ UTILITY_PHASE_CANCEL,
+ UTILITY_PHASE_DISCARD
} UtilityPhase;
enum {
@@ -319,6 +320,8 @@
FileUtilDoneFunc done_func;
void (*details_func)(FileData *fd, GtkWidget *parent);
+ gboolean (*finalize_func)(FileData *fd);
+ gboolean (*discard_func)(FileData *fd);
gpointer done_data;
};
@@ -560,10 +563,9 @@
ud->flist = g_list_remove(ud->flist, fd);
- /* FIXME: put it here for now */
- if (ud->type == UTILITY_TYPE_WRITE_METADATA)
+ if (ud->finalize_func)
{
- metadata_write_queue_remove(fd);
+ ud->finalize_func(fd);
}
if (ud->with_sidecars)
@@ -991,6 +993,18 @@
file_util_dialog_run(ud);
}
+static void file_util_discard_cb(GenericDialog *gd, gpointer data)
+{
+ UtilityData *ud = data;
+
+ generic_dialog_close(gd);
+
+ ud->gd = NULL;
+
+ ud->phase = UTILITY_PHASE_DISCARD;
+ file_util_dialog_run(ud);
+}
+
static void file_util_ok_cb(GenericDialog *gd, gpointer data)
{
UtilityData *ud = data;
@@ -1319,6 +1333,7 @@
ud->gd = file_util_gen_dlg(ud->messages.title, "dlg_confirm",
ud->parent, FALSE, file_util_cancel_cb, ud);
+ if (ud->discard_func) generic_dialog_add_button(ud->gd,
GTK_STOCK_REVERT_TO_SAVED, _("Discard changes"), file_util_discard_cb, FALSE);
if (ud->details_func) generic_dialog_add_button(ud->gd, GTK_STOCK_INFO,
_("File details"), file_util_details_cb, FALSE);
generic_dialog_add_button(ud->gd, stock_id, NULL, file_util_ok_cb,
TRUE);
@@ -1431,6 +1446,7 @@
box = generic_dialog_add_message(ud->gd, NULL, ud->messages.question,
NULL);
+ if (ud->discard_func) generic_dialog_add_button(ud->gd,
GTK_STOCK_REVERT_TO_SAVED, _("Discard changes"), file_util_discard_cb, FALSE);
if (ud->details_func) generic_dialog_add_button(ud->gd, GTK_STOCK_INFO,
_("File details"), file_util_details_cb, FALSE);
generic_dialog_add_button(ud->gd, GTK_STOCK_OK, ud->messages.title,
file_util_ok_cb, TRUE);
@@ -1548,6 +1564,22 @@
file_util_dialog_list_select(ud->listview, 0);
}
+static void file_util_finalize_all(UtilityData *ud)
+{
+ GList *work = ud->flist;
+
+ if (ud->phase == UTILITY_PHASE_CANCEL) return;
+ if (ud->phase == UTILITY_PHASE_DONE && !ud->finalize_func) return;
+ if (ud->phase == UTILITY_PHASE_DISCARD && !ud->discard_func) return;
+
+ while (work)
+ {
+ FileData *fd = work->data;
+ work = work->next;
+ if (ud->phase == UTILITY_PHASE_DONE) ud->finalize_func(fd);
+ else if (ud->phase == UTILITY_PHASE_DISCARD)
ud->discard_func(fd);
+ }
+}
void file_util_dialog_run(UtilityData *ud)
{
@@ -1590,12 +1622,9 @@
break;
case UTILITY_PHASE_CANCEL:
case UTILITY_PHASE_DONE:
+ case UTILITY_PHASE_DISCARD:
- /* FIXME: put it here for now */
- if (ud->type == UTILITY_TYPE_WRITE_METADATA)
- {
- metadata_write_queue_remove_list(ud->flist);
- }
+ file_util_finalize_all(ud);
if (ud->done_func)
ud->done_func((ud->phase ==
UTILITY_PHASE_DONE), ud->dest_path, ud->done_data);
@@ -1776,6 +1805,8 @@
ud->done_data = done_data;
ud->details_func = file_util_write_metadata_details_dialog;
+ ud->finalize_func = metadata_write_queue_remove;
+ ud->discard_func = metadata_write_queue_remove;
ud->messages.title = _("Write metadata");
ud->messages.question = _("Write metadata?");
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Crystal Reports - New Free Runtime and 30 Day Trial
Check out the new simplified licensign option that enables unlimited
royalty-free distribution of the report engine for externally facing
server and web deployment.
http://p.sf.net/sfu/businessobjects
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn