added (yet unused) autosave feature.

2002-11-27  Sven Neumann  <sven@gimp.org>

	* app/config/gimprc.[ch]: added (yet unused) autosave feature.

	* app/core/gimpbrush.c
	* app/core/gimpbrushpipe.c: simplified user-visible messages.
This commit is contained in:
Sven Neumann 2002-11-27 16:13:09 +00:00 committed by Sven Neumann
parent 34eb2bc5e9
commit cfd1c72936
9 changed files with 1216 additions and 998 deletions

View File

@ -1,3 +1,10 @@
2002-11-27 Sven Neumann <sven@gimp.org>
* app/config/gimprc.[ch]: added (yet unused) autosave feature.
* app/core/gimpbrush.c
* app/core/gimpbrushpipe.c: simplified user-visible messages.
2002-11-27 Sven Neumann <sven@gimp.org> 2002-11-27 Sven Neumann <sven@gimp.org>
* app/gui/preferences-dialog.c (preferences_dialog_create): * app/gui/preferences-dialog.c (preferences_dialog_create):

View File

@ -58,6 +58,8 @@ enum {
static void gimp_rc_class_init (GimpRcClass *klass); static void gimp_rc_class_init (GimpRcClass *klass);
static void gimp_rc_config_iface_init (gpointer iface, static void gimp_rc_config_iface_init (gpointer iface,
gpointer iface_data); gpointer iface_data);
static void gimp_rc_init (GimpRc *rc);
static void gimp_rc_dispose (GObject *object);
static void gimp_rc_finalize (GObject *object); static void gimp_rc_finalize (GObject *object);
static void gimp_rc_set_property (GObject *object, static void gimp_rc_set_property (GObject *object,
guint property_id, guint property_id,
@ -77,6 +79,10 @@ static gboolean gimp_rc_deserialize (GObject *object,
gpointer data); gpointer data);
static GObject * gimp_rc_duplicate (GObject *object); static GObject * gimp_rc_duplicate (GObject *object);
static void gimp_rc_load (GimpRc *rc); static void gimp_rc_load (GimpRc *rc);
static gboolean gimp_rc_idle_save (GimpRc *rc);
static void gimp_rc_notify (GimpRc *rc,
GParamSpec *param,
gpointer data);
static GObjectClass *parent_class = NULL; static GObjectClass *parent_class = NULL;
@ -99,7 +105,7 @@ gimp_rc_get_type (void)
NULL, /* class_data */ NULL, /* class_data */
sizeof (GimpRc), sizeof (GimpRc),
0, /* n_preallocs */ 0, /* n_preallocs */
NULL /* instance_init */ (GInstanceInitFunc) gimp_rc_init
}; };
static const GInterfaceInfo rc_iface_info = static const GInterfaceInfo rc_iface_info =
{ {
@ -109,8 +115,7 @@ gimp_rc_get_type (void)
}; };
rc_type = g_type_register_static (GIMP_TYPE_GUI_CONFIG, rc_type = g_type_register_static (GIMP_TYPE_GUI_CONFIG,
"GimpRc", "GimpRc", &rc_info, 0);
&rc_info, 0);
g_type_add_interface_static (rc_type, g_type_add_interface_static (rc_type,
GIMP_TYPE_CONFIG_INTERFACE, GIMP_TYPE_CONFIG_INTERFACE,
@ -129,6 +134,7 @@ gimp_rc_class_init (GimpRcClass *klass)
object_class = G_OBJECT_CLASS (klass); object_class = G_OBJECT_CLASS (klass);
object_class->dispose = gimp_rc_dispose;
object_class->finalize = gimp_rc_finalize; object_class->finalize = gimp_rc_finalize;
object_class->set_property = gimp_rc_set_property; object_class->set_property = gimp_rc_set_property;
object_class->get_property = gimp_rc_get_property; object_class->get_property = gimp_rc_get_property;
@ -145,6 +151,25 @@ gimp_rc_class_init (GimpRcClass *klass)
G_PARAM_CONSTRUCT)); G_PARAM_CONSTRUCT));
} }
static void
gimp_rc_init (GimpRc *rc)
{
rc->system_gimprc = NULL;
rc->user_gimprc = NULL;
rc->verbose = FALSE;
rc->autosave = FALSE;
rc->save_idle_id = 0;
}
static void
gimp_rc_dispose (GObject *object)
{
GimpRc *rc = GIMP_RC (object);
if (rc->save_idle_id)
gimp_rc_idle_save (rc);
}
static void static void
gimp_rc_finalize (GObject *object) gimp_rc_finalize (GObject *object)
{ {
@ -178,7 +203,6 @@ gimp_rc_set_property (GObject *object,
case PROP_SYSTEM_GIMPRC: case PROP_SYSTEM_GIMPRC:
case PROP_USER_GIMPRC: case PROP_USER_GIMPRC:
filename = g_value_get_string (value); filename = g_value_get_string (value);
g_return_if_fail (filename == NULL || g_path_is_absolute (filename));
break; break;
} }
@ -286,8 +310,7 @@ gimp_rc_duplicate (GObject *object)
gimp_config_copy_properties (object, dup); gimp_config_copy_properties (object, dup);
gimp_config_foreach_unknown_token (object, gimp_config_foreach_unknown_token (object,
gimp_rc_duplicate_unknown_token, gimp_rc_duplicate_unknown_token, dup);
dup);
return dup; return dup;
} }
@ -324,6 +347,41 @@ gimp_rc_load (GimpRc *rc)
} }
} }
static gboolean
gimp_rc_idle_save (GimpRc *rc)
{
gimp_rc_save (rc);
rc->save_idle_id = 0;
return FALSE;
}
static void
gimp_rc_notify (GimpRc *rc,
GParamSpec *param,
gpointer data)
{
if (!rc->autosave)
return;
if (!rc->save_idle_id)
rc->save_idle_id = g_idle_add ((GSourceFunc) gimp_rc_idle_save, rc);
}
/**
* gimp_rc_new:
* @system_gimprc: the name of the system-wide gimprc file or %NULL to
* use the standard location
* @user_gimprc: the name of the user gimprc file or %NULL to use the
* standard location
* @verbose:
*
* Creates a new GimpRc object and loads the system-wide and the user
* configuration files.
*
* Returns: the new #GimpRc.
*/
GimpRc * GimpRc *
gimp_rc_new (const gchar *system_gimprc, gimp_rc_new (const gchar *system_gimprc,
const gchar *user_gimprc, const gchar *user_gimprc,
@ -331,23 +389,42 @@ gimp_rc_new (const gchar *system_gimprc,
{ {
GimpRc *rc; GimpRc *rc;
g_return_val_if_fail (system_gimprc == NULL ||
g_path_is_absolute (system_gimprc), NULL);
g_return_val_if_fail (user_gimprc == NULL ||
g_path_is_absolute (user_gimprc), NULL);
rc = GIMP_RC (g_object_new (GIMP_TYPE_RC, rc = GIMP_RC (g_object_new (GIMP_TYPE_RC,
"system-gimprc", system_gimprc, "system-gimprc", system_gimprc,
"user-gimprc", user_gimprc, "user-gimprc", user_gimprc,
NULL)); NULL));
rc->verbose = verbose ? TRUE : FALSE; rc->verbose = verbose ? TRUE : FALSE;
g_return_val_if_fail (GIMP_IS_RC (rc), NULL);
gimp_rc_load (rc); gimp_rc_load (rc);
return rc; return rc;
} }
void
gimp_rc_set_autosave (GimpRc *rc,
gboolean autosave)
{
g_return_if_fail (GIMP_IS_RC (rc));
autosave = autosave ? TRUE : FALSE;
if (rc->autosave == autosave)
return;
if (autosave)
g_signal_connect (G_OBJECT (rc), "notify",
G_CALLBACK (gimp_rc_notify),
NULL);
else
g_signal_handlers_disconnect_by_func (G_OBJECT (rc),
gimp_rc_notify, NULL);
rc->autosave = autosave;
}
/** /**
* gimp_rc_query: * gimp_rc_query:
* @rc: a #GimpRc object. * @rc: a #GimpRc object.

View File

@ -40,8 +40,9 @@ struct _GimpRc
gchar *user_gimprc; gchar *user_gimprc;
gchar *system_gimprc; gchar *system_gimprc;
gboolean verbose; gboolean verbose;
gboolean autosave;
guint save_idle_id;
}; };
struct _GimpRcClass struct _GimpRcClass
@ -50,13 +51,15 @@ struct _GimpRcClass
}; };
GType gimp_rc_get_type (void) G_GNUC_CONST; GType gimp_rc_get_type (void) G_GNUC_CONST;
GimpRc * gimp_rc_new (const gchar *system_gimprc, /* NULL for default */ GimpRc * gimp_rc_new (const gchar *system_gimprc,
const gchar *user_gimprc, /* NULL for default */ const gchar *user_gimprc,
gboolean verbose); gboolean verbose);
void gimp_rc_save (GimpRc *gimprc); void gimp_rc_set_autosave (GimpRc *gimprc,
gchar * gimp_rc_query (GimpRc *rc, gboolean autosave);
const gchar *key); void gimp_rc_save (GimpRc *gimprc);
gchar * gimp_rc_query (GimpRc *rc,
const gchar *key);
#endif /* GIMP_RC_H__ */ #endif /* GIMP_RC_H__ */

View File

@ -530,8 +530,8 @@ gimp_brush_load_brush (gint fd,
name = g_new (gchar, bn_size); name = g_new (gchar, bn_size);
if ((read (fd, name, bn_size)) < bn_size) if ((read (fd, name, bn_size)) < bn_size)
{ {
g_message (_("Fatal parsing error:\nBrush file '%s' appears truncated."), g_message (_("Fatal parsing error:\n"
filename); "Brush file '%s' appears truncated."), filename);
g_free (name); g_free (name);
return NULL; return NULL;
} }
@ -558,8 +558,8 @@ gimp_brush_load_brush (gint fd,
temp_buf_data (brush->mask), header.width * header.height) < temp_buf_data (brush->mask), header.width * header.height) <
header.width * header.height) header.width * header.height)
{ {
g_message (_("Fatal parsing error:\nBrush file '%s' appears truncated."), g_message (_("Fatal parsing error:\n"
filename); "Brush file '%s' appears truncated."), filename);
g_free (name); g_free (name);
g_object_unref (G_OBJECT (brush)); g_object_unref (G_OBJECT (brush));
return NULL; return NULL;
@ -577,8 +577,8 @@ gimp_brush_load_brush (gint fd,
+ i * 3, 3) != 3 || + i * 3, 3) != 3 ||
read (fd, temp_buf_data (brush->mask) + i, 1) != 1) read (fd, temp_buf_data (brush->mask) + i, 1) != 1)
{ {
g_message (_("Fatal parsing error:\nBrush file '%s' appears truncated."), g_message (_("Fatal parsing error:\n"
filename); "Brush file '%s' appears truncated."), filename);
g_free (name); g_free (name);
g_object_unref (G_OBJECT (brush)); g_object_unref (G_OBJECT (brush));
return NULL; return NULL;

View File

@ -530,8 +530,8 @@ gimp_brush_load_brush (gint fd,
name = g_new (gchar, bn_size); name = g_new (gchar, bn_size);
if ((read (fd, name, bn_size)) < bn_size) if ((read (fd, name, bn_size)) < bn_size)
{ {
g_message (_("Fatal parsing error:\nBrush file '%s' appears truncated."), g_message (_("Fatal parsing error:\n"
filename); "Brush file '%s' appears truncated."), filename);
g_free (name); g_free (name);
return NULL; return NULL;
} }
@ -558,8 +558,8 @@ gimp_brush_load_brush (gint fd,
temp_buf_data (brush->mask), header.width * header.height) < temp_buf_data (brush->mask), header.width * header.height) <
header.width * header.height) header.width * header.height)
{ {
g_message (_("Fatal parsing error:\nBrush file '%s' appears truncated."), g_message (_("Fatal parsing error:\n"
filename); "Brush file '%s' appears truncated."), filename);
g_free (name); g_free (name);
g_object_unref (G_OBJECT (brush)); g_object_unref (G_OBJECT (brush));
return NULL; return NULL;
@ -577,8 +577,8 @@ gimp_brush_load_brush (gint fd,
+ i * 3, 3) != 3 || + i * 3, 3) != 3 ||
read (fd, temp_buf_data (brush->mask) + i, 1) != 1) read (fd, temp_buf_data (brush->mask) + i, 1) != 1)
{ {
g_message (_("Fatal parsing error:\nBrush file '%s' appears truncated."), g_message (_("Fatal parsing error:\n"
filename); "Brush file '%s' appears truncated."), filename);
g_free (name); g_free (name);
g_object_unref (G_OBJECT (brush)); g_object_unref (G_OBJECT (brush));
return NULL; return NULL;

View File

@ -342,8 +342,8 @@ gimp_brush_pipe_load (const gchar *filename)
if (!pipe) if (!pipe)
{ {
g_message (_("Fatal parsing error:\nBrush pipe file '%s' is corrupt."), g_message (_("Fatal parsing error:\n"
filename); "Brush file '%s' is corrupt."), filename);
close (fd); close (fd);
return NULL; return NULL;
} }
@ -360,8 +360,8 @@ gimp_brush_pipe_load (const gchar *filename)
if (num_of_brushes < 1) if (num_of_brushes < 1)
{ {
g_message (_("Fatal parsing error:\nBrush pipe file '%s' is corrupt."), g_message (_("Fatal parsing error:\n"
filename); "Brush file '%s' is corrupt."), filename);
close (fd); close (fd);
g_object_unref (G_OBJECT (pipe)); g_object_unref (G_OBJECT (pipe));
g_string_free (buffer, TRUE); g_string_free (buffer, TRUE);
@ -449,7 +449,7 @@ gimp_brush_pipe_load (const gchar *filename)
else else
{ {
g_message (_("Fatal parsing error:\n" g_message (_("Fatal parsing error:\n"
"Brush pipe file '%s' is corrupt."), filename); "Brush file '%s' is corrupt."), filename);
close (fd); close (fd);
g_object_unref (G_OBJECT (pipe)); g_object_unref (G_OBJECT (pipe));
return NULL; return NULL;

View File

@ -342,8 +342,8 @@ gimp_brush_pipe_load (const gchar *filename)
if (!pipe) if (!pipe)
{ {
g_message (_("Fatal parsing error:\nBrush pipe file '%s' is corrupt."), g_message (_("Fatal parsing error:\n"
filename); "Brush file '%s' is corrupt."), filename);
close (fd); close (fd);
return NULL; return NULL;
} }
@ -360,8 +360,8 @@ gimp_brush_pipe_load (const gchar *filename)
if (num_of_brushes < 1) if (num_of_brushes < 1)
{ {
g_message (_("Fatal parsing error:\nBrush pipe file '%s' is corrupt."), g_message (_("Fatal parsing error:\n"
filename); "Brush file '%s' is corrupt."), filename);
close (fd); close (fd);
g_object_unref (G_OBJECT (pipe)); g_object_unref (G_OBJECT (pipe));
g_string_free (buffer, TRUE); g_string_free (buffer, TRUE);
@ -449,7 +449,7 @@ gimp_brush_pipe_load (const gchar *filename)
else else
{ {
g_message (_("Fatal parsing error:\n" g_message (_("Fatal parsing error:\n"
"Brush pipe file '%s' is corrupt."), filename); "Brush file '%s' is corrupt."), filename);
close (fd); close (fd);
g_object_unref (G_OBJECT (pipe)); g_object_unref (G_OBJECT (pipe));
return NULL; return NULL;

View File

@ -1,3 +1,7 @@
2002-11-27 Sven Neumann <sven@gimp.org>
* de.po: updated german translation.
2002-11-26 Christian Rose <menthos@menthos.com> 2002-11-26 Christian Rose <menthos@menthos.com>
* sv.po: Updated Swedish translation. * sv.po: Updated Swedish translation.

2041
po/de.po

File diff suppressed because it is too large Load Diff