mirror of https://github.com/GNOME/gimp.git
added new function file_save_as() which always uses the uri and file_proc
2003-03-04 Michael Natterer <mitch@gimp.org> * app/file/file-save.[ch]: added new function file_save_as() which always uses the uri and file_proc parameters passed and never looks at the image's uri and file_proc. Renamed "gboolean set_uri" to "set_uri_and_proc" and always set them both if the save succeeded. Fixes bug #97835. Removed most parameters from file_save() and made it a small wrapper around file_save_as(). * app/gui/file-commands.c (file_save_cmd_callback): changed accordingly. * app/gui/file-save-dialog.c: call file_save_as(), renamed "set_uri" variables to "set_uri_and_proc".
This commit is contained in:
parent
c860d8054c
commit
a53f1ba4ca
15
ChangeLog
15
ChangeLog
|
@ -1,3 +1,18 @@
|
|||
2003-03-04 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/file/file-save.[ch]: added new function file_save_as() which
|
||||
always uses the uri and file_proc parameters passed and never
|
||||
looks at the image's uri and file_proc. Renamed "gboolean set_uri"
|
||||
to "set_uri_and_proc" and always set them both if the save
|
||||
succeeded. Fixes bug #97835. Removed most parameters from
|
||||
file_save() and made it a small wrapper around file_save_as().
|
||||
|
||||
* app/gui/file-commands.c (file_save_cmd_callback): changed
|
||||
accordingly.
|
||||
|
||||
* app/gui/file-save-dialog.c: call file_save_as(), renamed
|
||||
"set_uri" variables to "set_uri_and_proc".
|
||||
|
||||
2003-03-03 Michael Natterer <mitch@gimp.org>
|
||||
|
||||
* app/paint/gimppaintcore-stroke.c
|
||||
|
|
|
@ -206,18 +206,19 @@ file_save_cmd_callback (GtkWidget *widget,
|
|||
{
|
||||
GimpPDBStatusType status;
|
||||
|
||||
status = file_save (gdisp->gimage,
|
||||
uri,
|
||||
uri,
|
||||
NULL,
|
||||
GIMP_RUN_WITH_LAST_VALS,
|
||||
TRUE);
|
||||
status = file_save (gdisp->gimage, GIMP_RUN_WITH_LAST_VALS);
|
||||
|
||||
if (status != GIMP_PDB_SUCCESS &&
|
||||
status != GIMP_PDB_CANCEL)
|
||||
{
|
||||
gchar *filename;
|
||||
|
||||
filename = file_utils_uri_to_utf8_basename (uri);
|
||||
|
||||
/* Error message should be added. --bex */
|
||||
g_message (_("Saving '%s' failed."), uri);
|
||||
g_message (_("Saving '%s' failed."), filename);
|
||||
|
||||
g_free (filename);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,14 +70,14 @@ static void file_save_dialog_save_image (GtkWidget *save_dialog,
|
|||
const gchar *uri,
|
||||
const gchar *raw_filename,
|
||||
PlugInProcDef *save_proc,
|
||||
gboolean set_uri);
|
||||
gboolean set_uri_and_proc);
|
||||
|
||||
|
||||
static GtkWidget *filesave = NULL;
|
||||
static GtkWidget *filesave = NULL;
|
||||
|
||||
static PlugInProcDef *save_file_proc = NULL;
|
||||
static GimpImage *the_gimage = NULL;
|
||||
static gboolean set_uri = TRUE;
|
||||
static PlugInProcDef *save_file_proc = NULL;
|
||||
static GimpImage *the_gimage = NULL;
|
||||
static gboolean set_uri_and_proc = TRUE;
|
||||
|
||||
|
||||
/* public functions */
|
||||
|
@ -104,8 +104,8 @@ file_save_dialog_show (GimpImage *gimage,
|
|||
if (! gimp_image_active_drawable (gimage))
|
||||
return;
|
||||
|
||||
the_gimage = gimage;
|
||||
set_uri = TRUE;
|
||||
the_gimage = gimage;
|
||||
set_uri_and_proc = TRUE;
|
||||
|
||||
if (! filesave)
|
||||
filesave = file_save_dialog_create (gimage->gimp, menu_factory);
|
||||
|
@ -151,8 +151,8 @@ file_save_a_copy_dialog_show (GimpImage *gimage,
|
|||
if (! gimp_image_active_drawable (gimage))
|
||||
return;
|
||||
|
||||
the_gimage = gimage;
|
||||
set_uri = FALSE;
|
||||
the_gimage = gimage;
|
||||
set_uri_and_proc = FALSE;
|
||||
|
||||
uri = gimp_object_get_name (GIMP_OBJECT (gimage));
|
||||
|
||||
|
@ -292,7 +292,7 @@ file_save_ok_callback (GtkWidget *widget,
|
|||
uri,
|
||||
raw_filename,
|
||||
save_file_proc,
|
||||
set_uri);
|
||||
set_uri_and_proc);
|
||||
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (fs), TRUE);
|
||||
}
|
||||
|
@ -314,7 +314,8 @@ file_save_overwrite (GtkWidget *save_dialog,
|
|||
{
|
||||
OverwriteData *overwrite_data;
|
||||
GtkWidget *query_box;
|
||||
gchar *overwrite_text;
|
||||
gchar *filename;
|
||||
gchar *message;
|
||||
|
||||
overwrite_data = g_new0 (OverwriteData, 1);
|
||||
|
||||
|
@ -322,20 +323,24 @@ file_save_overwrite (GtkWidget *save_dialog,
|
|||
overwrite_data->uri = g_strdup (uri);
|
||||
overwrite_data->raw_filename = g_strdup (raw_filename);
|
||||
|
||||
overwrite_text = g_strdup_printf (_("File '%s' exists.\n"
|
||||
"Overwrite it?"), uri);
|
||||
filename = file_utils_uri_to_utf8_filename (uri);
|
||||
|
||||
message = g_strdup_printf (_("File '%s' exists.\n"
|
||||
"Overwrite it?"), filename);
|
||||
|
||||
g_free (filename);
|
||||
|
||||
query_box = gimp_query_boolean_box (_("File Exists!"),
|
||||
gimp_standard_help_func,
|
||||
"save/file_exists.html",
|
||||
GTK_STOCK_DIALOG_QUESTION,
|
||||
overwrite_text,
|
||||
message,
|
||||
GTK_STOCK_YES, GTK_STOCK_NO,
|
||||
NULL, NULL,
|
||||
file_save_overwrite_callback,
|
||||
overwrite_data);
|
||||
|
||||
g_free (overwrite_text);
|
||||
g_free (message);
|
||||
|
||||
gtk_widget_show (query_box);
|
||||
|
||||
|
@ -358,7 +363,7 @@ file_save_overwrite_callback (GtkWidget *widget,
|
|||
overwrite_data->uri,
|
||||
overwrite_data->raw_filename,
|
||||
save_file_proc,
|
||||
set_uri);
|
||||
set_uri_and_proc);
|
||||
}
|
||||
|
||||
gtk_widget_set_sensitive (overwrite_data->save_dialog, TRUE);
|
||||
|
@ -374,16 +379,16 @@ file_save_dialog_save_image (GtkWidget *save_dialog,
|
|||
const gchar *uri,
|
||||
const gchar *raw_filename,
|
||||
PlugInProcDef *save_proc,
|
||||
gboolean set_uri)
|
||||
gboolean set_uri_and_proc)
|
||||
{
|
||||
GimpPDBStatusType status;
|
||||
|
||||
status = file_save (gimage,
|
||||
uri,
|
||||
raw_filename,
|
||||
save_proc,
|
||||
GIMP_RUN_INTERACTIVE,
|
||||
set_uri);
|
||||
status = file_save_as (gimage,
|
||||
uri,
|
||||
raw_filename,
|
||||
save_proc,
|
||||
GIMP_RUN_INTERACTIVE,
|
||||
set_uri_and_proc);
|
||||
|
||||
if (status != GIMP_PDB_SUCCESS &&
|
||||
status != GIMP_PDB_CANCEL)
|
||||
|
|
|
@ -62,12 +62,30 @@
|
|||
/* public functions */
|
||||
|
||||
GimpPDBStatusType
|
||||
file_save (GimpImage *gimage,
|
||||
const gchar *uri,
|
||||
const gchar *raw_filename,
|
||||
PlugInProcDef *file_proc,
|
||||
GimpRunMode run_mode,
|
||||
gboolean set_uri)
|
||||
file_save (GimpImage *gimage,
|
||||
GimpRunMode run_mode)
|
||||
{
|
||||
const gchar *uri;
|
||||
PlugInProcDef *file_proc;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_IMAGE (gimage), GIMP_PDB_CALLING_ERROR);
|
||||
|
||||
uri = gimp_object_get_name (GIMP_OBJECT (gimage));
|
||||
|
||||
g_return_val_if_fail (uri != NULL, GIMP_PDB_CALLING_ERROR);
|
||||
|
||||
file_proc = gimp_image_get_save_proc (gimage);
|
||||
|
||||
return file_save_as (gimage, uri, uri, file_proc, run_mode, FALSE);
|
||||
}
|
||||
|
||||
GimpPDBStatusType
|
||||
file_save_as (GimpImage *gimage,
|
||||
const gchar *uri,
|
||||
const gchar *raw_filename,
|
||||
PlugInProcDef *file_proc,
|
||||
GimpRunMode run_mode,
|
||||
gboolean set_uri_and_proc)
|
||||
{
|
||||
ProcRecord *proc;
|
||||
Argument *args;
|
||||
|
@ -77,33 +95,22 @@ file_save (GimpImage *gimage,
|
|||
gchar *filename;
|
||||
|
||||
g_return_val_if_fail (GIMP_IS_IMAGE (gimage), GIMP_PDB_CALLING_ERROR);
|
||||
g_return_val_if_fail (uri != NULL, GIMP_PDB_CALLING_ERROR);
|
||||
g_return_val_if_fail (raw_filename != NULL, GIMP_PDB_CALLING_ERROR);
|
||||
|
||||
if (gimp_image_active_drawable (gimage) == NULL)
|
||||
return GIMP_PDB_EXECUTION_ERROR;
|
||||
|
||||
/* set the image's save_proc if we got passed one, otherwise
|
||||
* try to find a matching file_proc
|
||||
*/
|
||||
if (file_proc)
|
||||
if (! file_proc)
|
||||
file_proc = file_utils_find_proc (gimage->gimp->save_procs, raw_filename);
|
||||
|
||||
if (! file_proc)
|
||||
{
|
||||
gimp_image_set_save_proc (gimage, file_proc);
|
||||
}
|
||||
else
|
||||
{
|
||||
file_proc = gimp_image_get_save_proc (gimage);
|
||||
g_message (_("Save failed.\n"
|
||||
"%s: Unknown file type."),
|
||||
uri);
|
||||
|
||||
if (! file_proc)
|
||||
file_proc = file_utils_find_proc (gimage->gimp->save_procs,
|
||||
raw_filename);
|
||||
|
||||
if (! file_proc)
|
||||
{
|
||||
g_message (_("Save failed.\n"
|
||||
"%s: Unknown file type."),
|
||||
uri);
|
||||
|
||||
return GIMP_PDB_CANCEL; /* inhibits error messages by caller */
|
||||
}
|
||||
return GIMP_PDB_CANCEL; /* inhibits error messages by caller */
|
||||
}
|
||||
|
||||
filename = g_filename_from_uri (uri, NULL, NULL);
|
||||
|
@ -170,16 +177,16 @@ file_save (GimpImage *gimage,
|
|||
documents = GIMP_DOCUMENT_LIST (gimage->gimp->documents);
|
||||
imagefile = gimp_document_list_add_uri (documents, uri);
|
||||
|
||||
if (set_uri)
|
||||
if (set_uri_and_proc)
|
||||
{
|
||||
/* set the image title */
|
||||
gimp_image_set_uri (gimage, uri);
|
||||
gimp_image_set_save_proc (gimage, file_proc);
|
||||
}
|
||||
|
||||
/* Write a thumbnail for the saved image, where appropriate */
|
||||
if (gimage->gimp->config->thumbnail_size != GIMP_THUMBNAIL_SIZE_NONE)
|
||||
{
|
||||
if (set_uri)
|
||||
if (set_uri_and_proc)
|
||||
{
|
||||
gimp_imagefile_save_thumbnail (imagefile, gimage);
|
||||
}
|
||||
|
|
|
@ -20,12 +20,14 @@
|
|||
#define __FILE_SAVE_H__
|
||||
|
||||
|
||||
GimpPDBStatusType file_save (GimpImage *gimage,
|
||||
const gchar *uri,
|
||||
const gchar *raw_filename,
|
||||
PlugInProcDef *file_proc,
|
||||
GimpRunMode run_mode,
|
||||
gboolean set_uri);
|
||||
GimpPDBStatusType file_save (GimpImage *gimage,
|
||||
GimpRunMode run_mode);
|
||||
GimpPDBStatusType file_save_as (GimpImage *gimage,
|
||||
const gchar *uri,
|
||||
const gchar *raw_filename,
|
||||
PlugInProcDef *file_proc,
|
||||
GimpRunMode run_mode,
|
||||
gboolean set_uri_and_proc);
|
||||
|
||||
|
||||
#endif /* __FILE_SAVE_H__ */
|
||||
|
|
|
@ -206,18 +206,19 @@ file_save_cmd_callback (GtkWidget *widget,
|
|||
{
|
||||
GimpPDBStatusType status;
|
||||
|
||||
status = file_save (gdisp->gimage,
|
||||
uri,
|
||||
uri,
|
||||
NULL,
|
||||
GIMP_RUN_WITH_LAST_VALS,
|
||||
TRUE);
|
||||
status = file_save (gdisp->gimage, GIMP_RUN_WITH_LAST_VALS);
|
||||
|
||||
if (status != GIMP_PDB_SUCCESS &&
|
||||
status != GIMP_PDB_CANCEL)
|
||||
{
|
||||
gchar *filename;
|
||||
|
||||
filename = file_utils_uri_to_utf8_basename (uri);
|
||||
|
||||
/* Error message should be added. --bex */
|
||||
g_message (_("Saving '%s' failed."), uri);
|
||||
g_message (_("Saving '%s' failed."), filename);
|
||||
|
||||
g_free (filename);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -70,14 +70,14 @@ static void file_save_dialog_save_image (GtkWidget *save_dialog,
|
|||
const gchar *uri,
|
||||
const gchar *raw_filename,
|
||||
PlugInProcDef *save_proc,
|
||||
gboolean set_uri);
|
||||
gboolean set_uri_and_proc);
|
||||
|
||||
|
||||
static GtkWidget *filesave = NULL;
|
||||
static GtkWidget *filesave = NULL;
|
||||
|
||||
static PlugInProcDef *save_file_proc = NULL;
|
||||
static GimpImage *the_gimage = NULL;
|
||||
static gboolean set_uri = TRUE;
|
||||
static PlugInProcDef *save_file_proc = NULL;
|
||||
static GimpImage *the_gimage = NULL;
|
||||
static gboolean set_uri_and_proc = TRUE;
|
||||
|
||||
|
||||
/* public functions */
|
||||
|
@ -104,8 +104,8 @@ file_save_dialog_show (GimpImage *gimage,
|
|||
if (! gimp_image_active_drawable (gimage))
|
||||
return;
|
||||
|
||||
the_gimage = gimage;
|
||||
set_uri = TRUE;
|
||||
the_gimage = gimage;
|
||||
set_uri_and_proc = TRUE;
|
||||
|
||||
if (! filesave)
|
||||
filesave = file_save_dialog_create (gimage->gimp, menu_factory);
|
||||
|
@ -151,8 +151,8 @@ file_save_a_copy_dialog_show (GimpImage *gimage,
|
|||
if (! gimp_image_active_drawable (gimage))
|
||||
return;
|
||||
|
||||
the_gimage = gimage;
|
||||
set_uri = FALSE;
|
||||
the_gimage = gimage;
|
||||
set_uri_and_proc = FALSE;
|
||||
|
||||
uri = gimp_object_get_name (GIMP_OBJECT (gimage));
|
||||
|
||||
|
@ -292,7 +292,7 @@ file_save_ok_callback (GtkWidget *widget,
|
|||
uri,
|
||||
raw_filename,
|
||||
save_file_proc,
|
||||
set_uri);
|
||||
set_uri_and_proc);
|
||||
|
||||
gtk_widget_set_sensitive (GTK_WIDGET (fs), TRUE);
|
||||
}
|
||||
|
@ -314,7 +314,8 @@ file_save_overwrite (GtkWidget *save_dialog,
|
|||
{
|
||||
OverwriteData *overwrite_data;
|
||||
GtkWidget *query_box;
|
||||
gchar *overwrite_text;
|
||||
gchar *filename;
|
||||
gchar *message;
|
||||
|
||||
overwrite_data = g_new0 (OverwriteData, 1);
|
||||
|
||||
|
@ -322,20 +323,24 @@ file_save_overwrite (GtkWidget *save_dialog,
|
|||
overwrite_data->uri = g_strdup (uri);
|
||||
overwrite_data->raw_filename = g_strdup (raw_filename);
|
||||
|
||||
overwrite_text = g_strdup_printf (_("File '%s' exists.\n"
|
||||
"Overwrite it?"), uri);
|
||||
filename = file_utils_uri_to_utf8_filename (uri);
|
||||
|
||||
message = g_strdup_printf (_("File '%s' exists.\n"
|
||||
"Overwrite it?"), filename);
|
||||
|
||||
g_free (filename);
|
||||
|
||||
query_box = gimp_query_boolean_box (_("File Exists!"),
|
||||
gimp_standard_help_func,
|
||||
"save/file_exists.html",
|
||||
GTK_STOCK_DIALOG_QUESTION,
|
||||
overwrite_text,
|
||||
message,
|
||||
GTK_STOCK_YES, GTK_STOCK_NO,
|
||||
NULL, NULL,
|
||||
file_save_overwrite_callback,
|
||||
overwrite_data);
|
||||
|
||||
g_free (overwrite_text);
|
||||
g_free (message);
|
||||
|
||||
gtk_widget_show (query_box);
|
||||
|
||||
|
@ -358,7 +363,7 @@ file_save_overwrite_callback (GtkWidget *widget,
|
|||
overwrite_data->uri,
|
||||
overwrite_data->raw_filename,
|
||||
save_file_proc,
|
||||
set_uri);
|
||||
set_uri_and_proc);
|
||||
}
|
||||
|
||||
gtk_widget_set_sensitive (overwrite_data->save_dialog, TRUE);
|
||||
|
@ -374,16 +379,16 @@ file_save_dialog_save_image (GtkWidget *save_dialog,
|
|||
const gchar *uri,
|
||||
const gchar *raw_filename,
|
||||
PlugInProcDef *save_proc,
|
||||
gboolean set_uri)
|
||||
gboolean set_uri_and_proc)
|
||||
{
|
||||
GimpPDBStatusType status;
|
||||
|
||||
status = file_save (gimage,
|
||||
uri,
|
||||
raw_filename,
|
||||
save_proc,
|
||||
GIMP_RUN_INTERACTIVE,
|
||||
set_uri);
|
||||
status = file_save_as (gimage,
|
||||
uri,
|
||||
raw_filename,
|
||||
save_proc,
|
||||
GIMP_RUN_INTERACTIVE,
|
||||
set_uri_and_proc);
|
||||
|
||||
if (status != GIMP_PDB_SUCCESS &&
|
||||
status != GIMP_PDB_CANCEL)
|
||||
|
|
Loading…
Reference in New Issue