don't message "Image saved" from here.

2006-12-11  Sven Neumann  <sven@gimp.org>

	* app/actions/file-commands.c: don't message "Image saved" from
here.

	* app/core/gimpimage.[ch]: introduced new signal "saved".

	* app/file/file-save.c (file_save): call gimp_image_saved() from
here.

	* app/display/gimpdisplay-handlers.c: connect to
GimpImage::saved
	and show the "Image saved" message. Makes it show up on all
displays
	and regardless of how the file was saved.

	* app/display/gimpdisplay.c: fixed typo in comment.
This commit is contained in:
Sven Neumann 2006-12-11 20:57:44 +00:00 committed by Sven Neumann
parent 7f6033fe72
commit 5ef1749496
7 changed files with 88 additions and 12 deletions

View File

@ -1,3 +1,17 @@
2006-12-11 Sven Neumann <sven@gimp.org>
* app/actions/file-commands.c: don't message "Image saved" from here.
* app/core/gimpimage.[ch]: introduced new signal "saved".
* app/file/file-save.c (file_save): call gimp_image_saved() from here.
* app/display/gimpdisplay-handlers.c: connect to GimpImage::saved
and show the "Image saved" message. Makes it show up on all displays
and regardless of how the file was saved.
* app/display/gimpdisplay.c: fixed typo in comment.
2006-12-11 Sven Neumann <sven@gimp.org>
* app/actions/file-actions.c

View File

@ -220,7 +220,6 @@ file_save_cmd_callback (GtkAction *action,
GimpPDBStatusType status;
GError *error = NULL;
GList *list;
gchar *filename;
for (list = gimp_action_groups_from_name ("file");
list;
@ -235,14 +234,9 @@ file_save_cmd_callback (GtkAction *action,
uri, save_proc,
GIMP_RUN_WITH_LAST_VALS, FALSE, &error);
filename = file_utils_uri_display_name (uri);
switch (status)
{
case GIMP_PDB_SUCCESS:
gimp_message (image->gimp, G_OBJECT (display), GIMP_MESSAGE_INFO,
_("Image saved to '%s'"),
filename);
break;
case GIMP_PDB_CANCEL:
@ -251,14 +245,22 @@ file_save_cmd_callback (GtkAction *action,
break;
default:
gimp_message (image->gimp, G_OBJECT (display), GIMP_MESSAGE_ERROR,
_("Saving '%s' failed:\n\n%s"),
filename, error->message);
g_clear_error (&error);
{
gchar *filename;
filename = file_utils_uri_display_name (uri);
gimp_message (image->gimp, G_OBJECT (display),
GIMP_MESSAGE_ERROR,
_("Saving '%s' failed:\n\n%s"),
filename, error->message);
g_free (filename);
g_clear_error (&error);
}
break;
}
g_free (filename);
for (list = gimp_action_groups_from_name ("file");
list;

View File

@ -95,6 +95,7 @@ enum
SELECTION_CONTROL,
CLEAN,
DIRTY,
SAVED,
UPDATE,
UPDATE_GUIDE,
UPDATE_SAMPLE_POINT,
@ -355,6 +356,16 @@ gimp_image_class_init (GimpImageClass *klass)
G_TYPE_NONE, 1,
GIMP_TYPE_DIRTY_MASK);
gimp_image_signals[SAVED] =
g_signal_new ("saved",
G_TYPE_FROM_CLASS (klass),
G_SIGNAL_RUN_FIRST,
G_STRUCT_OFFSET (GimpImageClass, saved),
NULL, NULL,
gimp_marshal_VOID__STRING,
G_TYPE_NONE, 1,
G_TYPE_STRING);
gimp_image_signals[UPDATE] =
g_signal_new ("update",
G_TYPE_FROM_CLASS (klass),
@ -489,6 +500,7 @@ gimp_image_class_init (GimpImageClass *klass)
klass->clean = NULL;
klass->dirty = NULL;
klass->saved = NULL;
klass->update = NULL;
klass->update_guide = NULL;
klass->update_sample_point = NULL;
@ -1923,6 +1935,23 @@ gimp_image_clean_all (GimpImage *image)
g_signal_emit (image, gimp_image_signals[CLEAN], 0);
}
/**
* gimp_image_saved:
* @image:
* @uri:
*
* Emits the "saved" signal, indicating that @image was saved to the
* location specified by @uri.
*/
void
gimp_image_saved (GimpImage *image,
const gchar *uri)
{
g_return_if_fail (GIMP_IS_IMAGE (image));
g_return_if_fail (uri != NULL);
g_signal_emit (image, gimp_image_signals[SAVED], 0, uri);
}
/* flush this image's displays */

View File

@ -201,6 +201,9 @@ struct _GimpImageClass
GimpDirtyMask dirty_mask);
void (* dirty) (GimpImage *image,
GimpDirtyMask dirty_mask);
void (* saved) (GimpImage *image,
const gchar *uri);
void (* update) (GimpImage *image,
gint x,
gint y,
@ -255,6 +258,8 @@ gchar * gimp_image_get_filename (const GimpImage *image);
void gimp_image_set_save_proc (GimpImage *image,
GimpPlugInProcedure *proc);
GimpPlugInProcedure * gimp_image_get_save_proc (const GimpImage *image);
void gimp_image_saved (GimpImage *image,
const gchar *uri);
void gimp_image_set_resolution (GimpImage *image,
gdouble xres,

View File

@ -30,6 +30,8 @@
#include "gimpdisplay.h"
#include "gimpdisplay-handlers.h"
#include "gimp-intl.h"
/* local function prototypes */
@ -42,6 +44,9 @@ static void gimp_display_update_handler (GimpProjection *projection,
GimpDisplay *display);
static void gimp_display_flush_handler (GimpImage *image,
GimpDisplay *display);
static void gimp_display_saved_handler (GimpImage *image,
const gchar *uri,
GimpDisplay *display);
/* public functions */
@ -73,6 +78,9 @@ gimp_display_connect (GimpDisplay *display,
g_signal_connect (image, "flush",
G_CALLBACK (gimp_display_flush_handler),
display);
g_signal_connect (image, "saved",
G_CALLBACK (gimp_display_saved_handler),
display);
}
void
@ -83,6 +91,9 @@ gimp_display_disconnect (GimpDisplay *display)
g_return_if_fail (GIMP_IS_DISPLAY (display));
g_return_if_fail (GIMP_IS_IMAGE (display->image));
g_signal_handlers_disconnect_by_func (display->image,
gimp_display_saved_handler,
display);
g_signal_handlers_disconnect_by_func (display->image,
gimp_display_flush_handler,
display);
@ -128,3 +139,16 @@ gimp_display_flush_handler (GimpImage *image,
{
gimp_display_flush (display);
}
static void
gimp_display_saved_handler (GimpImage *image,
const gchar *uri,
GimpDisplay *display)
{
gchar *filename = file_utils_uri_display_name (uri);
gimp_message (image->gimp, G_OBJECT (display), GIMP_MESSAGE_INFO,
_("Image saved to '%s'"), filename);
g_free (filename);
}

View File

@ -326,7 +326,7 @@ gimp_display_new (GimpImage *image,
g_return_val_if_fail (GIMP_IS_IMAGE (image), NULL);
/* If there isn't an interface, never create a displaylay */
/* If there isn't an interface, never create a display */
if (image->gimp->no_interface)
return NULL;

View File

@ -173,6 +173,8 @@ file_save (GimpImage *image,
gimp_image_clean_all (image);
}
gimp_image_saved (image, uri);
documents = GIMP_DOCUMENT_LIST (image->gimp->documents);
imagefile = gimp_document_list_add_uri (documents,
uri,