gboolean
eel_gconf_get_boolean (const char *key)
{
	gboolean result;
	GConfClient *client;
	GError *error = NULL;
	
	g_return_val_if_fail (key != NULL, FALSE);
	
	client = eel_gconf_client_get_global ();
	g_return_val_if_fail (client != NULL, FALSE);
	
	result = gconf_client_get_bool (client, key, &error);
	
	if (eel_gconf_handle_error (&error)) {
		result = FALSE;
	}
	
	return result;
}
GSList *
eel_gconf_get_integer_list (const char *key)
{
	GSList *slist;
	GConfClient *client;
	GError *error;
	
	g_return_val_if_fail (key != NULL, NULL);
	
	client = eel_gconf_client_get_global ();
	g_return_val_if_fail (client != NULL, NULL);
	
	error = NULL;
	slist = gconf_client_get_list (client, key, GCONF_VALUE_INT, &error);
	if (eel_gconf_handle_error (&error)) {
		slist = NULL;
	}

	return slist;
}
char *
eel_gconf_get_string (const char *key)
{
	char *result;
	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);
	
	result = gconf_client_get_string (client, key, &error);
	
	if (eel_gconf_handle_error (&error)) {
		result = g_strdup ("");
	}
	
	return result;
}
gfloat
eel_gconf_get_float (const char *key)
{
	gfloat result;
	GConfClient *client;
	GError *error = NULL;
	
	g_return_val_if_fail (key != NULL, 0);
	
	client = eel_gconf_client_get_global ();
	g_return_val_if_fail (client != NULL, 0);
	
	result = gconf_client_get_float (client, key, &error);

	if (eel_gconf_handle_error (&error)) {
		result = 0;
	}

	return result;
}
void
eel_gconf_preload_cache (const char             *directory,
                         GConfClientPreloadType  preload_type)
{
    GError *error = NULL;
    GConfClient *client;

    if (directory == NULL) {
        return;
    }

    client = eel_gconf_client_get_global ();
    g_return_if_fail (client != NULL);

    gconf_client_preload (client,
                          directory,
                          preload_type,
                          &error);

    eel_gconf_handle_error (&error);
}
gboolean
eel_gconf_monitor_add (const char *directory)
{
    GError *error = NULL;
    GConfClient *client;

    g_return_val_if_fail (directory != NULL, FALSE);

    client = eel_gconf_client_get_global ();
    g_return_val_if_fail (client != NULL, FALSE);

    gconf_client_add_dir (client,
                          directory,
                          GCONF_CLIENT_PRELOAD_NONE,
                          &error);

    if (eel_gconf_handle_error (&error)) {
        return FALSE;
    }

    return TRUE;
}
gboolean
eel_gconf_is_default (const char *key)
{
    gboolean result;
    GConfValue *value;
    GError *error = NULL;

    g_return_val_if_fail (key != NULL, FALSE);

    value = gconf_client_get_without_default  (eel_gconf_client_get_global (), key, &error);

    if (eel_gconf_handle_error (&error)) {
        if (value != NULL) {
            gconf_value_free (value);
        }
        return FALSE;
    }

    result = (value == NULL);
    eel_gconf_value_free (value);
    return result;
}
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;
}
gboolean
eel_gconf_monitor_remove (const char *directory)
{
    GError *error = NULL;
    GConfClient *client;

    if (directory == NULL) {
        return FALSE;
    }

    client = eel_gconf_client_get_global ();
    g_return_val_if_fail (client != NULL, FALSE);

    gconf_client_remove_dir (client,
                             directory,
                             &error);

    if (eel_gconf_handle_error (&error)) {
        return FALSE;
    }

    return TRUE;
}