- printf("failed to load python file %s\n", path.c_str());
- return false;
- }
- PyRun_SimpleFile(rcpyfd, const_cast<char*>(path.c_str()));
- fclose(rcpyfd);
- return true;
-}
-
-bool python_get_long(const char *name, long *value)
-{
- PyObject *val = PyDict_GetItemString(obdict, const_cast<char*>(name));
- if (!(val && PyInt_Check(val))) return false;
-
- *value = PyInt_AsLong(val);
- return true;
-}
-
-bool python_get_string(const char *name, otk::ustring *value)
-{
- PyObject *val = PyDict_GetItemString(obdict, const_cast<char*>(name));
- if (!(val && PyString_Check(val))) return false;
-
- *value = PyString_AsString(val);
- return true;
-}
-
-bool python_get_stringlist(const char *name, std::vector<otk::ustring> *value)
-{
- PyObject *val = PyDict_GetItemString(obdict, const_cast<char*>(name));
- if (!(val && PyList_Check(val))) return false;
-
- for (int i = 0, end = PyList_Size(val); i < end; ++i) {
- PyObject *str = PyList_GetItem(val, i);
- if (PyString_Check(str))
- value->push_back(PyString_AsString(str));
- }
- return true;
-}
-
-// ************************************* //
-// Stuff for calling from Python scripts //
-// ************************************* //
-
-PyObject *mbind(const std::string &button, ob::MouseContext::MC context,
- ob::MouseAction::MA action, PyObject *func)
-{
- if (!PyCallable_Check(func)) {
- PyErr_SetString(PyExc_TypeError, "Invalid callback function.");
- return NULL;
- }
-
- if (!ob::openbox->bindings()->addButton(button, context,
- action, func)) {
- PyErr_SetString(PyExc_RuntimeError,"Unable to add binding.");
- return NULL;
- }
- Py_INCREF(Py_None); return Py_None;
-}
-
-PyObject *ebind(ob::EventAction::EA action, PyObject *func)
-{
- if (!PyCallable_Check(func)) {
- PyErr_SetString(PyExc_TypeError, "Invalid callback function.");
- return NULL;
- }
-
- if (!ob::openbox->bindings()->addEvent(action, func)) {
- PyErr_SetString(PyExc_RuntimeError,"Unable to add binding.");
- return NULL;
- }
- Py_INCREF(Py_None); return Py_None;
-}
-
-PyObject *kgrab(int screen, PyObject *func)
-{
- if (!PyCallable_Check(func)) {
- PyErr_SetString(PyExc_TypeError, "Invalid callback function.");
- return NULL;
- }
-
- if (!ob::openbox->bindings()->grabKeyboard(screen, func)) {
- PyErr_SetString(PyExc_RuntimeError,"Unable to grab keybaord.");
- return NULL;
- }
- Py_INCREF(Py_None); return Py_None;
-}
-
-PyObject *kungrab()
-{
- ob::openbox->bindings()->ungrabKeyboard();
- Py_INCREF(Py_None); return Py_None;
-}
-
-PyObject *mgrab(int screen)
-{
- if (!ob::openbox->bindings()->grabPointer(screen)) {
- PyErr_SetString(PyExc_RuntimeError,"Unable to grab pointer.");
- return NULL;