From 865fea2aa2358e6e82abbe3670dd99ea57a19aa4 Mon Sep 17 00:00:00 2001
From: Marco Biasini <marco.biasini@unibas.ch>
Date: Fri, 18 Feb 2011 14:10:04 +0100
Subject: [PATCH] some more exports for gfx-related stuff

---
 modules/gfx/pymod/export_gfx_node.cc | 15 +++++++++++++++
 modules/gfx/pymod/export_scene.cc    |  1 +
 modules/gui/pymod/export_tool.cc     |  4 ----
 3 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/modules/gfx/pymod/export_gfx_node.cc b/modules/gfx/pymod/export_gfx_node.cc
index 07195c100..3bab8f34c 100644
--- a/modules/gfx/pymod/export_gfx_node.cc
+++ b/modules/gfx/pymod/export_gfx_node.cc
@@ -17,12 +17,20 @@
 // 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 //------------------------------------------------------------------------------
 #include <boost/python.hpp>
+#include <boost/python/suite/indexing/vector_indexing_suite.hpp>
+
 using namespace boost::python;
 
+#include <ost/export_helper/vector.hh>
 #include <ost/gfx/gfx_node.hh>
+
+
 using namespace ost;
 using namespace ost::gfx;
 
+
+const GfxNodeVector& (GfxNode::*get_children)() const=&GfxNode::GetChildren;
+
 void export_GfxNode()
 {
   void (GfxNode::* node_add1)(GfxObjP) = &GfxNode::Add;
@@ -31,6 +39,10 @@ void export_GfxNode()
   void (GfxNode::* node_rem2)(GfxNodeP) = &GfxNode::Remove;
   void (GfxNode::* node_rem3)(const String&) = &GfxNode::Remove;
 
+  class_<GfxNodeVector>("GfxNodeList", init<>())
+    .def(vector_indexing_suite<GfxNodeVector, true>())
+    .def(ost::VectorAdditions<GfxNodeVector>())
+  ;
   class_<GfxNode, GfxNodeP, 
          boost::noncopyable>("GfxNode", init<const String&>())
     .def("GetName",&GfxNode::GetName)
@@ -43,5 +55,8 @@ void export_GfxNode()
     .add_property("name", &GfxNode::GetName)    
     .def("Remove",node_rem2)
     .def("Remove",node_rem3)
+    .add_property("parent", &GfxNode::GetParent)
+    .add_property("children", make_function(get_children, 
+                                            return_value_policy<copy_const_reference>()))
     ;
 }
diff --git a/modules/gfx/pymod/export_scene.cc b/modules/gfx/pymod/export_scene.cc
index c97fb1114..bf590ea04 100644
--- a/modules/gfx/pymod/export_scene.cc
+++ b/modules/gfx/pymod/export_scene.cc
@@ -182,6 +182,7 @@ void export_Scene()
     .def("StopOffscreenMode",&Scene::StopOffscreenMode)
     .def("SetShadingMode",&Scene::SetShadingMode)
     .def("SetBeacon",&Scene::SetBeacon)
+    .add_property("root_node", &Scene::GetRootNode)
     .def("SetBeaconOff",&Scene::SetBeaconOff)
     .def("__getitem__",scene_getitem)
   ;
diff --git a/modules/gui/pymod/export_tool.cc b/modules/gui/pymod/export_tool.cc
index 1d050038f..11ee78b91 100644
--- a/modules/gui/pymod/export_tool.cc
+++ b/modules/gui/pymod/export_tool.cc
@@ -250,9 +250,5 @@ void export_Tool()
     .def("GetQObject",&get_py_qobject<ToolOptionsWin>)
     .add_property("qobject", &get_py_qobject<ToolOptionsWin>)
   ;
-
-  class_<gfx::NodePtrList>("NodePtrList", init<>())
-    .def(vector_indexing_suite<gfx::NodePtrList, true >())
-  ;
 }
 
-- 
GitLab