diff options
Diffstat (limited to 'source/blender/python/intern/bpy.c')
-rw-r--r-- | source/blender/python/intern/bpy.c | 77 |
1 files changed, 43 insertions, 34 deletions
diff --git a/source/blender/python/intern/bpy.c b/source/blender/python/intern/bpy.c index 3ed662f41d7..775cce3880b 100644 --- a/source/blender/python/intern/bpy.c +++ b/source/blender/python/intern/bpy.c @@ -27,31 +27,29 @@ * to access C defined builtin functions. * A script writer should never directly access this module. */ - -#define WITH_PYTHON /* for AUD_PyInit.h, possibly others */ #include <Python.h> +#include "BLI_utildefines.h" +#include "BLI_path_util.h" +#include "BLI_string.h" + +#include "BKE_main.h" +#include "BKE_global.h" /* XXX, G.main only */ +#include "BKE_blender.h" +#include "BKE_bpath.h" + #include "RNA_types.h" #include "RNA_access.h" -#include "bpy.h" -#include "bpy_util.h" +#include "bpy.h" +#include "bpy_util.h" #include "bpy_rna.h" #include "bpy_app.h" #include "bpy_props.h" #include "bpy_library.h" #include "bpy_operator.h" -#include "BLI_path_util.h" -#include "BLI_string.h" -#include "BLI_bpath.h" -#include "BLI_utildefines.h" - -#include "BKE_main.h" -#include "BKE_global.h" /* XXX, G.main only */ -#include "BKE_blender.h" - #include "MEM_guardedalloc.h" /* external util modules */ @@ -60,6 +58,10 @@ #include "../generic/blf_py_api.h" #include "../mathutils/mathutils.h" +#ifdef WITH_FREESTYLE +# include "BPy_Freestyle.h" +#endif + PyObject *bpy_package_py = NULL; PyDoc_STRVAR(bpy_script_paths_doc, @@ -74,7 +76,7 @@ static PyObject *bpy_script_paths(PyObject *UNUSED(self)) { PyObject *ret = PyTuple_New(2); PyObject *item; - char *path; + const char *path; path = BLI_get_folder(BLENDER_SYSTEM_SCRIPTS, NULL); item = PyUnicode_DecodeFSDefault(path ? path : ""); @@ -94,7 +96,7 @@ static int bpy_blend_paths_visit_cb(void *userdata, char *UNUSED(path_dst), cons PyObject *item = PyUnicode_DecodeFSDefault(path_src); PyList_Append(list, item); Py_DECREF(item); - return FALSE; /* never edits the path */ + return false; /* never edits the path */ } PyDoc_STRVAR(bpy_blend_paths_doc, @@ -116,9 +118,9 @@ static PyObject *bpy_blend_paths(PyObject *UNUSED(self), PyObject *args, PyObjec int flag = 0; PyObject *list; - int absolute = FALSE; - int packed = FALSE; - int local = FALSE; + int absolute = false; + int packed = false; + int local = false; static const char *kwlist[] = {"absolute", "packed", "local", NULL}; if (!PyArg_ParseTupleAndKeywords(args, kw, "|iii:blend_paths", @@ -127,13 +129,13 @@ static PyObject *bpy_blend_paths(PyObject *UNUSED(self), PyObject *args, PyObjec return NULL; } - if (absolute) flag |= BLI_BPATH_TRAVERSE_ABS; - if (!packed) flag |= BLI_BPATH_TRAVERSE_SKIP_PACKED; - if (local) flag |= BLI_BPATH_TRAVERSE_SKIP_LIBRARY; + if (absolute) flag |= BKE_BPATH_TRAVERSE_ABS; + if (!packed) flag |= BKE_BPATH_TRAVERSE_SKIP_PACKED; + if (local) flag |= BKE_BPATH_TRAVERSE_SKIP_LIBRARY; list = PyList_New(0); - BLI_bpath_traverse_main(G.main, bpy_blend_paths_visit_cb, flag, (void *)list); + BKE_bpath_traverse_main(G.main, bpy_blend_paths_visit_cb, flag, (void *)list); return list; } @@ -147,16 +149,16 @@ static PyObject *bpy_user_resource(PyObject *UNUSED(self), PyObject *args, PyObj int folder_id; static const char *kwlist[] = {"type", "subdir", NULL}; - char *path; + const char *path; if (!PyArg_ParseTupleAndKeywords(args, kw, "s|s:user_resource", (char **)kwlist, &type, &subdir)) return NULL; /* stupid string compare */ - if (!strcmp(type, "DATAFILES")) folder_id = BLENDER_USER_DATAFILES; - else if (!strcmp(type, "CONFIG")) folder_id = BLENDER_USER_CONFIG; - else if (!strcmp(type, "SCRIPTS")) folder_id = BLENDER_USER_SCRIPTS; - else if (!strcmp(type, "AUTOSAVE")) folder_id = BLENDER_USER_AUTOSAVE; + if (STREQ(type, "DATAFILES")) folder_id = BLENDER_USER_DATAFILES; + else if (STREQ(type, "CONFIG")) folder_id = BLENDER_USER_CONFIG; + else if (STREQ(type, "SCRIPTS")) folder_id = BLENDER_USER_SCRIPTS; + else if (STREQ(type, "AUTOSAVE")) folder_id = BLENDER_USER_AUTOSAVE; else { PyErr_SetString(PyExc_ValueError, "invalid resource argument"); return NULL; @@ -191,21 +193,21 @@ static PyObject *bpy_resource_path(PyObject *UNUSED(self), PyObject *args, PyObj int major = BLENDER_VERSION / 100, minor = BLENDER_VERSION % 100; static const char *kwlist[] = {"type", "major", "minor", NULL}; int folder_id; - char *path; + const char *path; if (!PyArg_ParseTupleAndKeywords(args, kw, "s|ii:resource_path", (char **)kwlist, &type, &major, &minor)) return NULL; /* stupid string compare */ - if (!strcmp(type, "USER")) folder_id = BLENDER_RESOURCE_PATH_USER; - else if (!strcmp(type, "LOCAL")) folder_id = BLENDER_RESOURCE_PATH_LOCAL; - else if (!strcmp(type, "SYSTEM")) folder_id = BLENDER_RESOURCE_PATH_SYSTEM; + if (STREQ(type, "USER")) folder_id = BLENDER_RESOURCE_PATH_USER; + else if (STREQ(type, "LOCAL")) folder_id = BLENDER_RESOURCE_PATH_LOCAL; + else if (STREQ(type, "SYSTEM")) folder_id = BLENDER_RESOURCE_PATH_SYSTEM; else { PyErr_SetString(PyExc_ValueError, "invalid resource argument"); return NULL; } - path = BLI_get_folder_version(folder_id, (major * 100) + minor, FALSE); + path = BLI_get_folder_version(folder_id, (major * 100) + minor, false); return PyUnicode_DecodeFSDefault(path ? path : ""); } @@ -222,7 +224,7 @@ static PyMethodDef meth_bpy_resource_path = static PyObject *bpy_import_test(const char *modname) { - PyObject *mod = PyImport_ImportModuleLevel((char *)modname, NULL, NULL, NULL, 0); + PyObject *mod = PyImport_ImportModuleLevel(modname, NULL, NULL, NULL, 0); if (mod) { Py_DECREF(mod); } @@ -234,6 +236,7 @@ static PyObject *bpy_import_test(const char *modname) return mod; } + /****************************************************************************** * Description: Creates the bpy module and adds it to sys.modules for importing ******************************************************************************/ @@ -244,7 +247,7 @@ void BPy_init_modules(void) PyObject *mod; /* Needs to be first since this dir is needed for future modules */ - char *modpath = BLI_get_folder(BLENDER_SYSTEM_SCRIPTS, "modules"); + const char * const modpath = BLI_get_folder(BLENDER_SYSTEM_SCRIPTS, "modules"); if (modpath) { // printf("bpy: found module path '%s'.\n", modpath); PyObject *sys_path = PySys_GetObject("path"); /* borrow */ @@ -257,6 +260,9 @@ void BPy_init_modules(void) } /* stand alone utility modules not related to blender directly */ IDProp_Init_Types(); /* not actually a submodule, just types */ +#ifdef WITH_FREESTYLE + Freestyle_Init(); +#endif mod = PyModule_New("_bpy"); @@ -293,6 +299,9 @@ void BPy_init_modules(void) PyModule_AddObject(mod, "context", (PyObject *)bpy_context_module); + /* register bpy/rna classmethod callbacks */ + BPY_rna_register_cb(); + /* utility func's that have nowhere else to go */ PyModule_AddObject(mod, meth_bpy_script_paths.ml_name, (PyObject *)PyCFunction_New(&meth_bpy_script_paths, NULL)); PyModule_AddObject(mod, meth_bpy_blend_paths.ml_name, (PyObject *)PyCFunction_New(&meth_bpy_blend_paths, NULL)); |