From: Udi F. <udi...@us...> - 2007-03-31 18:52:50
|
Update of /cvsroot/ufraw/ufraw In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv9446 Modified Files: ufraw-gimp.c ufraw.h ufraw_preview.c ufraw_saver.c ufraw_writer.c Log Message: Fix ufraw-Bugs-1691138 - Don't quit when save fails. Make the surronding code a bit more elegant. Index: ufraw.h =================================================================== RCS file: /cvsroot/ufraw/ufraw/ufraw.h,v retrieving revision 1.47 retrieving revision 1.48 diff -C2 -d -r1.47 -r1.48 *** ufraw.h 31 Mar 2007 06:18:49 -0000 1.47 --- ufraw.h 31 Mar 2007 18:52:40 -0000 1.48 *************** *** 299,303 **** #define UFRAW_ERROR 100 #define UFRAW_CANCEL 101 - #define UFRAW_ABORT_SAVE 102 /* Unrecoverable error during image save */ #define UFRAW_RC_VERSION 103 /* Mismatch in version from .ufrawrc */ #define UFRAW_WARNING 104 --- 299,302 ---- Index: ufraw_writer.c =================================================================== RCS file: /cvsroot/ufraw/ufraw/ufraw_writer.c,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** ufraw_writer.c 16 Mar 2007 17:38:41 -0000 1.19 --- ufraw_writer.c 31 Mar 2007 18:52:41 -0000 1.20 *************** *** 82,86 **** char *confFilename=NULL; char *message=NULL; - message = message; ufraw_message(UFRAW_RESET, NULL); --- 82,85 ---- *************** *** 91,94 **** --- 90,94 ---- ufraw_message(UFRAW_ERROR, _("Image filename can not be the " "same as ID filename '%s'"), confFilename); + g_free(confFilename); return UFRAW_ERROR; } *************** *** 145,149 **** ufraw_message(UFRAW_ERROR, _("Error creating file '%s': %s."), uf->conf->outputFilename, g_strerror(errno)); ! status = UFRAW_ABORT_SAVE; break; } --- 145,149 ---- ufraw_message(UFRAW_ERROR, _("Error creating file '%s': %s."), uf->conf->outputFilename, g_strerror(errno)); ! status = UFRAW_ERROR; break; } *************** *** 162,166 **** ufraw_message(UFRAW_ERROR, _("Error creating file '%s': %s."), uf->conf->outputFilename, g_strerror(errno)); ! status = UFRAW_ABORT_SAVE; break; } --- 162,166 ---- ufraw_message(UFRAW_ERROR, _("Error creating file '%s': %s."), uf->conf->outputFilename, g_strerror(errno)); ! status = UFRAW_ERROR; break; } *************** *** 214,218 **** _("Error creating file '%s'.\n%s"), uf->conf->outputFilename, message); ! status = UFRAW_ABORT_SAVE; break; } --- 214,218 ---- _("Error creating file '%s'.\n%s"), uf->conf->outputFilename, message); ! status = UFRAW_ERROR; break; } *************** *** 230,234 **** _("Error creating file '%s'.\n%s"), uf->conf->outputFilename, message); ! status = UFRAW_ABORT_SAVE; break; } --- 230,234 ---- _("Error creating file '%s'.\n%s"), uf->conf->outputFilename, message); ! status = UFRAW_ERROR; break; } *************** *** 295,299 **** ufraw_message(UFRAW_ERROR, _("Error creating file '%s'.\n%s"), uf->conf->outputFilename, message); ! status = UFRAW_ABORT_SAVE; } else if (ufraw_message(UFRAW_GET_WARNING, NULL)!=NULL) { ufraw_message(UFRAW_REPORT, NULL); --- 295,299 ---- ufraw_message(UFRAW_ERROR, _("Error creating file '%s'.\n%s"), uf->conf->outputFilename, message); ! status = UFRAW_ERROR; } else if (ufraw_message(UFRAW_GET_WARNING, NULL)!=NULL) { ufraw_message(UFRAW_REPORT, NULL); *************** *** 304,308 **** _("Error creating file '%s'. Unknown file type %d."), uf->conf->outputFilename, uf->conf->type); ! status = UFRAW_ABORT_SAVE; } g_free(pixbuf16); --- 304,308 ---- _("Error creating file '%s'. Unknown file type %d."), uf->conf->outputFilename, uf->conf->type); ! status = UFRAW_ERROR; } g_free(pixbuf16); *************** *** 314,318 **** ufraw_message(UFRAW_ERROR, _("Error creating file '%s'.\n%s"), uf->conf->outputFilename, message); ! status = UFRAW_ABORT_SAVE; } } else --- 314,318 ---- ufraw_message(UFRAW_ERROR, _("Error creating file '%s'.\n%s"), uf->conf->outputFilename, message); ! status = UFRAW_ERROR; } } else Index: ufraw_saver.c =================================================================== RCS file: /cvsroot/ufraw/ufraw/ufraw_saver.c,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** ufraw_saver.c 16 Mar 2007 17:38:41 -0000 1.26 --- ufraw_saver.c 31 Mar 2007 18:52:40 -0000 1.27 *************** *** 15,21 **** #endif ! #include <stdio.h> /* for printf */ #include <string.h> ! #include <math.h> /* for fabs, floor */ #include <gtk/gtk.h> #include <locale.h> --- 15,21 ---- #endif ! #include <stdio.h> /* for printf */ #include <string.h> ! #include <math.h> /* for fabs, floor */ #include <gtk/gtk.h> #include <locale.h> *************** *** 46,50 **** GtkWidget *dialog = gtk_widget_get_ancestor(button, GTK_TYPE_DIALOG); if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) ! return; *valuep = (long)g_object_get_data(G_OBJECT(button), "ButtonValue"); char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); --- 46,50 ---- GtkWidget *dialog = gtk_widget_get_ancestor(button, GTK_TYPE_DIALOG); if (!gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(button))) ! return; *valuep = (long)g_object_get_data(G_OBJECT(button), "ButtonValue"); char *filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog)); *************** *** 75,82 **** } if ( adj==data->widthAdj ) { ! data->width = gtk_adjustment_get_value(data->widthAdj); ! data->height = data->width * data->uf->predictedHeight / data->uf->predictedWidth; ! data->shrink = (float)data->uf->predictedWidth / data->width; } gtk_adjustment_set_value(data->shrinkAdj, data->shrink); --- 75,82 ---- } if ( adj==data->widthAdj ) { ! data->width = gtk_adjustment_get_value(data->widthAdj); ! data->height = data->width * data->uf->predictedHeight / data->uf->predictedWidth; ! data->shrink = (float)data->uf->predictedWidth / data->width; } gtk_adjustment_set_value(data->shrinkAdj, data->shrink); *************** *** 93,113 **** type = strrchr(filename, '.'); if (type==NULL) { ! g_free(filename); ! return; } if ( !strcmp(type,".ppm") && data->uf->conf->type!=ppm16_type ) { ! data->uf->conf->type = ppm8_type; ! gtk_toggle_button_set_active(data->ppmButton, TRUE); } #ifdef HAVE_LIBTIFF if ( !strcmp(type,".tif") && data->uf->conf->type!=tiff16_type ) { ! data->uf->conf->type = tiff8_type; ! gtk_toggle_button_set_active(data->tiffButton, TRUE); } #endif #ifdef HAVE_LIBJPEG if ( !strcmp(type,".jpg") ) { ! data->uf->conf->type = jpeg_type; ! gtk_toggle_button_set_active(data->jpegButton, TRUE); } #endif --- 93,113 ---- type = strrchr(filename, '.'); if (type==NULL) { ! g_free(filename); ! return; } if ( !strcmp(type,".ppm") && data->uf->conf->type!=ppm16_type ) { ! data->uf->conf->type = ppm8_type; ! gtk_toggle_button_set_active(data->ppmButton, TRUE); } #ifdef HAVE_LIBTIFF if ( !strcmp(type,".tif") && data->uf->conf->type!=tiff16_type ) { ! data->uf->conf->type = tiff8_type; ! gtk_toggle_button_set_active(data->tiffButton, TRUE); } #endif #ifdef HAVE_LIBJPEG if ( !strcmp(type,".jpg") ) { ! data->uf->conf->type = jpeg_type; ! gtk_toggle_button_set_active(data->jpegButton, TRUE); } #endif *************** *** 115,121 **** } long ufraw_saver(void *widget, gpointer user_data) { - GtkWindow *parentWindow; GtkFileChooser *fileChooser; GtkWidget *expander, *box, *table, *widg, *button, *align, *overwriteButton; --- 115,143 ---- } + int ufraw_overwrite_dialog(char *filename, GtkWidget *widget) + { + char message[max_path]; + int response; + GtkWidget *dialog = gtk_dialog_new_with_buttons(_("File exists"), + GTK_WINDOW(gtk_widget_get_toplevel(widget)), + GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR, + GTK_STOCK_NO, GTK_RESPONSE_NO, + GTK_STOCK_YES, GTK_RESPONSE_YES, NULL); + char *utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); + if (utf8==NULL) utf8 = g_strdup("Unknown file name"); + snprintf(message, max_path, + _("File '%s' already exists.\nOverwrite?"), utf8); + g_free(utf8); + GtkWidget *label = gtk_label_new(message); + gtk_label_set_line_wrap(GTK_LABEL(label), TRUE); + gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), label); + gtk_widget_show_all(dialog); + response = gtk_dialog_run(GTK_DIALOG(dialog)); + gtk_widget_destroy(dialog); + return (response==GTK_RESPONSE_YES); + } + long ufraw_saver(void *widget, gpointer user_data) { GtkFileChooser *fileChooser; GtkWidget *expander, *box, *table, *widg, *button, *align, *overwriteButton; *************** *** 145,149 **** data->shrink = (float)uf->predictedHeight / uf->conf->size; } else { ! data->width = uf->conf->size; data->height = uf->conf->size * uf->predictedHeight / uf->predictedWidth; --- 167,171 ---- data->shrink = (float)uf->predictedHeight / uf->conf->size; } else { ! data->width = uf->conf->size; data->height = uf->conf->size * uf->predictedHeight / uf->predictedWidth; *************** *** 152,156 **** } else { if (uf->conf->shrink<1) { ! ufraw_message(UFRAW_ERROR, _("Fatal Error: uf->conf->shrink<1")); uf->conf->shrink = 1; } --- 174,178 ---- } else { if (uf->conf->shrink<1) { ! ufraw_message(UFRAW_ERROR, _("Fatal Error: uf->conf->shrink<1")); uf->conf->shrink = 1; } *************** *** 184,232 **** return (long)text; } - parentWindow = GTK_WINDOW(gtk_widget_get_toplevel(widget)); if (!strcmp(gtk_button_get_label(GTK_BUTTON(widget)), GTK_STOCK_SAVE)) { ! if ( !uf->conf->overwrite && uf->conf->createID!=only_id && g_file_test(absFilename, G_FILE_TEST_EXISTS) ) { ! GtkWidget *dialog; ! char message[max_path]; ! int response; ! dialog = gtk_dialog_new_with_buttons(_("File exists"), parentWindow, ! GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR, ! GTK_STOCK_NO, GTK_RESPONSE_NO, ! GTK_STOCK_YES, GTK_RESPONSE_YES, NULL); ! char *utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); ! if (utf8==NULL) utf8 = g_strdup("Unknown file name"); ! snprintf(message, max_path, ! _("File '%s' already exists.\nOverwrite?"), utf8); ! g_free(utf8); ! widg = gtk_label_new(message); ! gtk_label_set_line_wrap(GTK_LABEL(widg), TRUE); ! gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), widg); ! gtk_widget_show_all(dialog); ! response = gtk_dialog_run(GTK_DIALOG(dialog)); ! gtk_widget_destroy(dialog); ! if (response!=GTK_RESPONSE_YES) ! return UFRAW_SUCCESS; ! } g_strlcpy(uf->conf->outputFilename, absFilename, max_path); ! g_free(filename); g_free(absFilename); ! status = ufraw_write_image(uf); ! if (status==UFRAW_SUCCESS) { ! g_object_set_data(G_OBJECT(parentWindow), "WindowResponse", ! (gpointer)GTK_RESPONSE_OK); ! gtk_main_quit(); ! } else if (status==UFRAW_ABORT_SAVE) { ! g_object_set_data(G_OBJECT(parentWindow), "WindowResponse", ! (gpointer)GTK_RESPONSE_CANCEL); ! gtk_main_quit(); ! } else ! preview_progress(widget, "", 0); ! return UFRAW_SUCCESS; } fileChooser = GTK_FILE_CHOOSER(gtk_file_chooser_dialog_new( ! _("Save image"), parentWindow, GTK_FILE_CHOOSER_ACTION_SAVE, ! GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, ! GTK_STOCK_SAVE, GTK_RESPONSE_OK, NULL)); gtk_dialog_set_default_response(GTK_DIALOG(fileChooser), GTK_RESPONSE_OK); --- 206,226 ---- return (long)text; } if (!strcmp(gtk_button_get_label(GTK_BUTTON(widget)), GTK_STOCK_SAVE)) { ! if ( !uf->conf->overwrite && uf->conf->createID!=only_id && g_file_test(absFilename, G_FILE_TEST_EXISTS) ) { ! if ( !ufraw_overwrite_dialog(filename, widget) ) ! return UFRAW_ERROR; ! } g_strlcpy(uf->conf->outputFilename, absFilename, max_path); ! g_free(filename); g_free(absFilename); ! status = ufraw_write_image(uf); ! return status; } fileChooser = GTK_FILE_CHOOSER(gtk_file_chooser_dialog_new( ! _("Save image"), GTK_WINDOW(gtk_widget_get_toplevel(widget)), ! GTK_FILE_CHOOSER_ACTION_SAVE, ! GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, ! GTK_STOCK_SAVE, GTK_RESPONSE_OK, NULL)); gtk_dialog_set_default_response(GTK_DIALOG(fileChooser), GTK_RESPONSE_OK); *************** *** 256,261 **** if (uf->conf->interpolation==half_interpolation) { ! uf->conf->interpolation = ahd_interpolation; ! if (uf->conf->shrink<2) uf->conf->shrink = 2; } intCombo = GTK_COMBO_BOX(gtk_combo_box_new_text()); --- 250,255 ---- if (uf->conf->interpolation==half_interpolation) { ! uf->conf->interpolation = ahd_interpolation; ! if (uf->conf->shrink<2) uf->conf->shrink = 2; } intCombo = GTK_COMBO_BOX(gtk_combo_box_new_text()); *************** *** 274,280 **** gtk_table_attach(GTK_TABLE(table), widg, 0, 1, 1, 2, 0, 0, 0, 0); data->shrinkAdj = GTK_ADJUSTMENT(gtk_adjustment_new(data->shrink, ! 1, 100, 1, 2, 3)); g_signal_connect(G_OBJECT(data->shrinkAdj), "value-changed", ! G_CALLBACK(ufraw_saver_adjustment_update), data); widg = gtk_spin_button_new(data->shrinkAdj, 1, 3); gtk_table_attach(GTK_TABLE(table), widg, 1, 2, 1, 2, 0, 0, 0, 0); --- 268,274 ---- gtk_table_attach(GTK_TABLE(table), widg, 0, 1, 1, 2, 0, 0, 0, 0); data->shrinkAdj = GTK_ADJUSTMENT(gtk_adjustment_new(data->shrink, ! 1, 100, 1, 2, 3)); g_signal_connect(G_OBJECT(data->shrinkAdj), "value-changed", ! G_CALLBACK(ufraw_saver_adjustment_update), data); widg = gtk_spin_button_new(data->shrinkAdj, 1, 3); gtk_table_attach(GTK_TABLE(table), widg, 1, 2, 1, 2, 0, 0, 0, 0); *************** *** 283,289 **** gtk_table_attach(GTK_TABLE(table), widg, 2, 3, 1, 2, 0, 0, 0, 0); data->heightAdj = GTK_ADJUSTMENT(gtk_adjustment_new(data->height, ! uf->predictedHeight/100, uf->predictedHeight, 10, 100, 0)); g_signal_connect(G_OBJECT(data->heightAdj), "value-changed", ! G_CALLBACK(ufraw_saver_adjustment_update), data); widg = gtk_spin_button_new(data->heightAdj, 10, 0); gtk_table_attach(GTK_TABLE(table), widg, 3, 4, 1, 2, 0, 0, 0, 0); --- 277,283 ---- gtk_table_attach(GTK_TABLE(table), widg, 2, 3, 1, 2, 0, 0, 0, 0); data->heightAdj = GTK_ADJUSTMENT(gtk_adjustment_new(data->height, ! uf->predictedHeight/100, uf->predictedHeight, 10, 100, 0)); g_signal_connect(G_OBJECT(data->heightAdj), "value-changed", ! G_CALLBACK(ufraw_saver_adjustment_update), data); widg = gtk_spin_button_new(data->heightAdj, 10, 0); gtk_table_attach(GTK_TABLE(table), widg, 3, 4, 1, 2, 0, 0, 0, 0); *************** *** 292,298 **** gtk_table_attach(GTK_TABLE(table), widg, 4, 5, 1, 2, 0, 0, 0, 0); data->widthAdj = GTK_ADJUSTMENT(gtk_adjustment_new(data->width, ! uf->predictedWidth/100, uf->predictedWidth, 10, 100, 0)); g_signal_connect(G_OBJECT(data->widthAdj), "value-changed", ! G_CALLBACK(ufraw_saver_adjustment_update), data); widg = gtk_spin_button_new(data->widthAdj, 10, 0); gtk_table_attach(GTK_TABLE(table), widg, 5, 6, 1, 2, 0, 0, 0, 0); --- 286,292 ---- gtk_table_attach(GTK_TABLE(table), widg, 4, 5, 1, 2, 0, 0, 0, 0); data->widthAdj = GTK_ADJUSTMENT(gtk_adjustment_new(data->width, ! uf->predictedWidth/100, uf->predictedWidth, 10, 100, 0)); g_signal_connect(G_OBJECT(data->widthAdj), "value-changed", ! G_CALLBACK(ufraw_saver_adjustment_update), data); widg = gtk_spin_button_new(data->widthAdj, 10, 0); gtk_table_attach(GTK_TABLE(table), widg, 5, 6, 1, 2, 0, 0, 0, 0); *************** *** 302,318 **** data->ppmButton = GTK_TOGGLE_BUTTON(button); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), ! uf->conf->type==ppm8_type); g_object_set_data(G_OBJECT(button), "ButtonValue", (gpointer)ppm8_type); g_signal_connect(G_OBJECT(button), "toggled", ! G_CALLBACK(ufraw_radio_button_update), &uf->conf->type); gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); button = gtk_radio_button_new_with_label_from_widget( ! GTK_RADIO_BUTTON(button), _("16-bit ppm")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), ! uf->conf->type==ppm16_type); g_object_set_data(G_OBJECT(button), "ButtonValue", (gpointer)ppm16_type); g_signal_connect(G_OBJECT(button), "toggled", ! G_CALLBACK(ufraw_radio_button_update), &uf->conf->type); gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); #ifdef HAVE_LIBTIFF --- 296,312 ---- data->ppmButton = GTK_TOGGLE_BUTTON(button); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), ! uf->conf->type==ppm8_type); g_object_set_data(G_OBJECT(button), "ButtonValue", (gpointer)ppm8_type); g_signal_connect(G_OBJECT(button), "toggled", ! G_CALLBACK(ufraw_radio_button_update), &uf->conf->type); gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); button = gtk_radio_button_new_with_label_from_widget( ! GTK_RADIO_BUTTON(button), _("16-bit ppm")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), ! uf->conf->type==ppm16_type); g_object_set_data(G_OBJECT(button), "ButtonValue", (gpointer)ppm16_type); g_signal_connect(G_OBJECT(button), "toggled", ! G_CALLBACK(ufraw_radio_button_update), &uf->conf->type); gtk_box_pack_start(GTK_BOX(box), button, TRUE, TRUE, 0); #ifdef HAVE_LIBTIFF *************** *** 321,346 **** gtk_box_pack_start(GTK_BOX(box), table, TRUE, TRUE, 0); button = gtk_radio_button_new_with_label_from_widget( ! GTK_RADIO_BUTTON(button), _("8-bit TIFF")); data->tiffButton = GTK_TOGGLE_BUTTON(button); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), ! uf->conf->type==tiff8_type); g_object_set_data(G_OBJECT(button), "ButtonValue", (gpointer)tiff8_type); g_signal_connect(G_OBJECT(button), "toggled", ! G_CALLBACK(ufraw_radio_button_update), &uf->conf->type); align = gtk_alignment_new(0.0, 0.5, 0.0, 0.0); gtk_container_add(GTK_CONTAINER(align), button); gtk_table_attach(GTK_TABLE(table), align, 0, 1, 0, 1, GTK_FILL,0, 0, 0); button = gtk_radio_button_new_with_label_from_widget( ! GTK_RADIO_BUTTON(button), _("16-bit TIFF")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), ! uf->conf->type==tiff16_type); g_object_set_data(G_OBJECT(button), "ButtonValue", (gpointer)tiff16_type); g_signal_connect(G_OBJECT(button), "toggled", ! G_CALLBACK(ufraw_radio_button_update), &uf->conf->type); gtk_table_attach(GTK_TABLE(table), button, 0, 1, 1, 2, 0, 0, 0, 0); #ifdef HAVE_LIBZ losslessButton = gtk_check_button_new_with_label(_("ZIP Compress (lossless)")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(losslessButton), ! uf->conf->losslessCompress); gtk_table_attach(GTK_TABLE(table), losslessButton, 1, 2, 2, 3, 0, 0, 0, 0); #endif --- 315,340 ---- gtk_box_pack_start(GTK_BOX(box), table, TRUE, TRUE, 0); button = gtk_radio_button_new_with_label_from_widget( ! GTK_RADIO_BUTTON(button), _("8-bit TIFF")); data->tiffButton = GTK_TOGGLE_BUTTON(button); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), ! uf->conf->type==tiff8_type); g_object_set_data(G_OBJECT(button), "ButtonValue", (gpointer)tiff8_type); g_signal_connect(G_OBJECT(button), "toggled", ! G_CALLBACK(ufraw_radio_button_update), &uf->conf->type); align = gtk_alignment_new(0.0, 0.5, 0.0, 0.0); gtk_container_add(GTK_CONTAINER(align), button); gtk_table_attach(GTK_TABLE(table), align, 0, 1, 0, 1, GTK_FILL,0, 0, 0); button = gtk_radio_button_new_with_label_from_widget( ! GTK_RADIO_BUTTON(button), _("16-bit TIFF")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), ! uf->conf->type==tiff16_type); g_object_set_data(G_OBJECT(button), "ButtonValue", (gpointer)tiff16_type); g_signal_connect(G_OBJECT(button), "toggled", ! G_CALLBACK(ufraw_radio_button_update), &uf->conf->type); gtk_table_attach(GTK_TABLE(table), button, 0, 1, 1, 2, 0, 0, 0, 0); #ifdef HAVE_LIBZ losslessButton = gtk_check_button_new_with_label(_("ZIP Compress (lossless)")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(losslessButton), ! uf->conf->losslessCompress); gtk_table_attach(GTK_TABLE(table), losslessButton, 1, 2, 2, 3, 0, 0, 0, 0); #endif *************** *** 351,370 **** gtk_box_pack_start(GTK_BOX(box), table, TRUE, TRUE, 0); button = gtk_radio_button_new_with_label_from_widget( ! GTK_RADIO_BUTTON(button), "JPEG"); data->jpegButton = GTK_TOGGLE_BUTTON(button); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), ! uf->conf->type==jpeg_type); g_object_set_data(G_OBJECT(button), "ButtonValue", (gpointer)jpeg_type); g_signal_connect(G_OBJECT(button), "toggled", ! G_CALLBACK(ufraw_radio_button_update), &uf->conf->type); gtk_table_attach(GTK_TABLE(table), button, 0, 1, 0, 1, 0, 0, 0, 0); widg = gtk_label_new(_("Compression level")); gtk_table_attach(GTK_TABLE(table), widg, 1, 2, 1, 2, 0, 0, 0, 0); compressAdj = GTK_ADJUSTMENT(gtk_adjustment_new(uf->conf->compression, ! 0, 100, 5, 10, 0)); widg = gtk_hscale_new(compressAdj); gtk_scale_set_draw_value(GTK_SCALE(widg), FALSE); gtk_table_attach(GTK_TABLE(table), widg, 2, 3, 1, 2, ! GTK_EXPAND|GTK_FILL, 0, 0, 0); widg = gtk_spin_button_new(compressAdj, 5, 0); gtk_table_attach(GTK_TABLE(table), widg, 3, 4, 1, 2, 0, 0, 0, 0); --- 345,364 ---- gtk_box_pack_start(GTK_BOX(box), table, TRUE, TRUE, 0); button = gtk_radio_button_new_with_label_from_widget( ! GTK_RADIO_BUTTON(button), "JPEG"); data->jpegButton = GTK_TOGGLE_BUTTON(button); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button), ! uf->conf->type==jpeg_type); g_object_set_data(G_OBJECT(button), "ButtonValue", (gpointer)jpeg_type); g_signal_connect(G_OBJECT(button), "toggled", ! G_CALLBACK(ufraw_radio_button_update), &uf->conf->type); gtk_table_attach(GTK_TABLE(table), button, 0, 1, 0, 1, 0, 0, 0, 0); widg = gtk_label_new(_("Compression level")); gtk_table_attach(GTK_TABLE(table), widg, 1, 2, 1, 2, 0, 0, 0, 0); compressAdj = GTK_ADJUSTMENT(gtk_adjustment_new(uf->conf->compression, ! 0, 100, 5, 10, 0)); widg = gtk_hscale_new(compressAdj); gtk_scale_set_draw_value(GTK_SCALE(widg), FALSE); gtk_table_attach(GTK_TABLE(table), widg, 2, 3, 1, 2, ! GTK_EXPAND|GTK_FILL, 0, 0, 0); widg = gtk_spin_button_new(compressAdj, 5, 0); gtk_table_attach(GTK_TABLE(table), widg, 3, 4, 1, 2, 0, 0, 0, 0); *************** *** 372,376 **** exifButton = gtk_check_button_new_with_label(_("Embed EXIF data")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(exifButton), ! uf->conf->embedExif && uf->exifBuf!=NULL); gtk_widget_set_sensitive(exifButton, uf->exifBuf!=NULL); gtk_table_attach(GTK_TABLE(table), exifButton, 1, 2, 2, 3, 0, 0, 0, 0); --- 366,370 ---- exifButton = gtk_check_button_new_with_label(_("Embed EXIF data")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(exifButton), ! uf->conf->embedExif && uf->exifBuf!=NULL); gtk_widget_set_sensitive(exifButton, uf->exifBuf!=NULL); gtk_table_attach(GTK_TABLE(table), exifButton, 1, 2, 2, 3, 0, 0, 0, 0); *************** *** 395,399 **** gtk_container_add(GTK_CONTAINER(event), label); gtk_tooltips_set_tip(tips, event, ! _("Save current image manipulation parameters as defaults.\nThe output parameters in this window are always saved."), NULL); gtk_table_attach(GTK_TABLE(table), event, 3, 4, 0, 1, 0, 0, 0, 0); confCombo = GTK_COMBO_BOX(gtk_combo_box_new_text()); --- 389,394 ---- gtk_container_add(GTK_CONTAINER(event), label); gtk_tooltips_set_tip(tips, event, ! _("Save current image manipulation parameters as defaults.\n" ! "The output parameters in this window are always saved."), NULL); gtk_table_attach(GTK_TABLE(table), event, 3, 4, 0, 1, 0, 0, 0, 0); confCombo = GTK_COMBO_BOX(gtk_combo_box_new_text()); *************** *** 407,437 **** gtk_box_pack_start(GTK_BOX(box), gtk_hseparator_new(), TRUE, TRUE, 0); overwriteButton = gtk_check_button_new_with_label( ! _("Overwrite existing files without asking")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(overwriteButton), ! uf->conf->overwrite); gtk_box_pack_start(GTK_BOX(box), overwriteButton, TRUE, TRUE, 0); gtk_widget_show_all(expander); if (strlen(uf->conf->inputFilename)>0) { ! char *cp = g_path_get_dirname(uf->conf->inputFilename); ! if (strcmp(cp,".")) ! gtk_file_chooser_add_shortcut_folder(fileChooser, cp, NULL); ! g_free(cp); } g_signal_connect(G_OBJECT(fileChooser), "selection-changed", ! G_CALLBACK(ufraw_saver_set_type), data); data->FreezeDialog = FALSE; while(1) { ! status = gtk_dialog_run(GTK_DIALOG(fileChooser)); ! if (status==GTK_RESPONSE_CANCEL) { ufraw_focus(fileChooser, FALSE); ! gtk_widget_destroy(GTK_WIDGET(fileChooser)); ! return UFRAW_CANCEL; ! } /* GTK_RESPONSE_OK - save file */ ! filename = gtk_file_chooser_get_filename(fileChooser); ! uf->conf->interpolation = gtk_combo_box_get_active(intCombo); ! uf->conf->createID = gtk_combo_box_get_active(idCombo); ! uf->conf->saveConfiguration = gtk_combo_box_get_active(confCombo); if ( fabs(data->shrink-floor(data->shrink+0.0005))<0.0005 ) { uf->conf->shrink = floor(data->shrink+0.0005); --- 402,433 ---- gtk_box_pack_start(GTK_BOX(box), gtk_hseparator_new(), TRUE, TRUE, 0); overwriteButton = gtk_check_button_new_with_label( ! _("Overwrite existing files without asking")); gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(overwriteButton), ! uf->conf->overwrite); gtk_box_pack_start(GTK_BOX(box), overwriteButton, TRUE, TRUE, 0); gtk_widget_show_all(expander); if (strlen(uf->conf->inputFilename)>0) { ! char *cp = g_path_get_dirname(uf->conf->inputFilename); ! if (strcmp(cp,".")) ! gtk_file_chooser_add_shortcut_folder(fileChooser, cp, NULL); ! g_free(cp); } g_signal_connect(G_OBJECT(fileChooser), "selection-changed", ! G_CALLBACK(ufraw_saver_set_type), data); data->FreezeDialog = FALSE; while(1) { ! status = gtk_dialog_run(GTK_DIALOG(fileChooser)); ! if (status==GTK_RESPONSE_CANCEL) { ufraw_focus(fileChooser, FALSE); ! gtk_widget_destroy(GTK_WIDGET(fileChooser)); ! gtk_object_sink(GTK_OBJECT(tips)); ! return UFRAW_CANCEL; ! } /* GTK_RESPONSE_OK - save file */ ! filename = gtk_file_chooser_get_filename(fileChooser); ! uf->conf->interpolation = gtk_combo_box_get_active(intCombo); ! uf->conf->createID = gtk_combo_box_get_active(idCombo); ! uf->conf->saveConfiguration = gtk_combo_box_get_active(confCombo); if ( fabs(data->shrink-floor(data->shrink+0.0005))<0.0005 ) { uf->conf->shrink = floor(data->shrink+0.0005); *************** *** 441,497 **** uf->conf->size = floor(MAX(data->height, data->width)+0.5); } ! uf->conf->overwrite = gtk_toggle_button_get_active( ! GTK_TOGGLE_BUTTON(overwriteButton)); #if defined(HAVE_LIBZ) && defined(HAVE_LIBTIFF) ! uf->conf->losslessCompress = gtk_toggle_button_get_active( ! GTK_TOGGLE_BUTTON(losslessButton)); #endif #ifdef HAVE_LIBJPEG ! uf->conf->compression = gtk_adjustment_get_value(compressAdj); #if defined(HAVE_LIBEXIF) || defined(HAVE_EXIV2) ! uf->conf->embedExif = gtk_toggle_button_get_active( ! GTK_TOGGLE_BUTTON(exifButton)); #endif #endif ! if ( !uf->conf->overwrite && uf->conf->createID!=only_id && g_file_test(filename, G_FILE_TEST_EXISTS) ) { ! GtkWidget *dialog; ! char message[max_path]; ! int response; ! dialog = gtk_dialog_new_with_buttons(_("File exists"), ! GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(fileChooser))), ! GTK_DIALOG_DESTROY_WITH_PARENT | GTK_DIALOG_NO_SEPARATOR, ! GTK_STOCK_NO, GTK_RESPONSE_NO, ! GTK_STOCK_YES, GTK_RESPONSE_YES, NULL); ! char *utf8 = g_filename_to_utf8(filename, -1, NULL, NULL, NULL); ! if (utf8==NULL) utf8 = g_strdup("Unknown file name"); ! snprintf(message, max_path, ! _("File '%s' already exists.\nOverwrite?"), utf8); ! g_free(utf8); ! widg = gtk_label_new(message); ! gtk_label_set_line_wrap(GTK_LABEL(widg), TRUE); ! gtk_container_add(GTK_CONTAINER(GTK_DIALOG(dialog)->vbox), widg); ! gtk_widget_show_all(dialog); ! response = gtk_dialog_run(GTK_DIALOG(dialog)); ! gtk_widget_destroy(dialog); ! if (response!=GTK_RESPONSE_YES) ! continue; ! } g_strlcpy(uf->conf->outputFilename, filename, max_path); ! g_free(filename); ! status = ufraw_write_image(uf); ! if (status==UFRAW_SUCCESS || status==UFRAW_ABORT_SAVE) { ufraw_focus(fileChooser, FALSE); ! gtk_widget_destroy(GTK_WIDGET(fileChooser)); ! if (status==UFRAW_SUCCESS) ! g_object_set_data(G_OBJECT(parentWindow), "WindowResponse", ! (gpointer)GTK_RESPONSE_OK); ! else ! g_object_set_data(G_OBJECT(parentWindow), "WindowResponse", ! (gpointer)GTK_RESPONSE_CANCEL); ! gtk_main_quit(); gtk_object_sink(GTK_OBJECT(tips)); ! return UFRAW_SUCCESS; ! } } } --- 437,467 ---- uf->conf->size = floor(MAX(data->height, data->width)+0.5); } ! uf->conf->overwrite = gtk_toggle_button_get_active( ! GTK_TOGGLE_BUTTON(overwriteButton)); #if defined(HAVE_LIBZ) && defined(HAVE_LIBTIFF) ! uf->conf->losslessCompress = gtk_toggle_button_get_active( ! GTK_TOGGLE_BUTTON(losslessButton)); #endif #ifdef HAVE_LIBJPEG ! uf->conf->compression = gtk_adjustment_get_value(compressAdj); #if defined(HAVE_LIBEXIF) || defined(HAVE_EXIV2) ! uf->conf->embedExif = gtk_toggle_button_get_active( ! GTK_TOGGLE_BUTTON(exifButton)); #endif #endif ! if ( !uf->conf->overwrite && uf->conf->createID!=only_id && g_file_test(filename, G_FILE_TEST_EXISTS) ) { ! if ( !ufraw_overwrite_dialog(filename, GTK_WIDGET(fileChooser)) ) ! continue; ! } g_strlcpy(uf->conf->outputFilename, filename, max_path); ! g_free(filename); ! status = ufraw_write_image(uf); ! if (status==UFRAW_SUCCESS) { ufraw_focus(fileChooser, FALSE); ! gtk_widget_destroy(GTK_WIDGET(fileChooser)); gtk_object_sink(GTK_OBJECT(tips)); ! return UFRAW_SUCCESS; ! } } } Index: ufraw-gimp.c =================================================================== RCS file: /cvsroot/ufraw/ufraw/ufraw-gimp.c,v retrieving revision 1.31 retrieving revision 1.32 diff -C2 -d -r1.31 -r1.32 *** ufraw-gimp.c 22 Mar 2007 15:08:30 -0000 1.31 --- ufraw-gimp.c 31 Mar 2007 18:52:40 -0000 1.32 *************** *** 276,280 **** long ufraw_save_gimp_image(GtkWidget *widget, ufraw_data *uf) { - GtkWindow *window; GimpDrawable *drawable; GimpPixelRgn pixel_region; --- 276,279 ---- *************** *** 409,418 **** } #endif - if (widget!=NULL) { - window = GTK_WINDOW(gtk_widget_get_toplevel(widget)); - g_object_set_data(G_OBJECT(window), "WindowResponse", - (gpointer)GTK_RESPONSE_OK); - gtk_main_quit(); - } return UFRAW_SUCCESS; } --- 408,411 ---- Index: ufraw_preview.c =================================================================== RCS file: /cvsroot/ufraw/ufraw/ufraw_preview.c,v retrieving revision 1.82 retrieving revision 1.83 diff -C2 -d -r1.82 -r1.83 *** ufraw_preview.c 22 Mar 2007 20:52:08 -0000 1.82 --- ufraw_preview.c 31 Mar 2007 18:52:40 -0000 1.83 *************** *** 1069,1073 **** } ! gboolean create_base_image(preview_data *data) { int shrinkSave = CFG->shrink; --- 1069,1073 ---- } ! void create_base_image(preview_data *data) { int shrinkSave = CFG->shrink; *************** *** 1108,1112 **** gtk_progress_bar_set_fraction(data->ProgressBar, 0); } - return FALSE; } --- 1108,1111 ---- *************** *** 1950,1960 **** } ! void preview_saver(GtkWidget *widget, ufraw_data *uf) { preview_data *data = get_preview_data(widget); if (data->FreezeDialog==TRUE) return; gtk_widget_set_sensitive(data->Controls, FALSE); data->FreezeDialog = TRUE; ! (*data->SaveFunc)(widget, uf); data->FreezeDialog = FALSE; gtk_widget_set_sensitive(data->Controls, TRUE); --- 1949,1968 ---- } ! void preview_saver(GtkWidget *widget, gpointer user_data) { + user_data = user_data; preview_data *data = get_preview_data(widget); if (data->FreezeDialog==TRUE) return; gtk_widget_set_sensitive(data->Controls, FALSE); data->FreezeDialog = TRUE; ! if ( (*data->SaveFunc)(widget, data->UF)==UFRAW_SUCCESS ) { ! GtkWindow *window = GTK_WINDOW(gtk_widget_get_toplevel(widget)); ! g_object_set_data(G_OBJECT(window), "WindowResponse", ! (gpointer)GTK_RESPONSE_OK); ! gtk_main_quit(); ! } else { ! preview_progress(widget, "", 0); ! create_base_image(data); ! } data->FreezeDialog = FALSE; gtk_widget_set_sensitive(data->Controls, TRUE); *************** *** 2889,2893 **** gtk_box_pack_start(box, saveButton, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(saveButton), "clicked", ! G_CALLBACK(preview_saver), uf); gtk_widget_grab_focus(saveButton); } else { --- 2897,2901 ---- gtk_box_pack_start(box, saveButton, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(saveButton), "clicked", ! G_CALLBACK(preview_saver), NULL); gtk_widget_grab_focus(saveButton); } else { *************** *** 2895,2899 **** gtk_box_pack_start(box, saveButton, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(saveButton), "clicked", ! G_CALLBACK(preview_saver), uf); /* Get the default save options from ufraw_saver() */ --- 2903,2907 ---- gtk_box_pack_start(box, saveButton, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(saveButton), "clicked", ! G_CALLBACK(preview_saver), NULL); /* Get the default save options from ufraw_saver() */ *************** *** 2905,2909 **** gtk_box_pack_start(box, saveAsButton, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(saveAsButton), "clicked", ! G_CALLBACK(preview_saver), uf); gtk_widget_grab_focus(saveAsButton); } --- 2913,2917 ---- gtk_box_pack_start(box, saveAsButton, TRUE, TRUE, 0); g_signal_connect(G_OBJECT(saveAsButton), "clicked", ! G_CALLBACK(preview_saver), NULL); gtk_widget_grab_focus(saveAsButton); } |