Connect to value_changed signal
2001-12-19 Bradford Hovinen <hovinen@ximian.com> * gconf-property-editor.c (gconf_peditor_new_float_range) (gconf_peditor_new_int_range): Connect to value_changed signal * capplet-util.c: Comment out most of this file * gconf-property-editor.c (gconf_peditor_new_int_range): Convert to ~_float_range (gconf_peditor_new_float_range): Add callbacks for conversion between widget's values and GConf values in the signature (peditor_float_range_widget_changed): Issue callback, if available, to convert from widget's values to GConf values (peditor_float_range_value_changed): Vice verca above (gconf_peditor_new_int_range, peditor_int_range_widget_changed) (peditor_int_range_value_changed): Implement. Copy from float versions
This commit is contained in:
parent
b8fd80b0a1
commit
3cacd8d820
4 changed files with 174 additions and 32 deletions
|
@ -1,3 +1,21 @@
|
|||
2001-12-19 Bradford Hovinen <hovinen@ximian.com>
|
||||
|
||||
* gconf-property-editor.c (gconf_peditor_new_float_range)
|
||||
(gconf_peditor_new_int_range): Connect to value_changed signal
|
||||
|
||||
* capplet-util.c: Comment out most of this file
|
||||
|
||||
* gconf-property-editor.c (gconf_peditor_new_int_range): Convert
|
||||
to ~_float_range
|
||||
(gconf_peditor_new_float_range): Add callbacks for conversion
|
||||
between widget's values and GConf values in the signature
|
||||
(peditor_float_range_widget_changed): Issue callback, if
|
||||
available, to convert from widget's values to GConf values
|
||||
(peditor_float_range_value_changed): Vice verca above
|
||||
(gconf_peditor_new_int_range, peditor_int_range_widget_changed)
|
||||
(peditor_int_range_value_changed): Implement. Copy from float
|
||||
versions
|
||||
|
||||
2001-12-18 Bradford Hovinen <hovinen@ximian.com>
|
||||
|
||||
* capplet-util.h: Don't #include bonobo*.h
|
||||
|
|
|
@ -40,6 +40,8 @@ static SetupPropertyEditorsFn setup_property_editors_cb = NULL;
|
|||
|
||||
static GConfChangeSet *changeset;
|
||||
|
||||
#if 0
|
||||
|
||||
/* apply_cb
|
||||
*
|
||||
* Callback issued when the user clicks "Apply" or "Ok". This function is
|
||||
|
@ -171,6 +173,8 @@ get_property_name (const gchar *binary)
|
|||
return res;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
/* setup_session_mgmt
|
||||
*
|
||||
* Make sure the capplet launches and applies its settings next time the user
|
||||
|
@ -218,6 +222,8 @@ setup_session_mgmt (const gchar *binary_name)
|
|||
#endif
|
||||
}
|
||||
|
||||
#if 0
|
||||
|
||||
/* capplet_init -- see documentation in capplet-util.h
|
||||
*/
|
||||
|
||||
|
@ -282,3 +288,5 @@ capplet_init (int argc,
|
|||
gconf_change_set_unref (changeset);
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
|
@ -529,34 +529,140 @@ gconf_peditor_new_select_radio (GConfChangeSet *changeset, gchar *key, GSList *r
|
|||
}
|
||||
|
||||
static void
|
||||
peditor_int_range_value_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry, GConfPropertyEditor *peditor)
|
||||
peditor_float_range_value_changed (GConfClient *client, guint cnxn_id, GConfEntry *entry, GConfPropertyEditor *peditor)
|
||||
{
|
||||
GConfValue *value;
|
||||
GtkAdjustment *adjustment;
|
||||
GConfPEditorValueConvFn to_widget_cb;
|
||||
gfloat value_f;
|
||||
|
||||
to_widget_cb = g_object_get_data (G_OBJECT (peditor), "to-widget-cb");
|
||||
|
||||
gconf_change_set_remove (peditor->p->changeset, peditor->p->key);
|
||||
value = gconf_entry_get_value (entry);
|
||||
|
||||
if (value != NULL) {
|
||||
value_f = gconf_value_get_float (value);
|
||||
|
||||
if (to_widget_cb != NULL)
|
||||
value_f = to_widget_cb (value_f);
|
||||
|
||||
adjustment = g_object_get_data (G_OBJECT (peditor), "adjustment");
|
||||
gtk_adjustment_set_value (adjustment, gconf_value_get_int (value));
|
||||
gtk_adjustment_set_value (adjustment, value_f);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
peditor_int_range_widget_changed (GConfPropertyEditor *peditor, GtkAdjustment *adjustment)
|
||||
peditor_float_range_widget_changed (GConfPropertyEditor *peditor, GtkAdjustment *adjustment)
|
||||
{
|
||||
GConfValue *value;
|
||||
gfloat value_f;
|
||||
GConfPEditorValueConvFn from_widget_cb;
|
||||
|
||||
gconf_change_set_set_int (peditor->p->changeset, peditor->p->key,
|
||||
gtk_adjustment_get_value (adjustment));
|
||||
from_widget_cb = g_object_get_data (G_OBJECT (peditor), "from-widget-cb");
|
||||
|
||||
value_f = gtk_adjustment_get_value (adjustment);
|
||||
|
||||
if (from_widget_cb != NULL)
|
||||
value_f = from_widget_cb (value_f);
|
||||
|
||||
gconf_change_set_set_float (peditor->p->changeset, peditor->p->key, value_f);
|
||||
|
||||
gconf_change_set_check_value (peditor->p->changeset, peditor->p->key, &value);
|
||||
g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value);
|
||||
}
|
||||
|
||||
GObject *
|
||||
gconf_peditor_new_int_range (GConfChangeSet *changeset, gchar *key, GtkWidget *range)
|
||||
gconf_peditor_new_float_range (GConfChangeSet *changeset,
|
||||
gchar *key,
|
||||
GtkWidget *range,
|
||||
GConfPEditorValueConvFn to_widget_cb,
|
||||
GConfPEditorValueConvFn from_widget_cb)
|
||||
{
|
||||
GObject *peditor;
|
||||
GConfClient *client;
|
||||
GConfEntry *gconf_entry;
|
||||
GSList *item;
|
||||
GtkAdjustment *adjustment;
|
||||
|
||||
peditor = g_object_new (gconf_property_editor_get_type (),
|
||||
"key", key,
|
||||
"callback", peditor_float_range_value_changed,
|
||||
"changeset", changeset,
|
||||
"object", range,
|
||||
NULL);
|
||||
|
||||
adjustment = gtk_range_get_adjustment (GTK_RANGE (range));
|
||||
g_object_set_data (peditor, "adjustment", adjustment);
|
||||
g_object_set_data (peditor, "to-widget-cb", to_widget_cb);
|
||||
g_object_set_data (peditor, "from-widget-cb", from_widget_cb);
|
||||
|
||||
g_signal_connect_swapped (G_OBJECT (adjustment), "value_changed",
|
||||
(GCallback) peditor_float_range_widget_changed, peditor);
|
||||
|
||||
client = gconf_client_get_default ();
|
||||
gconf_entry = gconf_client_get_entry (client, key, NULL, TRUE, NULL);
|
||||
peditor_float_range_value_changed (client, 0, gconf_entry, GCONF_PROPERTY_EDITOR (peditor));
|
||||
|
||||
return peditor;
|
||||
}
|
||||
|
||||
/* FIXME: These differ only trivially from the float versions; we should combine them */
|
||||
|
||||
static void
|
||||
peditor_int_range_value_changed (GConfClient *client,
|
||||
guint cnxn_id,
|
||||
GConfEntry *entry,
|
||||
GConfPropertyEditor *peditor)
|
||||
{
|
||||
GConfValue *value;
|
||||
GtkAdjustment *adjustment;
|
||||
GConfPEditorValueConvFn to_widget_cb;
|
||||
gfloat value_i;
|
||||
|
||||
to_widget_cb = g_object_get_data (G_OBJECT (peditor), "to-widget-cb");
|
||||
|
||||
gconf_change_set_remove (peditor->p->changeset, peditor->p->key);
|
||||
value = gconf_entry_get_value (entry);
|
||||
|
||||
if (value != NULL) {
|
||||
value_i = gconf_value_get_int (value);
|
||||
|
||||
if (to_widget_cb != NULL)
|
||||
value_i = to_widget_cb (value_i);
|
||||
|
||||
adjustment = g_object_get_data (G_OBJECT (peditor), "adjustment");
|
||||
gtk_adjustment_set_value (adjustment, value_i);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
peditor_int_range_widget_changed (GConfPropertyEditor *peditor,
|
||||
GtkAdjustment *adjustment)
|
||||
{
|
||||
GConfValue *value;
|
||||
gfloat value_i;
|
||||
GConfPEditorValueConvFn from_widget_cb;
|
||||
|
||||
from_widget_cb = g_object_get_data (G_OBJECT (peditor), "from-widget-cb");
|
||||
|
||||
value_i = gtk_adjustment_get_value (adjustment);
|
||||
|
||||
if (from_widget_cb != NULL)
|
||||
value_i = from_widget_cb (value_i);
|
||||
|
||||
gconf_change_set_set_int (peditor->p->changeset, peditor->p->key, value_i);
|
||||
|
||||
gconf_change_set_check_value (peditor->p->changeset, peditor->p->key, &value);
|
||||
g_signal_emit (peditor, peditor_signals[VALUE_CHANGED], 0, peditor->p->key, value);
|
||||
}
|
||||
|
||||
GObject *
|
||||
gconf_peditor_new_int_range (GConfChangeSet *changeset,
|
||||
gchar *key,
|
||||
GtkWidget *range,
|
||||
GConfPEditorValueConvFn to_widget_cb,
|
||||
GConfPEditorValueConvFn from_widget_cb)
|
||||
{
|
||||
GObject *peditor;
|
||||
GConfClient *client;
|
||||
|
@ -573,8 +679,10 @@ gconf_peditor_new_int_range (GConfChangeSet *changeset, gchar *key, GtkWidget *r
|
|||
|
||||
adjustment = gtk_range_get_adjustment (GTK_RANGE (range));
|
||||
g_object_set_data (peditor, "adjustment", adjustment);
|
||||
g_object_set_data (peditor, "to-widget-cb", to_widget_cb);
|
||||
g_object_set_data (peditor, "from-widget-cb", from_widget_cb);
|
||||
|
||||
g_signal_connect_swapped (G_OBJECT (adjustment), "changed",
|
||||
g_signal_connect_swapped (G_OBJECT (adjustment), "value_changed",
|
||||
(GCallback) peditor_int_range_widget_changed, peditor);
|
||||
|
||||
client = gconf_client_get_default ();
|
||||
|
@ -600,4 +708,3 @@ gconf_peditor_widget_set_guard (GConfPropertyEditor *peditor, GtkWidget *widget)
|
|||
|
||||
g_signal_connect (G_OBJECT (peditor), "value-changed", (GCallback) guard_value_changed, widget);
|
||||
}
|
||||
|
||||
|
|
|
@ -38,6 +38,8 @@ typedef struct _GConfPropertyEditor GConfPropertyEditor;
|
|||
typedef struct _GConfPropertyEditorClass GConfPropertyEditorClass;
|
||||
typedef struct _GConfPropertyEditorPrivate GConfPropertyEditorPrivate;
|
||||
|
||||
typedef gfloat (*GConfPEditorValueConvFn) (gfloat);
|
||||
|
||||
struct _GConfPropertyEditor
|
||||
{
|
||||
GObject parent;
|
||||
|
@ -74,9 +76,16 @@ GObject *gconf_peditor_new_select_menu (GConfChangeSet *changeset,
|
|||
GObject *gconf_peditor_new_select_radio (GConfChangeSet *changeset,
|
||||
gchar *key,
|
||||
GSList *radio_group);
|
||||
GObject *gconf_peditor_new_float_range (GConfChangeSet *changeset,
|
||||
gchar *key,
|
||||
GtkWidget *range,
|
||||
GConfPEditorValueConvFn to_widget_cb,
|
||||
GConfPEditorValueConvFn from_widget_cb);
|
||||
GObject *gconf_peditor_new_int_range (GConfChangeSet *changeset,
|
||||
gchar *key,
|
||||
GtkWidget *range);
|
||||
GtkWidget *range,
|
||||
GConfPEditorValueConvFn to_widget_cb,
|
||||
GConfPEditorValueConvFn from_widget_cb);
|
||||
|
||||
void gconf_peditor_widget_set_guard (GConfPropertyEditor *peditor,
|
||||
GtkWidget *widget);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue