1
/* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 8; tab-width: 8 -*- */
4
Copyright (C) 2000, 2001 Eazel, Inc.
6
The Gnome Library is free software; you can redistribute it and/or
7
modify it under the terms of the GNU Library General Public License as
8
published by the Free Software Foundation; either version 2 of the
9
License, or (at your option) any later version.
11
The Gnome Library is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
Library General Public License for more details.
16
You should have received a copy of the GNU Library General Public
17
License along with the Gnome Library; see the file COPYING.LIB. If not,
18
write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor,
19
Boston, MA 02110-1301 USA.
21
Authors: Ramiro Estrugo <ramiro@eazel.com>
26
#include <gconf/gconf-client.h>
27
#include <gconf/gconf.h>
28
#include <glib/gi18n.h>
30
#include "eel-gconf-extensions.h"
31
#include "rb-dialog.h"
33
static GConfClient *global_gconf_client = NULL;
36
global_client_free (void)
38
if (global_gconf_client == NULL) {
42
g_object_unref (G_OBJECT (global_gconf_client));
43
global_gconf_client = NULL;
48
eel_gconf_client_get_global (void)
50
if (global_gconf_client == NULL) {
51
global_gconf_client = gconf_client_get_default ();
52
g_atexit (global_client_free);
55
return global_gconf_client;
59
eel_gconf_handle_error (GError **error)
61
g_return_val_if_fail (error != NULL, FALSE);
64
g_warning ("%s", (*error)->message);
65
g_error_free (*error);
75
eel_gconf_set_boolean (const char *key,
76
gboolean boolean_value)
81
g_return_if_fail (key != NULL);
83
client = eel_gconf_client_get_global ();
84
g_return_if_fail (client != NULL);
86
gconf_client_set_bool (client, key, boolean_value, &error);
87
eel_gconf_handle_error (&error);
91
eel_gconf_get_boolean (const char *key)
97
g_return_val_if_fail (key != NULL, FALSE);
99
client = eel_gconf_client_get_global ();
100
g_return_val_if_fail (client != NULL, FALSE);
102
result = gconf_client_get_bool (client, key, &error);
104
if (eel_gconf_handle_error (&error)) {
112
eel_gconf_set_integer (const char *key,
116
GError *error = NULL;
118
g_return_if_fail (key != NULL);
120
client = eel_gconf_client_get_global ();
121
g_return_if_fail (client != NULL);
123
gconf_client_set_int (client, key, int_value, &error);
124
eel_gconf_handle_error (&error);
128
eel_gconf_get_integer (const char *key)
132
GError *error = NULL;
134
g_return_val_if_fail (key != NULL, 0);
136
client = eel_gconf_client_get_global ();
137
g_return_val_if_fail (client != NULL, 0);
139
result = gconf_client_get_int (client, key, &error);
141
if (eel_gconf_handle_error (&error)) {
149
eel_gconf_set_float (const char *key,
153
GError *error = NULL;
155
g_return_if_fail (key != NULL);
157
client = eel_gconf_client_get_global ();
158
g_return_if_fail (client != NULL);
160
gconf_client_set_float (client, key, float_value, &error);
161
eel_gconf_handle_error (&error);
165
eel_gconf_get_float (const char *key)
169
GError *error = NULL;
171
g_return_val_if_fail (key != NULL, 0);
173
client = eel_gconf_client_get_global ();
174
g_return_val_if_fail (client != NULL, 0);
176
result = gconf_client_get_float (client, key, &error);
178
if (eel_gconf_handle_error (&error)) {
186
eel_gconf_set_string (const char *key,
187
const char *string_value)
190
GError *error = NULL;
192
g_return_if_fail (key != NULL);
193
g_return_if_fail (string_value != NULL);
195
client = eel_gconf_client_get_global ();
196
g_return_if_fail (client != NULL);
198
gconf_client_set_string (client, key, string_value, &error);
199
eel_gconf_handle_error (&error);
203
eel_gconf_get_string (const char *key)
207
GError *error = NULL;
209
g_return_val_if_fail (key != NULL, NULL);
211
client = eel_gconf_client_get_global ();
212
g_return_val_if_fail (client != NULL, NULL);
214
result = gconf_client_get_string (client, key, &error);
216
if (eel_gconf_handle_error (&error)) {
217
result = g_strdup ("");
224
eel_gconf_set_string_list (const char *key,
230
g_return_if_fail (key != NULL);
232
client = eel_gconf_client_get_global ();
233
g_return_if_fail (client != NULL);
236
gconf_client_set_list (client, key, GCONF_VALUE_STRING,
237
/* Need cast cause of GConf api bug */
240
eel_gconf_handle_error (&error);
244
eel_gconf_get_string_list (const char *key)
250
g_return_val_if_fail (key != NULL, NULL);
252
client = eel_gconf_client_get_global ();
253
g_return_val_if_fail (client != NULL, NULL);
256
slist = gconf_client_get_list (client, key, GCONF_VALUE_STRING, &error);
257
if (eel_gconf_handle_error (&error)) {
264
/* This code wasn't part of the original eel-gconf-extensions.c */
266
eel_gconf_set_integer_list (const char *key,
272
g_return_if_fail (key != NULL);
274
client = eel_gconf_client_get_global ();
275
g_return_if_fail (client != NULL);
278
gconf_client_set_list (client, key, GCONF_VALUE_INT,
279
/* Need cast cause of GConf api bug */
282
eel_gconf_handle_error (&error);
286
eel_gconf_get_integer_list (const char *key)
292
g_return_val_if_fail (key != NULL, NULL);
294
client = eel_gconf_client_get_global ();
295
g_return_val_if_fail (client != NULL, NULL);
298
slist = gconf_client_get_list (client, key, GCONF_VALUE_INT, &error);
299
if (eel_gconf_handle_error (&error)) {
305
/* End of added code */
308
eel_gconf_is_default (const char *key)
312
GError *error = NULL;
314
g_return_val_if_fail (key != NULL, FALSE);
316
value = gconf_client_get_without_default (eel_gconf_client_get_global (), key, &error);
318
if (eel_gconf_handle_error (&error)) {
320
gconf_value_free (value);
325
result = (value == NULL);
328
gconf_value_free (value);
336
eel_gconf_unset (const char *key)
339
GError *error = NULL;
341
g_return_if_fail (key != NULL);
343
client = eel_gconf_client_get_global ();
344
g_return_if_fail (client != NULL);
346
gconf_client_unset (client, key, &error);
347
eel_gconf_handle_error (&error);
351
eel_gconf_monitor_add (const char *directory)
353
GError *error = NULL;
356
g_return_val_if_fail (directory != NULL, FALSE);
358
client = eel_gconf_client_get_global ();
359
g_return_val_if_fail (client != NULL, FALSE);
361
gconf_client_add_dir (client,
363
GCONF_CLIENT_PRELOAD_NONE,
366
if (eel_gconf_handle_error (&error)) {
374
eel_gconf_monitor_remove (const char *directory)
376
GError *error = NULL;
379
if (directory == NULL) {
383
client = eel_gconf_client_get_global ();
384
g_return_val_if_fail (client != NULL, FALSE);
386
gconf_client_remove_dir (client,
390
if (eel_gconf_handle_error (&error)) {
398
eel_gconf_suggest_sync (void)
401
GError *error = NULL;
403
client = eel_gconf_client_get_global ();
404
g_return_if_fail (client != NULL);
406
gconf_client_suggest_sync (client, &error);
407
eel_gconf_handle_error (&error);
411
eel_gconf_get_value (const char *key)
413
GConfValue *value = NULL;
415
GError *error = NULL;
417
g_return_val_if_fail (key != NULL, NULL);
419
client = eel_gconf_client_get_global ();
420
g_return_val_if_fail (client != NULL, NULL);
422
value = gconf_client_get (client, key, &error);
424
if (eel_gconf_handle_error (&error)) {
426
gconf_value_free (value);
435
eel_gconf_set_value (const char *key, GConfValue *value)
438
GError *error = NULL;
440
g_return_if_fail (key != NULL);
442
client = eel_gconf_client_get_global ();
443
g_return_if_fail (client != NULL);
445
gconf_client_set (client, key, value, &error);
447
if (eel_gconf_handle_error (&error)) {
453
eel_gconf_value_free (GConfValue *value)
459
gconf_value_free (value);
463
eel_gconf_notification_add (const char *key,
464
GConfClientNotifyFunc notification_callback,
465
gpointer callback_data)
467
guint notification_id;
469
GError *error = NULL;
471
g_return_val_if_fail (key != NULL, EEL_GCONF_UNDEFINED_CONNECTION);
472
g_return_val_if_fail (notification_callback != NULL, EEL_GCONF_UNDEFINED_CONNECTION);
474
client = eel_gconf_client_get_global ();
475
g_return_val_if_fail (client != NULL, EEL_GCONF_UNDEFINED_CONNECTION);
477
notification_id = gconf_client_notify_add (client,
479
notification_callback,
484
if (eel_gconf_handle_error (&error)) {
485
if (notification_id != EEL_GCONF_UNDEFINED_CONNECTION) {
486
gconf_client_notify_remove (client, notification_id);
487
notification_id = EEL_GCONF_UNDEFINED_CONNECTION;
491
return notification_id;
495
eel_gconf_notification_remove (guint notification_id)
499
if (notification_id == EEL_GCONF_UNDEFINED_CONNECTION) {
503
client = eel_gconf_client_get_global ();
504
g_return_if_fail (client != NULL);
506
gconf_client_notify_remove (client, notification_id);