void go_conf_set_enum (GOConfNode *node, gchar const *key, GType t, gint val) { GEnumClass *enum_class = G_ENUM_CLASS (g_type_class_ref (t)); GEnumValue *enum_value = g_enum_get_value (enum_class, val); go_conf_set_string (node, key, enum_value->value_nick); g_type_class_unref (enum_class); }
gboolean go_conf_set_value_from_str (GOConfNode *node, gchar const *key, gchar const *val_str) { switch (go_conf_node_get_key_type (node, key)) { case G_TYPE_STRING: go_conf_set_string (node, key, val_str); break; case G_TYPE_FLOAT: { GODateConventions const *conv = NULL; /* workbook_date_conv (state->wb); */ GnmValue *value = format_match_number (val_str, NULL, conv); if (value != NULL) { gnm_float the_float = value_get_as_float (value); go_conf_set_double (node, key, the_float); } value_release (value); break; } case G_TYPE_INT: { GODateConventions const *conv = NULL; /* workbook_date_conv (state->wb); */ GnmValue *value = format_match_number (val_str, NULL, conv); if (value != NULL) { gint the_int = value_get_as_int (value); go_conf_set_int (node, key, the_int); } value_release (value); break; } case G_TYPE_BOOLEAN: { GODateConventions const *conv = NULL; /* workbook_date_conv (state->wb); */ GnmValue *value = format_match_number (val_str, NULL, conv); gboolean err, the_bool; if (value != NULL) { err = FALSE; the_bool = value_get_as_bool (value, &err); go_conf_set_bool (node, key, the_bool); } value_release (value); break; } default: g_warning ("Unsupported gconf type in preference dialog"); } return TRUE; }