forked from bartvdbraak/blender
change bpy.app.build_options from frozen set to PyStructSequence_Field, mathes similar members of bpy.app and less error prone (typos won't fail silently).
This commit is contained in:
parent
9dbe85c17e
commit
1e762a29ee
@ -513,7 +513,7 @@ class USERPREF_PT_system(Panel):
|
|||||||
sub.active = system.use_weight_color_range
|
sub.active = system.use_weight_color_range
|
||||||
sub.template_color_ramp(system, "weight_color_range", expand=True)
|
sub.template_color_ramp(system, "weight_color_range", expand=True)
|
||||||
|
|
||||||
if 'INTERNATIONAL' in bpy.app.build_options:
|
if bpy.app.build_options.international:
|
||||||
column.separator()
|
column.separator()
|
||||||
column.prop(system, "use_international_fonts")
|
column.prop(system, "use_international_fonts")
|
||||||
if system.use_international_fonts:
|
if system.use_international_fonts:
|
||||||
|
@ -130,6 +130,12 @@ if env['WITH_BF_TIFF']:
|
|||||||
if env['WITH_BF_INTERNATIONAL']:
|
if env['WITH_BF_INTERNATIONAL']:
|
||||||
defs.append('WITH_INTERNATIONAL')
|
defs.append('WITH_INTERNATIONAL')
|
||||||
|
|
||||||
|
if env['WITH_BF_OPENAL']:
|
||||||
|
defs.append('WITH_OPENAL')
|
||||||
|
|
||||||
|
if env['WITH_BF_SDL']:
|
||||||
|
defs.append('WITH_SDL')
|
||||||
|
|
||||||
if env['WITH_BF_JACK']:
|
if env['WITH_BF_JACK']:
|
||||||
defs.append('WITH_JACK')
|
defs.append('WITH_JACK')
|
||||||
|
|
||||||
@ -151,12 +157,12 @@ if env['WITH_BF_REMESH']:
|
|||||||
if env['WITH_BF_SMOKE']:
|
if env['WITH_BF_SMOKE']:
|
||||||
defs.append('WITH_SMOKE')
|
defs.append('WITH_SMOKE')
|
||||||
|
|
||||||
if env['WITH_BF_OPENAL']:
|
|
||||||
defs.append('WITH_OPENAL')
|
|
||||||
|
|
||||||
if env['WITH_BF_COLLADA']:
|
if env['WITH_BF_COLLADA']:
|
||||||
defs.append('WITH_COLLADA')
|
defs.append('WITH_COLLADA')
|
||||||
|
|
||||||
|
if env['WITH_BF_OIIO']:
|
||||||
|
defs.append('WITH_OCIO')
|
||||||
|
|
||||||
if env['WITH_BF_PLAYER']:
|
if env['WITH_BF_PLAYER']:
|
||||||
defs.append('WITH_PLAYER')
|
defs.append('WITH_PLAYER')
|
||||||
|
|
||||||
|
@ -185,12 +185,16 @@ if(WITH_INTERNATIONAL)
|
|||||||
add_definitions(-DWITH_INTERNATIONAL)
|
add_definitions(-DWITH_INTERNATIONAL)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_JACK)
|
if(WITH_OPENAL)
|
||||||
add_definitions(-DWITH_JACK)
|
add_definitions(-DWITH_OPENAL)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_LIBMV)
|
if(WITH_SDL)
|
||||||
add_definitions(-DWITH_LIBMV)
|
add_definitions(-DWITH_SDL)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WITH_JACK)
|
||||||
|
add_definitions(-DWITH_JACK)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_LIBMV)
|
if(WITH_LIBMV)
|
||||||
@ -217,14 +221,14 @@ if(WITH_MOD_SMOKE)
|
|||||||
add_definitions(-DWITH_SMOKE)
|
add_definitions(-DWITH_SMOKE)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
if(WITH_OPENAL)
|
|
||||||
add_definitions(-DWITH_OPENAL)
|
|
||||||
endif()
|
|
||||||
|
|
||||||
if(WITH_OPENCOLLADA)
|
if(WITH_OPENCOLLADA)
|
||||||
add_definitions(-DWITH_COLLADA)
|
add_definitions(-DWITH_COLLADA)
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
if(WITH_OPENCOLORIO)
|
||||||
|
add_definitions(-DWITH_OCIO)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(WITH_PLAYER)
|
if(WITH_PLAYER)
|
||||||
add_definitions(-DWITH_PLAYER)
|
add_definitions(-DWITH_PLAYER)
|
||||||
endif()
|
endif()
|
||||||
|
@ -15,7 +15,7 @@
|
|||||||
* along with this program; if not, write to the Free Software Foundation,
|
* along with this program; if not, write to the Free Software Foundation,
|
||||||
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
*
|
*
|
||||||
* Contributor(s): Bastien Montagne
|
* Contributor(s): Sergey Sharybin
|
||||||
*
|
*
|
||||||
* ***** END GPL LICENSE BLOCK *****
|
* ***** END GPL LICENSE BLOCK *****
|
||||||
*/
|
*/
|
||||||
@ -29,148 +29,275 @@
|
|||||||
|
|
||||||
#include "bpy_app_build_options.h"
|
#include "bpy_app_build_options.h"
|
||||||
|
|
||||||
static PyObject *make_build_options(void)
|
static PyTypeObject BlenderAppBuildOptionsType;
|
||||||
|
|
||||||
|
static PyStructSequence_Field app_builtopts_info_fields[] = {
|
||||||
|
/* names mostly follow CMake options, lowecases, after WITH_ */
|
||||||
|
{(char *)"bullet", NULL},
|
||||||
|
{(char *)"codec_avi", NULL},
|
||||||
|
{(char *)"codec_ffmpeg", NULL},
|
||||||
|
{(char *)"codec_quicktime", NULL},
|
||||||
|
{(char *)"codec_sndfile", NULL},
|
||||||
|
{(char *)"compositor", NULL},
|
||||||
|
{(char *)"cycles", NULL},
|
||||||
|
{(char *)"cycles_osl", NULL},
|
||||||
|
{(char *)"gameengine", NULL},
|
||||||
|
{(char *)"image_cineon", NULL},
|
||||||
|
{(char *)"image_dds", NULL},
|
||||||
|
{(char *)"image_frameserver", NULL},
|
||||||
|
{(char *)"image_hdr", NULL},
|
||||||
|
{(char *)"image_openexr", NULL},
|
||||||
|
{(char *)"image_openjpeg", NULL},
|
||||||
|
{(char *)"image_redcode", NULL},
|
||||||
|
{(char *)"image_tiff", NULL},
|
||||||
|
{(char *)"input_ndof", NULL},
|
||||||
|
{(char *)"audaspace", NULL},
|
||||||
|
{(char *)"international", NULL},
|
||||||
|
{(char *)"openal", NULL},
|
||||||
|
{(char *)"sdl", NULL},
|
||||||
|
{(char *)"jack", NULL},
|
||||||
|
{(char *)"libmv", NULL},
|
||||||
|
{(char *)"mod_boolean", NULL},
|
||||||
|
{(char *)"mod_fluid", NULL},
|
||||||
|
{(char *)"mod_oceansim", NULL},
|
||||||
|
{(char *)"mod_remesh", NULL},
|
||||||
|
{(char *)"mod_smoke", NULL},
|
||||||
|
{(char *)"collada", NULL},
|
||||||
|
{(char *)"opencolorio", NULL},
|
||||||
|
{(char *)"player", NULL},
|
||||||
|
{NULL}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
static PyStructSequence_Desc app_builtopts_info_desc = {
|
||||||
|
(char *)"bpy.app.build_options", /* name */
|
||||||
|
(char *)"This module contains information about FFmpeg blender is linked against", /* doc */
|
||||||
|
app_builtopts_info_fields, /* fields */
|
||||||
|
(sizeof(app_builtopts_info_fields) / sizeof(PyStructSequence_Field)) - 1
|
||||||
|
};
|
||||||
|
|
||||||
|
static PyObject *make_builtopts_info(void)
|
||||||
{
|
{
|
||||||
PyObject *build_options = PyFrozenSet_New(NULL);
|
PyObject *builtopts_info;
|
||||||
|
int pos = 0;
|
||||||
|
|
||||||
#define SetStrItem(str) \
|
builtopts_info = PyStructSequence_New(&BlenderAppBuildOptionsType);
|
||||||
PySet_Add(build_options, PyUnicode_FromString(str));
|
if (builtopts_info == NULL) {
|
||||||
|
|
||||||
#ifdef WITH_AUDASPACE
|
|
||||||
SetStrItem("AUDASPACE");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_BULLET
|
|
||||||
SetStrItem("BULLET");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_AVI
|
|
||||||
SetStrItem("CODEC_AVI");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_FFMPEG
|
|
||||||
SetStrItem("CODEC_FFMPEG");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_QUICKTIME
|
|
||||||
SetStrItem("CODEC_QUICKTIME");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_SNDFILE
|
|
||||||
SetStrItem("CODEC_SNDFILE");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_COMPOSITOR
|
|
||||||
SetStrItem("COMPOSITOR");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_CYCLES
|
|
||||||
SetStrItem("CYCLES");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_CYCLES_OSL
|
|
||||||
SetStrItem("CYCLES_OSL");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_GAMEENGINE
|
|
||||||
SetStrItem("GAMEENGINE");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_CINEON
|
|
||||||
SetStrItem("IMAGE_CINEON");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_DDS
|
|
||||||
SetStrItem("IMAGE_DDS");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_FRAMESERVER
|
|
||||||
SetStrItem("IMAGE_FRAMESERVER");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_HDR
|
|
||||||
SetStrItem("IMAGE_HDR");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_OPENEXR
|
|
||||||
SetStrItem("IMAGE_OPENEXR");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_OPENJPEG
|
|
||||||
SetStrItem("IMAGE_OPENJPEG");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_REDCODE
|
|
||||||
SetStrItem("IMAGE_REDCODE");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_TIFF
|
|
||||||
SetStrItem("IMAGE_TIFF");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_INPUT_NDOF
|
|
||||||
SetStrItem("INPUT_NDOF");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_INTERNATIONAL
|
|
||||||
SetStrItem("INTERNATIONAL");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_JACK
|
|
||||||
SetStrItem("JACK");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_LIBMV
|
|
||||||
SetStrItem("LIBMV");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_MOD_BOOLEAN
|
|
||||||
SetStrItem("MOD_BOOLEAN");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_MOD_FLUID
|
|
||||||
SetStrItem("MOD_FLUID");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_OCEANSIM
|
|
||||||
SetStrItem("MOD_OCEANSIM");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_MOD_REMESH
|
|
||||||
SetStrItem("MOD_REMESH");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_SMOKE
|
|
||||||
SetStrItem("MOD_SMOKE");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_OPENAL
|
|
||||||
SetStrItem("OPENAL");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_COLLADA
|
|
||||||
SetStrItem("COLLADA");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef WITH_PLAYER
|
|
||||||
SetStrItem("PLAYER");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#undef SetStrItem
|
|
||||||
|
|
||||||
if (PyErr_Occurred()) {
|
|
||||||
Py_CLEAR(build_options);
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
return build_options;
|
#define SetObjIncref(item) \
|
||||||
|
PyStructSequence_SET_ITEM(builtopts_info, pos++, (Py_IncRef(item), item))
|
||||||
|
|
||||||
|
#ifdef WITH_BULLET
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_AVI
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_FFMPEG
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_QUICKTIME
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_SNDFILE
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_COMPOSITOR
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_CYCLES
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_CYCLES_OSL
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_GAMEENGINE
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_CINEON
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_DDS
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_FRAMESERVER
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_HDR
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_OPENEXR
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_OPENJPEG
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_REDCODE
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_TIFF
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_INPUT_NDOF
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_AUDASPACE
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_INTERNATIONAL
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_OPENAL
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_SDL
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_JACK
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_LIBMV
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_MOD_BOOLEAN
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_MOD_FLUID
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_OCEANSIM
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_MOD_REMESH
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_SMOKE
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_COLLADA
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_OCIO
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef WITH_PLAYER
|
||||||
|
SetObjIncref(Py_True);
|
||||||
|
#else
|
||||||
|
SetObjIncref(Py_False);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef SetObjIncref
|
||||||
|
|
||||||
|
return builtopts_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
PyObject *BPY_app_build_options_struct(void)
|
PyObject *BPY_app_build_options_struct(void)
|
||||||
{
|
{
|
||||||
PyObject *ret;
|
PyObject *ret;
|
||||||
|
|
||||||
ret = make_build_options();
|
PyStructSequence_InitType(&BlenderAppBuildOptionsType, &app_builtopts_info_desc);
|
||||||
|
|
||||||
|
ret = make_builtopts_info();
|
||||||
|
|
||||||
|
/* prevent user from creating new instances */
|
||||||
|
BlenderAppBuildOptionsType.tp_init = NULL;
|
||||||
|
BlenderAppBuildOptionsType.tp_new = NULL;
|
||||||
|
BlenderAppBuildOptionsType.tp_hash = (hashfunc)_Py_HashPointer; /* without this we can't do set(sys.modules) [#29635] */
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user