[clutter/wip/g-property: 2/2] gproperty: Port ClutterBox to GProperty
- From: Emmanuele Bassi <ebassi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [clutter/wip/g-property: 2/2] gproperty: Port ClutterBox to GProperty
- Date: Tue, 5 Jul 2011 17:03:47 +0000 (UTC)
commit f47dc084c4896843500a66ff6412378c5c3598a8
Author: Emmanuele Bassi <ebassi linux intel com>
Date: Tue Jul 5 17:43:34 2011 +0100
gproperty: Port ClutterBox to GProperty
clutter/clutter-box.c | 242 +++++++++++++++++++++----------------------------
1 files changed, 102 insertions(+), 140 deletions(-)
---
diff --git a/clutter/clutter-box.c b/clutter/clutter-box.c
index 0d922b1..1cf3b7d 100644
--- a/clutter/clutter-box.c
+++ b/clutter/clutter-box.c
@@ -94,7 +94,7 @@ struct _ClutterBoxPrivate
guint changed_id;
ClutterColor color;
- guint color_set : 1;
+ gboolean color_set;
};
enum
@@ -453,56 +453,41 @@ clutter_box_dispose (GObject *gobject)
G_OBJECT_CLASS (clutter_box_parent_class)->dispose (gobject);
}
-static void
-clutter_box_set_property (GObject *gobject,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
+static gboolean
+clutter_box_set_layout_manager_internal (gpointer self_,
+ gpointer value_)
{
- ClutterBox *self = CLUTTER_BOX (gobject);
+ ClutterBox *self = self_;
+ ClutterLayoutManager *value = value_;
- switch (prop_id)
- {
- case PROP_LAYOUT_MANAGER:
- set_layout_manager (self, g_value_get_object (value));
- break;
+ if (self->priv->manager == value)
+ return FALSE;
- case PROP_COLOR:
- clutter_box_set_color (self, clutter_value_get_color (value));
- break;
+ set_layout_manager (self, value);
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- break;
- }
+ return TRUE;
}
-static void
-clutter_box_get_property (GObject *gobject,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
+static gboolean
+clutter_box_set_color_internal (gpointer self_,
+ gpointer value_)
{
- ClutterBoxPrivate *priv = CLUTTER_BOX (gobject)->priv;
-
- switch (prop_id)
- {
- case PROP_LAYOUT_MANAGER:
- g_value_set_object (value, priv->manager);
- break;
-
- case PROP_COLOR:
- clutter_value_set_color (value, &priv->color);
- break;
+ ClutterBox *self = self_;
+ ClutterColor *value = value_;
+ ClutterBoxPrivate *priv = self->priv;
- case PROP_COLOR_SET:
- g_value_set_boolean (value, priv->color_set);
- break;
+ if (clutter_color_equal (&priv->color, value))
+ return FALSE;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
- break;
+ if (value != NULL)
+ {
+ priv->color = *value;
+ priv->color_set = TRUE;
}
+ else
+ priv->color_set = FALSE;
+
+ return TRUE;
}
static void
@@ -510,7 +495,6 @@ clutter_box_class_init (ClutterBoxClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
ClutterActorClass *actor_class = CLUTTER_ACTOR_CLASS (klass);
- GParamSpec *pspec;
g_type_class_add_private (klass, sizeof (ClutterBoxPrivate));
@@ -522,8 +506,6 @@ clutter_box_class_init (ClutterBoxClass *klass)
actor_class->pick = clutter_box_real_pick;
actor_class->destroy = clutter_box_destroy;
- gobject_class->set_property = clutter_box_set_property;
- gobject_class->get_property = clutter_box_get_property;
gobject_class->dispose = clutter_box_dispose;
/**
@@ -533,16 +515,16 @@ clutter_box_class_init (ClutterBoxClass *klass)
*
* Since: 1.2
*/
- pspec = g_param_spec_object ("layout-manager",
- P_("Layout Manager"),
- P_("The layout manager used by the box"),
- CLUTTER_TYPE_LAYOUT_MANAGER,
- CLUTTER_PARAM_READWRITE |
- G_PARAM_CONSTRUCT);
- obj_props[PROP_LAYOUT_MANAGER] = pspec;
- g_object_class_install_property (gobject_class,
- PROP_LAYOUT_MANAGER,
- pspec);
+ obj_props[PROP_LAYOUT_MANAGER] =
+ g_object_property_new ("layout-manager", G_PROPERTY_READWRITE,
+ G_STRUCT_OFFSET (ClutterBoxPrivate, manager),
+ clutter_box_set_layout_manager_internal,
+ NULL);
+ g_property_set_prerequisite (G_PROPERTY (obj_props[PROP_LAYOUT_MANAGER]),
+ CLUTTER_TYPE_LAYOUT_MANAGER);
+ g_property_describe (G_PROPERTY (obj_props[PROP_LAYOUT_MANAGER]),
+ P_("Layout Manager"),
+ P_("The layout manager used by the box"));
/**
* ClutterBox:color:
@@ -553,13 +535,18 @@ clutter_box_class_init (ClutterBoxClass *klass)
*
* Since: 1.2
*/
- pspec = clutter_param_spec_color ("color",
- P_("Color"),
- P_("The background color of the box"),
- &default_box_color,
- CLUTTER_PARAM_READWRITE);
- obj_props[PROP_COLOR] = pspec;
- g_object_class_install_property (gobject_class, PROP_COLOR, pspec);
+ obj_props[PROP_COLOR] =
+ g_boxed_property_new ("color", G_PROPERTY_READWRITE,
+ G_STRUCT_OFFSET (ClutterBoxPrivate, color),
+ clutter_box_set_color_internal,
+ NULL);
+ g_property_set_prerequisite (G_PROPERTY (obj_props[PROP_COLOR]),
+ CLUTTER_TYPE_COLOR);
+ g_property_set_default (G_PROPERTY (obj_props[PROP_COLOR]),
+ &default_box_color);
+ g_property_describe (G_PROPERTY (obj_props[PROP_COLOR]),
+ P_("Color"),
+ P_("The background color of the box"));
/**
* ClutterBox:color-set:
@@ -568,13 +555,16 @@ clutter_box_class_init (ClutterBoxClass *klass)
*
* Since: 1.2
*/
- pspec = g_param_spec_boolean ("color-set",
- P_("Color Set"),
- P_("Whether the background color is set"),
- FALSE,
- CLUTTER_PARAM_READWRITE);
- obj_props[PROP_COLOR_SET] = pspec;
- g_object_class_install_property (gobject_class, PROP_COLOR_SET, pspec);
+ obj_props[PROP_COLOR_SET] =
+ g_boolean_property_new ("color-set", G_PROPERTY_READABLE,
+ G_STRUCT_OFFSET (ClutterBoxPrivate, color_set),
+ NULL,
+ NULL);
+ g_property_describe (G_PROPERTY (obj_props[PROP_COLOR_SET]),
+ P_("Color Set"),
+ P_("Whether the background color is set"));
+
+ g_object_class_install_properties (gobject_class, PROP_LAST, obj_props);
}
static void
@@ -607,6 +597,20 @@ clutter_box_new (ClutterLayoutManager *manager)
}
/**
+ * clutter_box_get_layout_manager:
+ * @box: a #ClutterBox
+ *
+ * Retrieves the #ClutterLayoutManager instance used by @box
+ *
+ * Return value: (transfer none): a #ClutterLayoutManager. The returned
+ * #ClutterLayoutManager is owned by the #ClutterBox and it should not
+ * be unreferenced
+ *
+ * Since: 1.2
+ */
+G_DEFINE_PROPERTY_GET (ClutterBox, clutter_box, ClutterLayoutManager*, layout_manager)
+
+/**
* clutter_box_set_layout_manager:
* @box: a #ClutterBox
* @manager: a #ClutterLayoutManager
@@ -618,34 +622,47 @@ clutter_box_new (ClutterLayoutManager *manager)
*
* Since: 1.2
*/
-void
-clutter_box_set_layout_manager (ClutterBox *box,
- ClutterLayoutManager *manager)
-{
- g_return_if_fail (CLUTTER_IS_BOX (box));
- g_return_if_fail (CLUTTER_IS_LAYOUT_MANAGER (manager));
+G_DEFINE_PROPERTY_SET_WITH_CODE (ClutterBox, clutter_box, ClutterLayoutManager*, layout_manager,
+ clutter_actor_queue_relayout (CLUTTER_ACTOR (self)))
- set_layout_manager (box, manager);
-}
+/**
+ * clutter_box_set_color:
+ * @box: a #ClutterBox
+ * @color: (allow-none): the background color, or %NULL to unset
+ *
+ * Sets (or unsets) the background color for @box
+ *
+ * Since: 1.2
+ */
+G_DEFINE_PROPERTY_SET_WITH_CODE (ClutterBox, clutter_box, const ClutterColor*, color,
+ clutter_actor_queue_redraw (CLUTTER_ACTOR (self)))
/**
- * clutter_box_get_layout_manager:
+ * clutter_box_get_color:
* @box: a #ClutterBox
+ * @color: (out caller-allocates): return location for a #ClutterColor
*
- * Retrieves the #ClutterLayoutManager instance used by @box
+ * Retrieves the background color of @box
*
- * Return value: (transfer none): a #ClutterLayoutManager. The returned
- * #ClutterLayoutManager is owned by the #ClutterBox and it should not
- * be unreferenced
+ * If the #ClutterBox:color-set property is set to %FALSE the
+ * returned #ClutterColor is undefined
*
* Since: 1.2
*/
-ClutterLayoutManager *
-clutter_box_get_layout_manager (ClutterBox *box)
+void
+clutter_box_get_color (ClutterBox *box,
+ ClutterColor *color)
{
- g_return_val_if_fail (CLUTTER_IS_BOX (box), NULL);
+ ClutterColor *res;
+
+ g_return_if_fail (CLUTTER_IS_BOX (box));
+ g_return_if_fail (color != NULL);
+
+ g_property_get (G_PROPERTY (obj_props), box, &res);
+
+ *color = *res;
- return box->priv->manager;
+ clutter_color_free (res);
}
/**
@@ -984,58 +1001,3 @@ clutter_box_pack_at (ClutterBox *box,
clutter_box_set_property_valist (box, actor, first_property, var_args);
va_end (var_args);
}
-
-/**
- * clutter_box_set_color:
- * @box: a #ClutterBox
- * @color: (allow-none): the background color, or %NULL to unset
- *
- * Sets (or unsets) the background color for @box
- *
- * Since: 1.2
- */
-void
-clutter_box_set_color (ClutterBox *box,
- const ClutterColor *color)
-{
- ClutterBoxPrivate *priv;
-
- g_return_if_fail (CLUTTER_IS_BOX (box));
-
- priv = box->priv;
-
- if (color)
- {
- priv->color = *color;
- priv->color_set = TRUE;
- }
- else
- priv->color_set = FALSE;
-
- clutter_actor_queue_redraw (CLUTTER_ACTOR (box));
-
- g_object_notify_by_pspec (G_OBJECT (box), obj_props[PROP_COLOR_SET]);
- g_object_notify_by_pspec (G_OBJECT (box), obj_props[PROP_COLOR]);
-}
-
-/**
- * clutter_box_get_color:
- * @box: a #ClutterBox
- * @color: (out caller-allocates): return location for a #ClutterColor
- *
- * Retrieves the background color of @box
- *
- * If the #ClutterBox:color-set property is set to %FALSE the
- * returned #ClutterColor is undefined
- *
- * Since: 1.2
- */
-void
-clutter_box_get_color (ClutterBox *box,
- ClutterColor *color)
-{
- g_return_if_fail (CLUTTER_IS_BOX (box));
- g_return_if_fail (color != NULL);
-
- *color = box->priv->color;
-}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]