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



Author: daniel
Date: Mon Dec 29 18:54:57 2008
New Revision: 1922
URL: http://svn.gnome.org/viewvc/gnomemm?rev=1922&view=rev

Log:
* clutter/src/container.{ccg,hg} (Container::actor_added): New method
which emits the "actor-added" signal.  This precludes the need to use
the GObject API directly when implementing a custom container in C++.
(Container::actor_removed): Likewise for the "actor-removed" signal.

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 Dec 29 18:54:57 2008
@@ -17,51 +17,66 @@
 
 #include <clutter/clutter.h>
 
-
+namespace
+{
+extern "C"
+{
 static void SignalProxy_Container_foreach_callback(ClutterActor *actor, gpointer user_data)
 {
-  Clutter::Container::SlotForEach* the_slot = static_cast<Clutter::Container::SlotForEach*>(user_data);
+  Clutter::Container::SlotForEach *const
+    the_slot = static_cast<Clutter::Container::SlotForEach*>(user_data);
 
-  #ifdef GLIBMM_EXCEPTIONS_ENABLED
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
   try
+#endif
   {
-  #endif //GLIBMM_EXCEPTIONS_ENABLED
-    Glib::RefPtr<Clutter::Actor> cpp_actor = Glib::wrap(actor, true /* take reference */);
+    const Glib::RefPtr<Clutter::Actor> cpp_actor = Glib::wrap(actor, true /* take reference */);
     (*the_slot)(cpp_actor);
-  #ifdef GLIBMM_EXCEPTIONS_ENABLED
   }
-  catch(...)
+#ifdef GLIBMM_EXCEPTIONS_ENABLED
+  catch (...)
   {
     Glib::exception_handlers_invoke();
   }
-  #endif //GLIBMM_EXCEPTIONS_ENABLED
+#endif
 }
+} // extern "C"
+} // anonymous namespace
 
 namespace Clutter
 {
 
 void Container::raise_child(const Glib::RefPtr<Actor>& actor)
 {
-  clutter_container_raise_child(gobj(), Glib::unwrap(actor), NULL); 
+  clutter_container_raise_child(gobj(), Glib::unwrap(actor), 0); 
 }
 
 void Container::lower_child(const Glib::RefPtr<Actor>& actor)
 {
-  clutter_container_lower_child(gobj(), Glib::unwrap(actor), NULL); 
+  clutter_container_lower_child(gobj(), Glib::unwrap(actor), 0); 
 }
 
 void Container::foreach(const SlotForEach& slot)
 {
-  clutter_container_foreach(
-      gobj(),
+  clutter_container_foreach(gobj(),
       &SignalProxy_Container_foreach_callback, const_cast<SlotForEach*>(&slot));
 }
 
+void Container::get_child_property_value(const Glib::RefPtr<const Actor>& child,
+                     const Glib::ustring& property_name, Glib::ValueBase& value) const
+{
+  clutter_container_child_get_property(const_cast<ClutterContainer*>(gobj()),
+      const_cast<ClutterActor*>(child->gobj()), property_name.c_str(), value.gobj());
+}
 
-void Container::get_child_property_value(const Glib::RefPtr<const Actor>& child, const Glib::ustring& property_name, Glib::ValueBase& value) const
+void Container::actor_added(const Glib::RefPtr<Actor>& actor)
 {
-  clutter_container_child_get_property(const_cast<ClutterContainer*>(gobj()), const_cast<ClutterActor*>(child->gobj()), property_name.c_str(), value.gobj());
+  g_signal_emit_by_name(gobj(), "actor_added", actor->gobj());
 }
 
-} //namespace Clutter
+void Container::actor_removed(const Glib::RefPtr<Actor>& actor)
+{
+  g_signal_emit_by_name(gobj(), "actor_removed", actor->gobj());
+}
 
+} // namespace Clutter

Modified: cluttermm/trunk/clutter/src/container.hg
==============================================================================
--- cluttermm/trunk/clutter/src/container.hg	(original)
+++ cluttermm/trunk/clutter/src/container.hg	Mon Dec 29 18:54:57 2008
@@ -45,8 +45,8 @@
   _WRAP_METHOD(void raise_child(const Glib::RefPtr<Actor>& actor, const Glib::RefPtr<Actor>& sibling), clutter_container_raise_child)
   void raise_child(const Glib::RefPtr<Actor>& actor);
 
-  _WRAP_METHOD(Glib::RefPtr<Actor> find_child (const Glib::ustring& child_name), clutter_container_find_child_by_name, refreturn)
-  _WRAP_METHOD(Glib::RefPtr<const Actor> find_child (const Glib::ustring& child_name) const, clutter_container_find_child_by_name, constversion)
+  _WRAP_METHOD(Glib::RefPtr<Actor> find_child(const Glib::ustring& child_name), clutter_container_find_child_by_name, refreturn)
+  _WRAP_METHOD(Glib::RefPtr<const Actor> find_child(const Glib::ustring& child_name) const, clutter_container_find_child_by_name, constversion)
 
   /** For instance, 
    * void on_foreach(const Glib::RefPtr<Actor>& actor)
@@ -57,7 +57,9 @@
   _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_container_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
@@ -107,16 +109,24 @@
   _WRAP_VFUNC(void add(const Glib::RefPtr<Actor>& actor), add)
   _WRAP_VFUNC(void remove(const Glib::RefPtr<Actor>& actor), remove)
   _WRAP_VFUNC(void raise(const Glib::RefPtr<Actor>& actor, const Glib::RefPtr<Actor>& sibling), raise)
-  _WRAP_VFUNC(void lower(const Glib::RefPtr<Actor>& actor, const Glib::RefPtr<Actor>& lower), lower)
+  _WRAP_VFUNC(void lower(const Glib::RefPtr<Actor>& actor, const Glib::RefPtr<Actor>& sibling), lower)
   _WRAP_VFUNC(void sort_depth_order(), sort_depth_order)
 
+  // TODO: C++ify?
   _WRAP_VFUNC(void foreach(ClutterCallback callback, gpointer user_data), foreach)
 
+  /** Emit signal_actor_added().
+   */
+  void actor_added(const Glib::RefPtr<Actor>& actor);
+
+  /** Emit signal_actor_removed().
+   */
+  void actor_removed(const Glib::RefPtr<Actor>& actor);
+
   // TODO: Do we want to wrap create_child_meta, destory_child_meta,
   // get_child_meta?
 };
 
-
 #ifndef DOXYGEN_SHOULD_SKIP_THIS
 
 template <class PropertyType> inline
@@ -142,7 +152,4 @@
 
 #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]