]> Dogcows Code - chaz/openbox/blob - openbox/python.c
merge the C branch into HEAD
[chaz/openbox] / openbox / python.c
1 #include <Python.h>
2 #include <glib.h>
3
4 static PyMethodDef ObMethods[] = {
5 { NULL, NULL, 0, NULL }
6 };
7
8 static PyMethodDef InputMethods[] = {
9 { NULL, NULL, 0, NULL }
10 };
11
12 void python_startup()
13 {
14 PyObject *sys, *sysdict, *syspath, *path1, *path2;
15 char *homescriptdir;
16
17 Py_Initialize();
18
19 /* fix up the system path */
20
21 sys = PyImport_ImportModule("sys"); /* new */
22 sysdict = PyModule_GetDict(sys); /* borrowed */
23 syspath = PyDict_GetItemString(sysdict, "path"); /* borrowed */
24
25 path1 = PyString_FromString(SCRIPTDIR); /* new */
26 PyList_Insert(syspath, 0, path1);
27 Py_DECREF(path1);
28
29 homescriptdir = g_build_filename(g_get_home_dir(), ".openbox", NULL);
30 path2 = PyString_FromString(homescriptdir); /* new */
31 PyList_Insert(syspath, 0, path2);
32 Py_DECREF(path2);
33 g_free(homescriptdir);
34
35 Py_DECREF(sys);
36
37 /* create the 'ob' module */
38 Py_InitModule("ob", ObMethods);
39
40 /* create the 'input' module */
41 Py_InitModule("input", InputMethods);
42 }
43
44 void python_shutdown()
45 {
46 Py_Finalize();
47 }
48
49 gboolean python_import(char *module)
50 {
51 PyObject *mod;
52
53 mod = PyImport_ImportModule(module); /* new */
54 if (mod == NULL) {
55 PyErr_Print();
56 return FALSE;
57 }
58 Py_DECREF(mod);
59 return TRUE;
60 }
This page took 0.036615 seconds and 4 git commands to generate.