static void update_entry(GtkWidget* dialog, GConfChangeSet* cs, const gchar* config_key) { GConfValue* value = NULL; GConfClient* client; client = g_object_get_data(dialog, "client"); if (gconf_change_set_check_value(cs, config_key, &value)) { GtkWidget* entry; entry = g_object_get_data(dialog, config_key); g_assert(entry != NULL); if (value == NULL) { /* We need to check for a default value, since the revert set will unset the user setting */ GConfValue* def; def = gconf_client_get_default_from_schema(client, config_key, NULL); if (def) { if (def->type == GCONF_VALUE_STRING) { gtk_entry_set_text(GTK_ENTRY(entry), gconf_value_get_string(def)); } else g_warning("Wrong type for default value of %s", config_key); gconf_value_free(def); } else gtk_entry_set_text(GTK_ENTRY(entry), ""); } else if (value->type == GCONF_VALUE_STRING) { gtk_entry_set_text(GTK_ENTRY(entry), gconf_value_get_string(value)); } else { /* error, wrong type value in the config database */ g_warning("GConfChangeSet had wrong value type %d for key %s", value->type, config_key); gtk_entry_set_text(GTK_ENTRY(entry), ""); } } }
static gboolean is_default_value ( GConfClient* client, const GConfEntry* entry ) { // This doesn't work: // return gconf_entry_get_is_default(entry); GError* error = NULL; const GConfValue* def = gconf_client_get_default_from_schema( client, gconf_entry_get_key(entry), &error ); if (error || !def) return FALSE; return gconf_value_compare(def, entry->value) == 0; }
GConfValue* eel_gconf_get_default_value (const char *key) { GConfValue *value = NULL; GConfClient *client; GError *error = NULL; g_return_val_if_fail (key != NULL, NULL); client = eel_gconf_client_get_global (); g_return_val_if_fail (client != NULL, NULL); value = gconf_client_get_default_from_schema (client, key, &error); if (eel_gconf_handle_error (&error)) { if (value != NULL) { gconf_value_free (value); value = NULL; } } return value; }