static gboolean loaded;
-static VikLayerParamData get_default_data_answer ( const gchar *group, const gchar *name, VikLayerParamType ptype, gpointer success )
+static VikLayerParamData get_default_data_answer ( const gchar *group, const gchar *name, VikLayerParamType ptype, gpointer *success )
{
VikLayerParamData data = VIK_LPD_BOOLEAN ( FALSE );
}
default: break;
}
- success = GINT_TO_POINTER (TRUE);
+ *success = GINT_TO_POINTER (TRUE);
if ( error ) {
- g_warning ( error->message );
+ g_warning ( "%s", error->message );
g_error_free ( error );
- success = GINT_TO_POINTER (FALSE);
+ *success = GINT_TO_POINTER (FALSE);
}
return data;
{
gpointer success = GINT_TO_POINTER (TRUE);
// NB This should always succeed - don't worry about 'success'
- return get_default_data_answer ( group, name, ptype, success );
+ return get_default_data_answer ( group, name, ptype, &success );
}
static void set_default_data ( VikLayerParamData data, const gchar *group, const gchar *name, VikLayerParamType ptype )
if ( params[i].group != VIK_LAYER_NOT_IN_PROPERTIES ) {
gpointer success = GINT_TO_POINTER (FALSE);
// Check current default is available
- get_default_data_answer ( vik_layer_get_interface(type)->fixed_layer_name, params[i].name, params[i].type, success);
+ get_default_data_answer ( vik_layer_get_interface(type)->fixed_layer_name, params[i].name, params[i].type, &success );
// If no longer have a viable default
if ( ! GPOINTER_TO_INT (success) ) {
// Reset value
gchar *keyfilestr = g_key_file_to_data ( keyfile, &size, &error );
if ( error ) {
- g_warning ( error->message );
+ g_warning ( "%s", error->message );
g_error_free ( error );
answer = FALSE;
goto tidy;
answer = FALSE;
goto tidy;
}
- // Layer defaults not that secret, but just incase...
- g_chmod ( fn, 0600 );
-
+ // Layer defaults not that secret, but just incase...
+ if ( g_chmod ( fn, 0600 ) != 0 )
+ g_warning ( "%s: Failed to set permissions on %s", __FUNCTION__, fn );
+
fputs ( keyfilestr, ff );
fclose ( ff );
layer_params_count,
vik_layer_get_interface(layer)->params_groups,
vik_layer_get_interface(layer)->params_groups_count,
- (gboolean (*) (gpointer,guint16,VikLayerParamData,gpointer,gboolean)) defaults_run_setparam,
+ (gboolean (*) (gpointer,guint16,VikLayerParamData,gpointer,gboolean)) defaults_run_setparam,
GINT_TO_POINTER ( index ),
params,
defaults_run_getparam,
- GINT_TO_POINTER ( index ) ) ) {
+ GINT_TO_POINTER ( index ),
+ NULL ) ) {
// Save
layer_defaults_save_to_file();
}
void a_layer_defaults_uninit()
{
g_key_file_free ( keyfile );
+ g_ptr_array_foreach ( paramsVD, (GFunc)g_free, NULL );
g_ptr_array_free ( paramsVD, TRUE );
}
return get_default_data ( layername, param_name, param_type );
}
+
+/**
+ * a_layer_defaults_save:
+ *
+ * Call this function to save the current layer defaults
+ * Normally should only be performed if any layer defaults have been changed via direct manipulation of the layer
+ * rather than the user changing the preferences via the dialog window above
+ *
+ * This must only be performed once all layer parameters have been initialized
+ *
+ * Returns: %TRUE if saving was successful
+ */
+gboolean a_layer_defaults_save ()
+{
+ // Generate defaults
+ VikLayerTypeEnum layer;
+ for ( layer = 0; layer < VIK_LAYER_NUM_TYPES; layer++ ) {
+ use_internal_defaults_if_missing_default ( layer );
+ }
+
+ return layer_defaults_save_to_file();
+}