gnomemm r1662 - in cluttermm/trunk: . clutter/src



Author: murrayc
Date: Mon Aug  4 12:34:08 2008
New Revision: 1662
URL: http://svn.gnome.org/viewvc/gnomemm?rev=1662&view=rev

Log:
2008-08-04  Murray Cumming  <murrayc murrayc com>

* clutter/src/container.ccg:
* clutter/src/container.hg: Added get/set_child_property<>() and 
get/set_child_property_value(), using the same technique as 
Glib::ObjectBase::get/set_property().

Modified:
   cluttermm/trunk/ChangeLog
   cluttermm/trunk/clutter/src/container.ccg
   cluttermm/trunk/clutter/src/container.hg

Modified: cluttermm/trunk/clutter/src/container.ccg
==============================================================================
--- cluttermm/trunk/clutter/src/container.ccg	(original)
+++ cluttermm/trunk/clutter/src/container.ccg	Mon Aug  4 12:34:08 2008
@@ -57,5 +57,11 @@
       &SignalProxy_Container_foreach_callback, const_cast<SlotForEach*>(&slot));
 }
 
+
+void Container::get_child_property_value(const Glib::RefPtr<Actor>& child, const Glib::ustring& property_name, Glib::ValueBase& value) const
+{
+  clutter_container_child_get_property(const_cast<ClutterContainer*>(gobj()), child->gobj(), property_name.c_str(), value.gobj());
+}
+
 } //namespace Clutter
 

Modified: cluttermm/trunk/clutter/src/container.hg
==============================================================================
--- cluttermm/trunk/clutter/src/container.hg	(original)
+++ cluttermm/trunk/clutter/src/container.hg	Mon Aug  4 12:34:08 2008
@@ -57,10 +57,39 @@
   _IGNORE(clutter_container_foreach)
 
   // not sure the valist stuff is good to wrap in C++
-  _IGNORE(clutter_container_add_valist, clutter_container_remove_valist, clutter_container_add, clutter_container_remove, clutter_container_child_get, clutter_contaienr_child_set, clutter_container_class_find_child_property, clutter_container_class_list_child_properties)
+  _IGNORE(clutter_container_add_valist, clutter_container_remove_valist, clutter_container_add, clutter_container_remove, clutter_container_child_get, clutter_container_child_set, clutter_container_class_find_child_property, clutter_container_class_list_child_properties)
+
+ 
+  template <class PropertyType> inline
+  void set_child_property(const Glib::RefPtr<Actor>& child, const Glib::ustring& property_name, const PropertyType& value);
+
+  _WRAP_METHOD(void set_child_property_value(const Glib::RefPtr<Actor>& child, const Glib::ustring& property_name, const Glib::ValueBase& value), clutter_container_child_set_property)
+
+  template <class PropertyType> inline
+  void get_child_property(const Glib::RefPtr<Actor>& child, const Glib::ustring& property_name, PropertyType& value) const;
+
+  void get_child_property_value(const Glib::RefPtr<Actor>& child, const Glib::ustring& property_name, Glib::ValueBase& value) const;
+
+
+  /*
+
+void              clutter_container_child_get_property          (ClutterContainer *container,
+                                                                 ClutterActor     *child,
+                                                                 const gchar      *property,
+                                                                 GValue           *value);
+void              clutter_container_child_set                   (ClutterContainer *container,
+                                                                 ClutterActor     *actor,
+                                                                 const gchar      *first_prop,
+                                                                 ...) G_GNUC_NULL_TERMINATED;
+void              clutter_container_child_get                   (ClutterContainer *container,
+                                                                 ClutterActor     *actor,
+                                                                 const gchar      *first_prop,
+                                                                 ...) G_GNUC_NULL_TERMINATED;
+
+  */
+
+  // TODO: clutter_container_get_child_meta?
 
-  // TODO: Do we want to wrap clutter_container_get/set_child_property, and/or
-  // clutter_container_get_child_meta?
 
 #m4 _CONVERSION(`ClutterActor*',`const Glib::RefPtr<Actor>&',`Glib::wrap($3, true)')
   _WRAP_SIGNAL(void actor_added(const Glib::RefPtr<Actor>& actor), "actor_added")
@@ -86,5 +115,33 @@
   // get_child_meta?
 };
 
+
+#ifndef DOXYGEN_SHOULD_SKIP_THIS
+
+template <class PropertyType> inline
+void Container::set_child_property(const Glib::RefPtr<Actor>& child, const Glib::ustring& property_name, const PropertyType& value)
+{
+  Glib::Value<PropertyType> property_value;
+  property_value.init(Glib::Value<PropertyType>::value_type());
+
+  property_value.set(value);
+  this->set_child_property_value(property_name, property_value);
+}
+
+template <class PropertyType> inline
+void Container::get_child_property(const Glib::RefPtr<Actor>& child, const Glib::ustring& property_name, PropertyType& value) const
+{
+  Glib::Value<PropertyType> property_value;
+  property_value.init(Glib::Value<PropertyType>::value_type());
+
+  this->get_child_property_value(property_name, property_value);
+
+  value = property_value.get();
+}
+
+#endif /* DOXYGEN_SHOULD_SKIP_THIS */
+
+
+
 } // namespace Clutter
 //vim: ts=2,sw=2



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]