windstille-devel
[Top][All Lists]
Advanced

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

[Windstille-devel] rev 318 - trunk/src


From: Ingo Ruhnke
Subject: [Windstille-devel] rev 318 - trunk/src
Date: Fri, 14 May 2004 03:25:51 +0200

Author: grumbel
Date: 2004-05-14 03:25:50 +0200 (Fri, 14 May 2004)
New Revision: 318

Modified:
   trunk/src/flexlay_python.cxx
   trunk/src/python_functor.cxx
   trunk/src/python_functor.hxx
Log:
some python changes

Modified: trunk/src/flexlay_python.cxx
===================================================================
--- trunk/src/flexlay_python.cxx        2004-05-14 00:04:06 UTC (rev 317)
+++ trunk/src/flexlay_python.cxx        2004-05-14 01:25:50 UTC (rev 318)
@@ -28,12 +28,17 @@
 void flexlay_init()   { flexlay.init(); }
 void flexlay_deinit() { flexlay.deinit(); }
 
-void sig_connect(CL_Signal_v0& sig, PyObject* obj)
+void sig_connect(CL_Signal_v0& sig, boost::python::object obj)
 {
   std::cout << "Connecting functor: " << std::endl;
-  new CL_Slot(sig.connect_functor(PythonFunctor(obj)));
+  new CL_Slot(sig.connect_functor(PythonFunctor(boost::python::object(obj))));
 }
 
+void foobar(CL_Menu* menu) 
+{
+  std::cout << "Do foobar" << menu << std::endl;
+}
+
 BOOST_PYTHON_MODULE(flexlay)
 {
   using namespace boost::python;
@@ -81,6 +86,14 @@
     .def("sig_clicked", &CL_Button::sig_clicked,
          return_value_policy<reference_existing_object>());
 
+  class_<CL_MenuNode, boost::noncopyable>("MenuNode", no_init);
+
+  class_<CL_Menu, bases<CL_Component>, CL_Menu, boost::noncopyable>
+    ("Menu", init<CL_Component*>())
+    .def("add_item", &CL_Menu::create_item,
+         return_value_policy<reference_existing_object>())
+    .def("foobar", &foobar);
+
   class_<Workspace, bases<>, Workspace, boost::noncopyable>
     ("Workspace", init<int, int>())
     .def("set_map", &Workspace::set_current_map);

Modified: trunk/src/python_functor.cxx
===================================================================
--- trunk/src/python_functor.cxx        2004-05-14 00:04:06 UTC (rev 317)
+++ trunk/src/python_functor.cxx        2004-05-14 01:25:50 UTC (rev 318)
@@ -17,6 +17,7 @@
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
 
+#include <boost/python.hpp>
 #include "python_functor.hxx"
 
 PythonFunctor::PythonFunctor()
@@ -24,21 +25,18 @@
 {
 }
 
-PythonFunctor::PythonFunctor(PyObject* o)
+PythonFunctor::PythonFunctor(boost::python::object o)
 {
   obj = o;
-  Py_XINCREF(obj);
 }
 
 PythonFunctor::PythonFunctor(const PythonFunctor& copy)
 {
   obj = copy.obj;
-  Py_XINCREF(obj);
 }
 
 PythonFunctor::~PythonFunctor()
 {
-  Py_XDECREF(obj);
 }
 
 PythonFunctor&
@@ -46,9 +44,7 @@
 {
   if (this != &copy)
     {
-      Py_XDECREF(obj);
       obj = copy.obj;
-      Py_XINCREF(obj);
     }
   return *this;  
 }
@@ -57,7 +53,7 @@
 PythonFunctor::operator()()
 {
   PyObject* arglist = PyTuple_New(0);
-  PyEval_CallObject(obj,  arglist);
+  PyEval_CallObject(obj.ptr(),  arglist);
   Py_DECREF(arglist);
 }
 

Modified: trunk/src/python_functor.hxx
===================================================================
--- trunk/src/python_functor.hxx        2004-05-14 00:04:06 UTC (rev 317)
+++ trunk/src/python_functor.hxx        2004-05-14 01:25:50 UTC (rev 318)
@@ -26,10 +26,10 @@
 class PythonFunctor
 {
 private:
-  PyObject* obj;
+  boost::python::object obj;
 public:
   PythonFunctor();
-  PythonFunctor(PyObject* o);
+  PythonFunctor(boost::python::object o);
   ~PythonFunctor();
 
   PythonFunctor(const PythonFunctor& copy);





reply via email to

[Prev in Thread] Current Thread [Next in Thread]