new functions. (property_change_cb, add_key): added support for FLOAT
2002-08-27 Rodrigo Moya <rodrigo@ximian.com> * e-config-listener.c[ch] (e_config_listener_get_float_with_default, e_config_listener_set_boolean, e_config_listener_set_float): new functions. (property_change_cb, add_key): added support for FLOAT values. (e_config_listener_set_string): free strings before returning. svn path=/trunk/; revision=17873
This commit is contained in:
committed by
Rodrigo Moya
parent
07f076dd90
commit
7414b86684
@ -1,3 +1,11 @@
|
||||
2002-08-27 Rodrigo Moya <rodrigo@ximian.com>
|
||||
|
||||
* e-config-listener.c[ch] (e_config_listener_get_float_with_default,
|
||||
e_config_listener_set_boolean, e_config_listener_set_float): new
|
||||
functions.
|
||||
(property_change_cb, add_key): added support for FLOAT values.
|
||||
(e_config_listener_set_string): free strings before returning.
|
||||
|
||||
2002-08-26 Peter Williams <peterw@ximian.com>
|
||||
|
||||
* e-dialog-utils.c (set_transient_for_gdk): If gdk_window_foreign_new
|
||||
|
||||
@ -24,6 +24,7 @@ typedef struct {
|
||||
GtkFundamentalType type;
|
||||
union {
|
||||
gboolean v_bool;
|
||||
float v_float;
|
||||
long v_long;
|
||||
char *v_str;
|
||||
} value;
|
||||
@ -191,6 +192,9 @@ property_change_cb (BonoboListener *listener,
|
||||
if (bonobo_arg_type_is_equal (any->_type, BONOBO_ARG_BOOLEAN, NULL)) {
|
||||
kd->type = GTK_TYPE_BOOL;
|
||||
kd->value.v_bool = BONOBO_ARG_GET_BOOLEAN (any);
|
||||
} else if (bonobo_arg_type_is_equal (any->_type, BONOBO_ARG_FLOAT, NULL)) {
|
||||
kd->type = GTK_TYPE_FLOAT;
|
||||
kd->value.v_float = BONOBO_ARG_GET_FLOAT (any);
|
||||
} else if (bonobo_arg_type_is_equal (any->_type, BONOBO_ARG_LONG, NULL)) {
|
||||
kd->type = GTK_TYPE_LONG;
|
||||
kd->value.v_long = BONOBO_ARG_GET_LONG (any);
|
||||
@ -221,6 +225,9 @@ add_key (EConfigListener *cl, const char *key, GtkFundamentalType type,
|
||||
case GTK_TYPE_BOOL :
|
||||
memcpy (&kd->value.v_bool, value, sizeof (gboolean));
|
||||
break;
|
||||
case GTK_TYPE_FLOAT :
|
||||
memcpy (&kd->value.v_float, value, sizeof (float));
|
||||
break;
|
||||
case GTK_TYPE_LONG :
|
||||
memcpy (&kd->value.v_long, value, sizeof (long));
|
||||
break;
|
||||
@ -297,6 +304,43 @@ e_config_listener_get_boolean_with_default (EConfigListener *cl,
|
||||
return value;
|
||||
}
|
||||
|
||||
float
|
||||
e_config_listener_get_float_with_default (EConfigListener *cl,
|
||||
const char *key,
|
||||
float def,
|
||||
gboolean *used_default)
|
||||
{
|
||||
float value;
|
||||
KeyData *kd;
|
||||
gboolean d;
|
||||
gpointer orig_key, orig_value;
|
||||
|
||||
g_return_val_if_fail (E_IS_CONFIG_LISTENER (cl), -1);
|
||||
g_return_val_if_fail (key != NULL, -1);
|
||||
|
||||
/* search for the key in our hash table */
|
||||
if (!g_hash_table_lookup_extended (cl->priv->keys, key, &orig_key, &orig_value)) {
|
||||
/* not found, so retrieve it from the configuration database */
|
||||
value = bonobo_config_get_float_with_default (cl->priv->db, key, def, &d);
|
||||
kd = add_key (cl, key, GTK_TYPE_FLOAT, &value, d);
|
||||
|
||||
if (used_default != NULL)
|
||||
*used_default = d;
|
||||
} else {
|
||||
kd = (KeyData *) orig_value;
|
||||
g_assert (kd != NULL);
|
||||
|
||||
if (kd->type == GTK_TYPE_FLOAT) {
|
||||
value = kd->value.v_float;
|
||||
if (used_default != NULL)
|
||||
*used_default = kd->used_default;
|
||||
} else
|
||||
return -1;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
long
|
||||
e_config_listener_get_long_with_default (EConfigListener *cl,
|
||||
const char *key,
|
||||
@ -374,6 +418,48 @@ e_config_listener_get_string_with_default (EConfigListener *cl,
|
||||
return g_strdup (str);
|
||||
}
|
||||
|
||||
void
|
||||
e_config_listener_set_boolean (EConfigListener *cl, const char *key, gboolean value)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
|
||||
g_return_if_fail (E_IS_CONFIG_LISTENER (cl));
|
||||
g_return_if_fail (key != NULL);
|
||||
|
||||
/* check that the value is not the same */
|
||||
if (value == e_config_listener_get_boolean_with_default (cl, key, 0, NULL))
|
||||
return;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
bonobo_config_set_boolean (cl->priv->db, key, value, &ev);
|
||||
if (BONOBO_EX (&ev))
|
||||
g_warning ("Cannot save config key %s -- %s", key, BONOBO_EX_ID (&ev));
|
||||
|
||||
CORBA_exception_free (&ev);
|
||||
}
|
||||
|
||||
void
|
||||
e_config_listener_set_float (EConfigListener *cl, const char *key, float value)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
|
||||
g_return_if_fail (E_IS_CONFIG_LISTENER (cl));
|
||||
g_return_if_fail (key != NULL);
|
||||
|
||||
/* check that the value is not the same */
|
||||
if (value == e_config_listener_get_float_with_default (cl, key, 0, NULL))
|
||||
return;
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
bonobo_config_set_float (cl->priv->db, key, value, &ev);
|
||||
if (BONOBO_EX (&ev))
|
||||
g_warning ("Cannot save config key %s -- %s", key, BONOBO_EX_ID (&ev));
|
||||
|
||||
CORBA_exception_free (&ev);
|
||||
}
|
||||
|
||||
void
|
||||
e_config_listener_set_long (EConfigListener *cl, const char *key, long value)
|
||||
{
|
||||
@ -405,10 +491,14 @@ e_config_listener_set_string (EConfigListener *cl, const char *key, const char *
|
||||
g_return_if_fail (key != NULL);
|
||||
|
||||
/* check that the value is not the same */
|
||||
s1 = value;
|
||||
s1 = (char *) value;
|
||||
s2 = e_config_listener_get_string_with_default (cl, key, NULL, NULL);
|
||||
if (!strcmp (s1 ? s1 : "", s2 ? s2 : ""))
|
||||
if (!strcmp (s1 ? s1 : "", s2 ? s2 : "")) {
|
||||
g_free (s2);
|
||||
return;
|
||||
}
|
||||
|
||||
g_free (s2);
|
||||
|
||||
CORBA_exception_init (&ev);
|
||||
|
||||
|
||||
@ -43,6 +43,10 @@ gboolean e_config_listener_get_boolean_with_default (EConfigListene
|
||||
const char *key,
|
||||
gboolean def,
|
||||
gboolean *used_default);
|
||||
float e_config_listener_get_float_with_default (EConfigListener *cl,
|
||||
const char *key,
|
||||
float def,
|
||||
gboolean *used_default);
|
||||
long e_config_listener_get_long_with_default (EConfigListener *cl,
|
||||
const char *key,
|
||||
long def,
|
||||
@ -51,6 +55,12 @@ char *e_config_listener_get_string_with_default (EConfigListener
|
||||
const char *key,
|
||||
const char *def,
|
||||
gboolean *used_default);
|
||||
void e_config_listener_set_boolean (EConfigListener *cl,
|
||||
const char *key,
|
||||
gboolean value);
|
||||
void e_config_listener_set_float (EConfigListener *cl,
|
||||
const char *key,
|
||||
float value);
|
||||
void e_config_listener_set_long (EConfigListener *cl,
|
||||
const char *key,
|
||||
long value);
|
||||
|
||||
Reference in New Issue
Block a user