#include "python.hh"
#include "bindings.hh"
#include "otk/display.hh"
+#include "otk/util.hh"
extern "C" {
// The initializer in openbox_wrap.cc
extern void init_openbox(void);
-// The initializer in otk_wrap.cc
-extern void init_otk(void);
}
namespace ob {
void python_init(char *argv0)
{
+ // start the python engine
Py_SetProgramName(argv0);
Py_Initialize();
- init_otk();
+ // initialize the C python module
init_openbox();
- PyRun_SimpleString("from _otk import *; from _openbox import *;");
+ // include the openbox directories for python scripts in the sys path
+ PyRun_SimpleString("import sys");
+ PyRun_SimpleString("sys.path.append('" SCRIPTDIR "')");
+ PyRun_SimpleString(const_cast<char*>(((std::string)"sys.path.append('" +
+ otk::expandTilde("~/.openbox/python") +
+ "')").c_str()));
+ // import the otk and openbox modules into the main namespace
+ PyRun_SimpleString("from openbox import *;");
+ // set up convenience global variables
PyRun_SimpleString("openbox = Openbox_instance()");
- PyRun_SimpleString("display = OBDisplay_display()");
- /* XXX
- sys.path.append('stuff')
- install the .py wrappers, and include their path with this, then import em
- and ~/.openbox/python/ !!
- */
-
// set up access to the python global variables
PyObject *obmodule = PyImport_AddModule("__main__");
obdict = PyModule_GetDict(obmodule);
vectkeylist.push_back(PyString_AsString(str));
}
+ (void)context; // XXX use this sometime!
if (!ob::Openbox::instance->bindings()->addKey(vectkeylist, func)) {
PyErr_SetString(PyExc_RuntimeError,"Unable to add binding.");
return NULL;