X-Git-Url: https://git.street.me.uk/andy/viking.git/blobdiff_plain/1f78e182e7eaf305c3a10d2e145dbcc994d5e862..43e8b799d298705a645376a567b89faa20d55a87:/src/preferences.c?ds=inline diff --git a/src/preferences.c b/src/preferences.c index 5b723c7d..5d413424 100644 --- a/src/preferences.c +++ b/src/preferences.c @@ -1,3 +1,23 @@ +/* + * viking -- GPS Data and Topo Analyzer, Explorer, and Manager + * + * Copyright (C) 2003-2007, Evan Battaglia + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * + */ #include #include #include @@ -169,7 +189,8 @@ static gboolean preferences_load_from_file() gchar *key, *val; VikLayerTypedParamData *oldval, *newval; while ( ! feof (f) ) { - fgets(buf,sizeof(buf),f); + if (fgets(buf,sizeof(buf),f) == NULL) + break; if ( preferences_load_parse_param(buf, &key, &val ) ) { // if it's not in there, ignore it oldval = g_hash_table_lookup ( values, key ); @@ -205,7 +226,13 @@ static void preferences_run_setparam ( gpointer notused, guint16 i, VikLayerPara g_hash_table_insert ( values, (gchar *)(params[i].name), layer_typed_param_data_copy_from_data(params[i].type, data) ); } -static VikLayerParamData preferences_run_getparam ( gpointer notused, guint16 i ) +/* Allow preferences to be manipulated externally */ +void a_preferences_run_setparam ( VikLayerParamData data, VikLayerParam *params ) +{ + preferences_run_setparam (NULL, 0, data, params); +} + +static VikLayerParamData preferences_run_getparam ( gpointer notused, guint16 i, gboolean notused2 ) { VikLayerTypedParamData *val = (VikLayerTypedParamData *) g_hash_table_lookup ( values, ((VikLayerParam *)g_ptr_array_index(params,i))->name ); g_assert ( val != NULL ); @@ -215,7 +242,7 @@ static VikLayerParamData preferences_run_getparam ( gpointer notused, guint16 i } /* TRUE on success */ -static gboolean preferences_save_to_file() +gboolean a_preferences_save_to_file() { gchar *fn = g_build_filename(a_get_viking_dir(), VIKING_PREFS_FILE, NULL); @@ -257,12 +284,12 @@ void a_preferences_show_window(GtkWindow *parent) { } loaded = TRUE; preferences_load_from_file(); - if ( a_uibuilder_properties_factory ( parent, contiguous_params, params_count, + if ( a_uibuilder_properties_factory ( _("Preferences"), parent, contiguous_params, params_count, (gchar **) groups_names->pdata, groups_names->len, // groups, groups_count, // groups? what groups?! - (gboolean (*) (gpointer,guint16,VikLayerParamData,gpointer)) preferences_run_setparam, + (gboolean (*) (gpointer,guint16,VikLayerParamData,gpointer,gboolean)) preferences_run_setparam, NULL /* not used */, contiguous_params, preferences_run_getparam, NULL /* not used */ ) ) { - preferences_save_to_file(); + a_preferences_save_to_file(); } g_free ( contiguous_params ); }