Implement. Create a copy of a preferences structure (clone_cb): Implement

2001-05-06  Bradford Hovinen  <hovinen@ximian.com>

	* preferences.c (preferences_clone): Implement. Create a copy of a
	preferences structure
	(clone_cb): Implement
	(read_prefs_from_db): Parse screensavers from a copy of the string
	so that we don't overwrite the original

	* main.c (main): Call preferences_clone instead of reloading old
	preferences
This commit is contained in:
Bradford Hovinen 2001-05-06 17:33:27 +00:00 committed by Bradford Hovinen (Gdict maintainer)
parent 7bfddd30e4
commit 6fb797ca6b
5 changed files with 58 additions and 4 deletions

View file

@ -1,3 +1,14 @@
2001-05-06 Bradford Hovinen <hovinen@ximian.com>
* preferences.c (preferences_clone): Implement. Create a copy of a
preferences structure
(clone_cb): Implement
(read_prefs_from_db): Parse screensavers from a copy of the string
so that we don't overwrite the original
* main.c (main): Call preferences_clone instead of reloading old
preferences
2001-05-05 Bradford Hovinen <hovinen@ximian.com> 2001-05-05 Bradford Hovinen <hovinen@ximian.com>
* prefs-widget.c (one_screensaver_cb): Fix segv * prefs-widget.c (one_screensaver_cb): Fix segv

View file

@ -400,8 +400,7 @@ main (int argc, char **argv)
#endif /* HAVE_XIMIAN_ARCHIVER */ #endif /* HAVE_XIMIAN_ARCHIVER */
if (!res) { if (!res) {
old_prefs = preferences_new (); old_prefs = preferences_clone (prefs);
preferences_load (old_prefs);
setup_capplet_widget (); setup_capplet_widget ();
capplet_gtk_main (); capplet_gtk_main ();

View file

@ -59,7 +59,7 @@ remove_entry (GTree *config_db, gchar *entry)
static void static void
read_prefs_from_db (Preferences *prefs) read_prefs_from_db (Preferences *prefs)
{ {
gchar *value; gchar *value, *tmp;
value = g_tree_lookup (prefs->config_db, "verbose"); value = g_tree_lookup (prefs->config_db, "verbose");
if (value) prefs->verbose = parse_boolean_resource (value); if (value) prefs->verbose = parse_boolean_resource (value);
@ -95,7 +95,12 @@ read_prefs_from_db (Preferences *prefs)
if (value) prefs->cycle = parse_minutes_resource (value); if (value) prefs->cycle = parse_minutes_resource (value);
value = g_tree_lookup (prefs->config_db, "programs"); value = g_tree_lookup (prefs->config_db, "programs");
if (value) prefs->screensavers = parse_screensaver_list (value);
if (value) {
tmp = g_strdup (value);
prefs->screensavers = parse_screensaver_list (tmp);
g_free (tmp);
}
} }
static void static void
@ -169,6 +174,38 @@ preferences_new (void)
return prefs; return prefs;
} }
static gint
clone_cb (gchar *key, gchar *value, Preferences *new_prefs)
{
if (!strcmp (key, "programs"))
g_log (G_LOG_DOMAIN, G_LOG_LEVEL_DEBUG, "Programs value is:\n%s", value);
g_tree_insert (new_prefs->config_db, key, g_strdup (value));
return 0;
}
Preferences *
preferences_clone (Preferences *prefs)
{
Preferences *new_prefs;
new_prefs = g_new0 (Preferences, 1);
new_prefs->config_db = g_tree_new ((GCompareFunc) strcmp);
new_prefs->selection_mode = prefs->selection_mode;
new_prefs->power_management = prefs->power_management;
new_prefs->standby_time = prefs->standby_time;
new_prefs->suspend_time = prefs->suspend_time;
new_prefs->power_down_time = prefs->power_down_time;
g_tree_traverse (prefs->config_db, (GTraverseFunc) clone_cb,
G_IN_ORDER, new_prefs);
read_prefs_from_db (new_prefs);
return new_prefs;
}
void void
preferences_destroy (Preferences *prefs) preferences_destroy (Preferences *prefs)
{ {

View file

@ -95,6 +95,7 @@ struct _Preferences
typedef struct _Preferences Preferences; typedef struct _Preferences Preferences;
Preferences *preferences_new (void); Preferences *preferences_new (void);
Preferences *preferences_clone (Preferences *prefs);
void preferences_destroy (Preferences *prefs); void preferences_destroy (Preferences *prefs);
void preferences_load (Preferences *prefs); void preferences_load (Preferences *prefs);

View file

@ -0,0 +1,6 @@
/*
* Translatable strings file generated by extract-labels
* Add this file to your project's POTFILES.in.
* DO NOT compile it as part of your application.
*/