diff options
42 files changed, 451 insertions, 126 deletions
diff --git a/SConstruct b/SConstruct index 48115a39b1d..25cb6800b1d 100644 --- a/SConstruct +++ b/SConstruct @@ -277,6 +277,7 @@ if 'blenderlite' in B.targets: env['WITH_BF_BINRELOC'] = False env['BF_BUILDINFO'] = False env['BF_NO_ELBEEM'] = True + env['WITH_BF_PYTHON'] = False # lastly we check for root_build_dir ( we should not do before, otherwise we might do wrong builddir #B.root_build_dir = B.arguments.get('BF_BUILDDIR', '..'+os.sep+'build'+os.sep+platform+os.sep) diff --git a/blenderplayer/CMakeLists.txt b/blenderplayer/CMakeLists.txt index 9786b7e61b2..f02650f7ea0 100644 --- a/blenderplayer/CMakeLists.txt +++ b/blenderplayer/CMakeLists.txt @@ -104,6 +104,7 @@ IF(UNIX) bf_blenlib bf_cineon bf_openexr + bf_dds bf_ftfont extern_ftgl bf_readblenfile diff --git a/source/blender/SConscript b/source/blender/SConscript index decbbf35642..543a0bf5ed6 100644 --- a/source/blender/SConscript +++ b/source/blender/SConscript @@ -11,13 +11,17 @@ SConscript(['avi/SConscript', 'imbuf/SConscript', 'imbuf/intern/cineon/SConscript', 'makesdna/SConscript', - 'python/SConscript', 'radiosity/SConscript', 'readblenfile/SConscript', 'render/SConscript', 'src/SConscript', 'nodes/SConscript']) + + +if env['WITH_BF_PYTHON']: + SConscript(['python/SConscript']) + if env['WITH_BF_YAFRAY']: SConscript(['yafray/SConscript']) diff --git a/source/blender/blenkernel/SConscript b/source/blender/blenkernel/SConscript index 82743ef5ea7..9b7e6736033 100644 --- a/source/blender/blenkernel/SConscript +++ b/source/blender/blenkernel/SConscript @@ -19,8 +19,11 @@ incs += ' ' + env['BF_SDL_INC'] defs = '' +if not env['WITH_BF_PYTHON']: + defs += 'DISABLE_PYTHON' + if env['WITH_BF_INTERNATIONAL']: - defs += 'WITH_FREETYPE2' + defs += ' WITH_FREETYPE2' if env['WITH_BF_VERSE']: defs += ' WITH_VERSE' @@ -49,4 +52,7 @@ if env['BF_NO_ELBEEM']: if env['WITH_BF_PLAYER']: SConscript(['bad_level_call_stubs/SConscript']) +if not env['WITH_BF_PYTHON']: + defs += ' DISABLE_PYTHON' + env.BlenderLib ( libname = 'bf_blenkernel', sources = sources, includes = Split(incs), defines = Split(defs), libtype=['core','player'], priority = [65, 20] ) diff --git a/source/blender/blenkernel/intern/constraint.c b/source/blender/blenkernel/intern/constraint.c index 4914732b801..5639f00ee39 100644 --- a/source/blender/blenkernel/intern/constraint.c +++ b/source/blender/blenkernel/intern/constraint.c @@ -64,8 +64,9 @@ #include "BKE_library.h" #include "BKE_idprop.h" - +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "blendef.h" @@ -1814,6 +1815,7 @@ static bConstraintTypeInfo CTI_SIZELIKE = { sizelike_evaluate /* evaluate */ }; + /* ----------- Python Constraint -------------- */ static void pycon_free (bConstraint *con) @@ -1888,8 +1890,10 @@ static void pycon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraintT constraint_target_to_mat4(ct->tar, ct->subtarget, ct->matrix, CONSTRAINT_SPACE_WORLD, ct->space, con->headtail); /* only execute target calculation if allowed */ +#ifndef DISABLE_PYTHON if (G.f & G_DOSCRIPTLINKS) BPY_pyconstraint_target(data, ct); +#endif } else if (ct) Mat4One(ct->matrix); @@ -1897,6 +1901,9 @@ static void pycon_get_tarmat (bConstraint *con, bConstraintOb *cob, bConstraintT static void pycon_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *targets) { +#ifdef DISABLE_PYTHON + return; +#else bPythonConstraint *data= con->data; /* only evaluate in python if we're allowed to do so */ @@ -1913,6 +1920,7 @@ static void pycon_evaluate (bConstraint *con, bConstraintOb *cob, ListBase *targ /* Now, run the actual 'constraint' function, which should only access the matrices */ BPY_pyconstraint_eval(data, cob, targets); +#endif /* DISABLE_PYTHON */ } static bConstraintTypeInfo CTI_PYTHON = { diff --git a/source/blender/blenkernel/intern/depsgraph.c b/source/blender/blenkernel/intern/depsgraph.c index 7f4910a9765..6914de29d43 100644 --- a/source/blender/blenkernel/intern/depsgraph.c +++ b/source/blender/blenkernel/intern/depsgraph.c @@ -79,7 +79,9 @@ #include "MEM_guardedalloc.h" #include "blendef.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "depsgraph_private.h" @@ -313,6 +315,7 @@ static void dag_add_driver_relation(Ipo *ipo, DagForest *dag, DagNode *node, int if ((icu->driver->flag & IPO_DRIVER_FLAG_INVALID) || (icu->driver->name[0] == '\0')) continue; /* empty or invalid expression */ +#ifndef DISABLE_PYTHON else { /* now we need refs to all objects mentioned in this * pydriver expression, to call 'dag_add_relation' @@ -334,6 +337,7 @@ static void dag_add_driver_relation(Ipo *ipo, DagForest *dag, DagNode *node, int MEM_freeN(obarray); } } +#endif /* DISABLE_PYTHON */ } else if (icu->driver->ob) { node1 = dag_get_node(dag, icu->driver->ob); diff --git a/source/blender/blenkernel/intern/exotic.c b/source/blender/blenkernel/intern/exotic.c index 561b564ac39..9fb8d17d730 100644 --- a/source/blender/blenkernel/intern/exotic.c +++ b/source/blender/blenkernel/intern/exotic.c @@ -117,7 +117,9 @@ #include "BKE_curve.h" #include "BKE_customdata.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "blendef.h" @@ -2427,6 +2429,7 @@ int BKE_read_exotic(char *name) read_stl_mesh_binary(name); retval = 1; } +#ifndef DISABLE_PYTHON // TODO: this should not be in the kernel... else { // unknown format, call Python importloader if (BPY_call_importloader(name)) { @@ -2436,6 +2439,7 @@ int BKE_read_exotic(char *name) } } +#endif /* DISABLE_PYTHON */ waitcursor(0); } } diff --git a/source/blender/blenkernel/intern/ipo.c b/source/blender/blenkernel/intern/ipo.c index 9f0ea0f1388..29db0ddd808 100644 --- a/source/blender/blenkernel/intern/ipo.c +++ b/source/blender/blenkernel/intern/ipo.c @@ -73,7 +73,10 @@ #include "BKE_main.h" #include "BKE_mesh.h" #include "BKE_object.h" + +#ifndef DISABLE_PYTHON #include "BPY_extern.h" /* for BPY_pydriver_eval() */ +#endif #define SMALL -1.0e-10 @@ -1008,6 +1011,7 @@ static void posechannel_get_local_transform (bPoseChannel *pchan, float loc[], f */ static float eval_driver (IpoDriver *driver, float ipotime) { +#ifndef DISABLE_PYTHON /* currently, drivers are either PyDrivers (evaluating a PyExpression, or Object/Pose-Channel transforms) */ if (driver->type == IPO_DRIVER_TYPE_PYTHON) { /* check for empty or invalid expression */ @@ -1022,7 +1026,10 @@ static float eval_driver (IpoDriver *driver, float ipotime) */ return BPY_pydriver_eval(driver); } - else { + else +#endif /* DISABLE_PYTHON */ + { + Object *ob= driver->ob; /* must have an object to evaluate */ diff --git a/source/blender/blenkernel/intern/material.c b/source/blender/blenkernel/intern/material.c index f05b84f6e90..27f4fd3bc05 100644 --- a/source/blender/blenkernel/intern/material.c +++ b/source/blender/blenkernel/intern/material.c @@ -59,7 +59,9 @@ #include "BKE_node.h" #include "BKE_utildefines.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "GPU_material.h" @@ -78,7 +80,9 @@ void free_material(Material *ma) MTex *mtex; int a; +#ifndef DISABLE_PYTHON BPY_free_scriptlink(&ma->scriptlink); +#endif for(a=0; a<MAX_MTEX; a++) { mtex= ma->mtex[a]; @@ -201,8 +205,10 @@ Material *copy_material(Material *ma) id_us_plus((ID *)man->mtex[a]->tex); } } - + +#ifndef DISABLE_PYTHON BPY_copy_scriptlink(&ma->scriptlink); +#endif if(ma->ramp_col) man->ramp_col= MEM_dupallocN(ma->ramp_col); if(ma->ramp_spec) man->ramp_spec= MEM_dupallocN(ma->ramp_spec); diff --git a/source/blender/blenkernel/intern/object.c b/source/blender/blenkernel/intern/object.c index b6f6820ca73..77c891ee82e 100644 --- a/source/blender/blenkernel/intern/object.c +++ b/source/blender/blenkernel/intern/object.c @@ -111,7 +111,9 @@ #include "LBM_fluidsim.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "GPU_material.h" @@ -269,8 +271,10 @@ void free_object(Object *ob) free_constraints(&ob->constraints); free_constraint_channels(&ob->constraintChannels); free_nlastrips(&ob->nlastrips); - + +#ifndef DISABLE_PYTHON BPY_free_scriptlink(&ob->scriptlink); +#endif if(ob->pd){ if(ob->pd->tex) @@ -637,9 +641,9 @@ Camera *copy_camera(Camera *cam) camn= copy_libblock(cam); id_us_plus((ID *)camn->ipo); - +#ifndef DISABLE_PYTHON BPY_copy_scriptlink(&camn->scriptlink); - +#endif return camn; } @@ -786,9 +790,9 @@ Lamp *copy_lamp(Lamp *la) id_us_plus((ID *)lan->ipo); if (la->preview) lan->preview = BKE_previewimg_copy(la->preview); - +#ifndef DISABLE_PYTHON BPY_copy_scriptlink(&la->scriptlink); - +#endif return lan; } @@ -846,7 +850,9 @@ void make_local_lamp(Lamp *la) void free_camera(Camera *ca) { +#ifndef DISABLE_PYTHON BPY_free_scriptlink(&ca->scriptlink); +#endif } void free_lamp(Lamp *la) @@ -855,8 +861,9 @@ void free_lamp(Lamp *la) int a; /* scriptlinks */ - +#ifndef DISABLE_PYTHON BPY_free_scriptlink(&la->scriptlink); +#endif for(a=0; a<MAX_MTEX; a++) { mtex= la->mtex[a]; @@ -1202,9 +1209,9 @@ Object *copy_object(Object *ob) modifier_copyData(md, nmd); BLI_addtail(&obn->modifiers, nmd); } - +#ifndef DISABLE_PYTHON BPY_copy_scriptlink(&ob->scriptlink); - +#endif obn->prop.first = obn->prop.last = NULL; copy_properties(&obn->prop, &ob->prop); @@ -1918,10 +1925,11 @@ void where_is_object_time(Object *ob, float ctime) constraints_clear_evalob(cob); } - +#ifndef DISABLE_PYTHON if(ob->scriptlink.totscript && !during_script()) { if (G.f & G_DOSCRIPTLINKS) BPY_do_pyscript((ID *)ob, SCRIPT_REDRAW); } +#endif /* set negative scale flag in object */ Crossf(vec, ob->obmat[0], ob->obmat[1]); @@ -2288,7 +2296,9 @@ void object_handle_update(Object *ob) } else where_is_object(ob); +#ifndef DISABLE_PYTHON if (G.f & G_DOSCRIPTLINKS) BPY_do_pyscript((ID *)ob, SCRIPT_OBJECTUPDATE); +#endif } if(ob->recalc & OB_RECALC_DATA) { @@ -2364,7 +2374,9 @@ void object_handle_update(Object *ob) psys_get_modifier(ob, psys)->flag &= ~eParticleSystemFlag_psys_updated; } } +#ifndef DISABLE_PYTHON if (G.f & G_DOSCRIPTLINKS) BPY_do_pyscript((ID *)ob, SCRIPT_OBDATAUPDATE); +#endif } /* the no-group proxy case, we call update */ diff --git a/source/blender/blenkernel/intern/scene.c b/source/blender/blenkernel/intern/scene.c index 7d864c83d2c..1727edc10fc 100644 --- a/source/blender/blenkernel/intern/scene.c +++ b/source/blender/blenkernel/intern/scene.c @@ -82,7 +82,10 @@ #include "BIF_previewrender.h" #include "BIF_editseq.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif + #include "BLI_arithb.h" #include "BLI_blenlib.h" @@ -139,7 +142,10 @@ void free_scene(Scene *sce) if(sce->radio) MEM_freeN(sce->radio); sce->radio= 0; +#ifndef DISABLE_PYTHON BPY_free_scriptlink(&sce->scriptlink); +#endif + if (sce->r.avicodecdata) { free_avicodecdata(sce->r.avicodecdata); MEM_freeN(sce->r.avicodecdata); @@ -585,9 +591,9 @@ void scene_update_for_newframe(Scene *sce, unsigned int lay) /* object ipos are calculated in where_is_object */ do_all_data_ipos(); - +#ifndef DISABLE_PYTHON if (G.f & G_DOSCRIPTLINKS) BPY_do_all_scripts(SCRIPT_FRAMECHANGED, 0); - +#endif /* sets first, we allow per definition current scene to have dependencies on sets */ for(sce= sce->set; sce; sce= sce->set) scene_update(sce, lay); diff --git a/source/blender/blenkernel/intern/script.c b/source/blender/blenkernel/intern/script.c index b93821da218..6145f6c3063 100644 --- a/source/blender/blenkernel/intern/script.c +++ b/source/blender/blenkernel/intern/script.c @@ -44,7 +44,9 @@ #include "BKE_global.h" #include "BKE_main.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" // Blender Python library +#endif #ifdef HAVE_CONFIG_H #include <config.h> @@ -57,5 +59,7 @@ void free_script (Script *script) { if (!script) return; +#ifndef DISABLE_PYTHON BPY_clear_script(script); +#endif } diff --git a/source/blender/blenkernel/intern/text.c b/source/blender/blenkernel/intern/text.c index 9e6efa59d71..1ff757a5823 100644 --- a/source/blender/blenkernel/intern/text.c +++ b/source/blender/blenkernel/intern/text.c @@ -47,7 +47,9 @@ #include "BKE_global.h" #include "BKE_main.h" +#ifdef DISABLE_PYTHON #include "BPY_extern.h" +#endif #ifdef HAVE_CONFIG_H #include <config.h> @@ -158,7 +160,9 @@ void free_text(Text *text) if(text->name) MEM_freeN(text->name); MEM_freeN(text->undo_buf); +#ifndef DISABLE_PYTHON if (text->compiled) BPY_free_compiled_text(text); +#endif } Text *add_empty_text(char *name) @@ -571,7 +575,9 @@ int txt_get_span (TextLine *from, TextLine *to) static void txt_make_dirty (Text *text) { text->flags |= TXT_ISDIRTY; +#ifndef DISABLE_PYTHON if (text->compiled) BPY_free_compiled_text(text); +#endif } /* 0:whitespace, 1:punct, 2:alphanumeric */ diff --git a/source/blender/blenkernel/intern/world.c b/source/blender/blenkernel/intern/world.c index 814d6f8baf1..2e89ce3f805 100644 --- a/source/blender/blenkernel/intern/world.c +++ b/source/blender/blenkernel/intern/world.c @@ -54,7 +54,9 @@ #include "BKE_main.h" #include "BKE_icons.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #ifdef HAVE_CONFIG_H #include <config.h> @@ -64,9 +66,10 @@ void free_world(World *wrld) { MTex *mtex; int a; - + +#ifndef DISABLE_PYTHON BPY_free_scriptlink(&wrld->scriptlink); - +#endif for(a=0; a<MAX_MTEX; a++) { mtex= wrld->mtex[a]; if(mtex && mtex->tex) mtex->tex->id.us--; @@ -124,9 +127,9 @@ World *copy_world(World *wrld) } if (wrld->preview) wrldn->preview = BKE_previewimg_copy(wrld->preview); - +#ifndef DISABLE_PYTHON BPY_copy_scriptlink(&wrld->scriptlink); - +#endif id_us_plus((ID *)wrldn->ipo); return wrldn; diff --git a/source/blender/nodes/SConscript b/source/blender/nodes/SConscript index f80f4b521db..038ce4b749e 100644 --- a/source/blender/nodes/SConscript +++ b/source/blender/nodes/SConscript @@ -21,8 +21,11 @@ incs += ' ' + env['BF_SDL_INC'] defs = '' +if not env['WITH_BF_PYTHON']: + defs += 'DISABLE_PYTHON' + if env['WITH_BF_INTERNATIONAL']: - defs += 'WITH_FREETYPE2' + defs += ' WITH_FREETYPE2' if env['WITH_BF_VERSE']: defs += ' WITH_VERSE' diff --git a/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c b/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c index 49473b213ce..2065ac2ed33 100644 --- a/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c +++ b/source/blender/nodes/intern/SHD_nodes/SHD_dynamic.c @@ -27,17 +27,21 @@ * ***** END GPL LICENSE BLOCK ***** */ +#ifndef DISABLE_PYTHON #include <Python.h> #include <compile.h> #include <eval.h> +#endif #include "DNA_text_types.h" #include "BKE_text.h" #include "BKE_utildefines.h" +#ifndef DISABLE_PYTHON #include "api2_2x/Node.h" #include "api2_2x/gen_utils.h" #include "BPY_extern.h" +#endif #include "../SHD_util.h" @@ -45,6 +49,7 @@ static void node_dynamic_setup(bNode *node); static void node_dynamic_exec_cb(void *data, bNode *node, bNodeStack **in, bNodeStack **out); static void node_dynamic_free_storage_cb(bNode *node); +#ifndef DISABLE_PYTHON static PyObject *init_dynamicdict(void) { PyObject *newscriptdict; PyGILState_STATE gilstate = PyGILState_Ensure(); @@ -58,6 +63,7 @@ static PyObject *init_dynamicdict(void) { return newscriptdict; } +#endif static bNodeType *node_dynamic_find_typeinfo(ListBase *list, ID *id) { @@ -140,12 +146,12 @@ static void node_dynamic_update_socket_links(bNode *node, bNodeTree *ntree) static void node_dynamic_free_storage_cb(bNode *node) { +#ifndef DISABLE_PYTHON NodeScriptDict *nsd; PyObject *pydict; BPy_Node *pynode; if (!node->storage) return; - nsd = (NodeScriptDict *)(node->storage); pydict = nsd->dict; if (pydict) { @@ -155,6 +161,7 @@ static void node_dynamic_free_storage_cb(bNode *node) if (pynode) { Py_DECREF(pynode); } +#endif MEM_freeN(node->storage); node->storage = NULL; } @@ -169,6 +176,7 @@ static void node_dynamic_disable(bNode *node) /* Disable all pynodes using the given text (script) id */ static void node_dynamic_disable_all_by_id(ID *id) { +#ifndef DISABLE_PYTHON Material *ma; /* XXX hardcoded for shaders */ for (ma= G.main->mat.first; ma; ma= ma->id.next) { @@ -183,6 +191,7 @@ static void node_dynamic_disable_all_by_id(ID *id) } } } +#endif } static void node_rem_socklist_links(bNodeTree *ntree, ListBase *lb) @@ -327,6 +336,7 @@ int nodeDynamicUnlinkText(ID *txtid) { static void node_dynamic_pyerror_print(bNode *node) { +#ifndef DISABLE_PYTHON PyGILState_STATE gilstate = PyGILState_Ensure(); fprintf(stderr, "\nError in dynamic node script \"%s\":\n", node->name); @@ -334,6 +344,7 @@ static void node_dynamic_pyerror_print(bNode *node) else { fprintf(stderr, "Not a valid dynamic node Python script.\n"); } PyGILState_Release(gilstate); +#endif } static void node_dynamic_register_type(bNode *node) @@ -348,6 +359,7 @@ static void node_dynamic_register_type(bNode *node) node->typeinfo->name = BLI_strdup(node->name); } +#ifndef DISABLE_PYTHON /* node_dynamic_get_pynode: * Find the pynode definition from the script */ static PyObject *node_dynamic_get_pynode(PyObject *dict) @@ -389,9 +401,13 @@ static PyObject *node_dynamic_get_pynode(PyObject *dict) "no PyNode definition found in the script!"); return NULL; } +#endif /* DISABLE_PYTHON */ static int node_dynamic_parse(struct bNode *node) { +#ifdef DISABLE_PYTHON + return -1; +#else PyObject *dict= NULL; PyObject *pynode_data= NULL; PyObject *pynode= NULL; @@ -479,12 +495,14 @@ static int node_dynamic_parse(struct bNode *node) } return 0; +#endif } /* node_dynamic_setup: prepare for execution (state: NODE_DYNAMIC_READY) * pynodes already linked to a script (node->id != NULL). */ static void node_dynamic_setup(bNode *node) { +#ifndef DISABLE_PYTHON NodeScriptDict *nsd = NULL; bNodeTree *nodetree = NULL; bNodeType *ntype = NULL; @@ -608,7 +626,7 @@ static void node_dynamic_setup(bNode *node) node->custom1 = BSET(node->custom1, NODE_DYNAMIC_READY); PyGILState_Release(gilstate); - +#endif /* DISABLE_PYTHON */ return; } @@ -641,6 +659,9 @@ static void node_dynamic_init_cb(bNode *node) { /* node_dynamic_copy_cb: pynode copy callback */ static void node_dynamic_copy_cb(bNode *orig_node, bNode *new_node) { +#ifdef DISABLE_PYTHON + return; +#else NodeScriptDict *nsd; PyGILState_STATE gilstate; @@ -657,11 +678,15 @@ static void node_dynamic_copy_cb(bNode *orig_node, bNode *new_node) Py_INCREF((PyObject *)(nsd->dict)); PyGILState_Release(gilstate); +#endif } /* node_dynamic_exec_cb: the execution callback called per pixel * during rendering. */ static void node_dynamic_exec_cb(void *data, bNode *node, bNodeStack **in, bNodeStack **out) { +#ifdef DISABLE_PYTHON + return; +#else BPy_Node *mynode = NULL; NodeScriptDict *nsd = NULL; PyObject *pyresult = NULL; @@ -716,6 +741,7 @@ static void node_dynamic_exec_cb(void *data, bNode *node, bNodeStack **in, bNode PyGILState_Release(gilstate); } } +#endif } bNodeType node_dynamic_typeinfo = { diff --git a/source/blender/src/SConscript b/source/blender/src/SConscript index 47b269c85d7..4ebaad673f2 100644 --- a/source/blender/src/SConscript +++ b/source/blender/src/SConscript @@ -36,6 +36,9 @@ incs += ' ' + env['BF_OPENGL_INC'] defs = [] +if not env['WITH_BF_PYTHON']: + defs.append('DISABLE_PYTHON') + if env['BF_TWEAK_MODE']: defs.append('TWEAK_MODE') diff --git a/source/blender/src/buttons_object.c b/source/blender/src/buttons_object.c index a8ce9da8780..6162a12d06d 100644 --- a/source/blender/src/buttons_object.c +++ b/source/blender/src/buttons_object.c @@ -152,7 +152,10 @@ #include "BSE_edit.h" #include "BDR_editobject.h" + +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "butspace.h" // own module @@ -643,6 +646,7 @@ static void draw_constraint (uiBlock *block, ListBase *list, bConstraint *con, s } else { switch (con->type) { +#ifndef DISABLE_PYTHON case CONSTRAINT_TYPE_PYTHON: { bPythonConstraint *data = con->data; @@ -724,6 +728,7 @@ static void draw_constraint (uiBlock *block, ListBase *list, bConstraint *con, s draw_constraint_spaceselect(block, con, *xco, *yco-(73+theight), is_armature_owner(ob), -1); } break; +#endif /* DISABLE_PYTHON */ case CONSTRAINT_TYPE_ACTION: { bActionConstraint *data = con->data; diff --git a/source/blender/src/drawipo.c b/source/blender/src/drawipo.c index aee00baef8e..973782d7463 100644 --- a/source/blender/src/drawipo.c +++ b/source/blender/src/drawipo.c @@ -86,7 +86,9 @@ #include "BSE_editnla_types.h" #include "BSE_time.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "mydevice.h" #include "blendef.h" @@ -1925,6 +1927,7 @@ void do_ipobuts(unsigned short event) ei= get_active_editipo(); if(ei) { if(ei->icu->driver) { +#ifndef DISABLE_PYTHON if (ei->icu->driver->type == IPO_DRIVER_TYPE_PYTHON) { /* first del pydriver's global dict, just in case * an available pydrivers.py module needs to be reloaded */ @@ -1933,7 +1936,9 @@ void do_ipobuts(unsigned short event) BPY_pydriver_eval(ei->icu->driver); DAG_scene_sort(G.scene); } - else if(G.sipo->blocktype==ID_KE || G.sipo->blocktype==ID_AC) + else +#endif + if(G.sipo->blocktype==ID_KE || G.sipo->blocktype==ID_AC) DAG_object_flush_update(G.scene, ob, OB_RECALC_DATA); else DAG_object_flush_update(G.scene, ob, OB_RECALC_OB); diff --git a/source/blender/src/drawscript.c b/source/blender/src/drawscript.c index c744449d1db..f9e2d138a78 100644 --- a/source/blender/src/drawscript.c +++ b/source/blender/src/drawscript.c @@ -55,7 +55,9 @@ #include "BKE_global.h" #include "BKE_main.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "BIF_gl.h" #include "BIF_keyval.h" @@ -87,6 +89,9 @@ void drawscriptspace(ScrArea *sa, void *spacedata) glClear(GL_COLOR_BUFFER_BIT); myortho2(-0.5, curarea->winrct.xmax-curarea->winrct.xmin-0.5, -0.5, curarea->winrct.ymax-curarea->winrct.ymin-0.5); +#ifdef DISABLE_PYTHON + return; +#else if (!sc->script) return; script = sc->script; @@ -115,10 +120,12 @@ void drawscriptspace(ScrArea *sa, void *spacedata) addqueue(curarea->win, MOUSEX, 0); } } +#endif /* DISABLE_PYTHON */ } void winqreadscriptspace(struct ScrArea *sa, void *spacedata, struct BWinEvent *evt) { +#ifndef DISABLE_PYTHON unsigned short event = evt->event; short val = evt->val; char ascii = evt->ascii; @@ -163,19 +170,21 @@ void winqreadscriptspace(struct ScrArea *sa, void *spacedata, struct BWinEvent * if (event == QKEY) if (val && (G.qual & LR_CTRLKEY) && okee("Quit Blender")) exit_usiblender(); } - +#endif return; + } void free_scriptspace (SpaceScript *sc) { if (!sc) return; - +#ifndef DISABLE_PYTHON /*free buttons references*/ if (sc->but_refs) { BPy_Set_DrawButtonsList(sc->but_refs); BPy_Free_DrawButtonsList(); sc->but_refs = NULL; } +#endif sc->script = NULL; } diff --git a/source/blender/src/drawtext.c b/source/blender/src/drawtext.c index ca1f6cff202..1c8380c7a7d 100644 --- a/source/blender/src/drawtext.c +++ b/source/blender/src/drawtext.c @@ -71,8 +71,10 @@ #include "BSE_filesel.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" #include "BPY_menus.h" +#endif #include "mydevice.h" #include "blendef.h" @@ -1841,7 +1843,8 @@ void unlink_text(Text *text) bScreen *scr; ScrArea *area; SpaceLink *sl; - + +#ifndef DISABLE_PYTHON /* check if this text was used as script link: * this check function unsets the pointers and returns how many * script links used this Text */ @@ -1852,7 +1855,8 @@ void unlink_text(Text *text) if (nodeDynamicUnlinkText ((ID*)text)) { allqueue(REDRAWNODE, 0); } - +#endif + for (scr= G.main->screen.first; scr; scr= scr->id.next) { for (area= scr->areabase.first; area; area= area->next) { for (sl= area->spacedata.first; sl; sl= sl->next) { @@ -2050,7 +2054,9 @@ void run_python_script(SpaceText *st) { Text *text=st->text; char *py_filename; - +#ifdef DISABLE_PYTHON + error("python disabled in this build"); +#else if (!BPY_txt_do_python_Text(text)) { int lineno = BPY_Err_getLinenumber(); // jump to error if happened in current text: @@ -2072,6 +2078,7 @@ void run_python_script(SpaceText *st) "check console"); } } +#endif } static void set_tabs(Text *text) @@ -2929,8 +2936,10 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt) break; /* BREAK Q */ case RKEY: if (G.qual == LR_ALTKEY) { +#ifndef DISABLE_PYTHON if (text->compiled) BPY_free_compiled_text(text); text->compiled = NULL; +#endif if (okee("Reopen text")) { if (!reopen_text(text)) error("Could not reopen file"); @@ -3199,13 +3208,14 @@ void winqreadtextspace(ScrArea *sa, void *spacedata, BWinEvent *evt) } } +#ifndef DISABLE_PYTHON /* Run text plugin scripts if enabled */ if (st->doplugins && event && val) { if (BPY_menu_do_shortcut(PYMENU_TEXTPLUGIN, event, G.qual)) { do_draw= 1; } } - +#endif if (do_draw) redraw_alltext(); } diff --git a/source/blender/src/drawview.c b/source/blender/src/drawview.c index a169848aa62..de3e464060d 100644 --- a/source/blender/src/drawview.c +++ b/source/blender/src/drawview.c @@ -153,7 +153,9 @@ #include "BSE_time.h" #include "BSE_view.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "RE_render_ext.h" @@ -3354,6 +3356,7 @@ void drawview3dspace(ScrArea *sa, void *spacedata) } } +#ifndef DISABLE_PYTHON /* run any view3d draw handler script links */ if (sa->scriptlink.totscript) BPY_do_spacehandlers(sa, 0, 0, SPACEHANDLER_VIEW3D_DRAW); @@ -3363,7 +3366,7 @@ void drawview3dspace(ScrArea *sa, void *spacedata) !during_script()) { BPY_do_pyscript((ID *)G.scene, SCRIPT_REDRAW); } - +#endif } void drawview3d_render(struct View3D *v3d, float viewmat[][4], int winx, int winy, float winmat[][4], int shadow) diff --git a/source/blender/src/editconstraint.c b/source/blender/src/editconstraint.c index b6243a33944..42972e4aa5d 100644 --- a/source/blender/src/editconstraint.c +++ b/source/blender/src/editconstraint.c @@ -65,7 +65,9 @@ #include "BIF_space.h" #include "BIF_toolbox.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "blendef.h" #include "nla.h" @@ -444,7 +446,7 @@ void add_constraint (short only_IK) else if (nr==18) { char *menustr; int scriptint= 0; - +#ifndef DISABLE_PYTHON /* popup a list of usable scripts */ menustr = buildmenu_pyconstraints(NULL, &scriptint); scriptint = pupmenu(menustr); @@ -459,6 +461,7 @@ void add_constraint (short only_IK) /* make sure target allowance is set correctly */ BPY_pyconstraint_update(ob, con); } +#endif } else if (nr==19) { con = add_new_constraint(CONSTRAINT_TYPE_CHILDOF); @@ -700,7 +703,8 @@ static void test_constraints (Object *owner, const char substring[]) /* clear disabled-flag first */ curcon->flag &= ~CONSTRAINT_DISABLE; - + +#ifndef DISABLE_PYTHON /* Check specialised data (settings) for constraints that need this */ if (curcon->type == CONSTRAINT_TYPE_PYTHON) { bPythonConstraint *data = curcon->data; @@ -711,16 +715,16 @@ static void test_constraints (Object *owner, const char substring[]) } else if (BPY_is_pyconstraint(data->text)==0) { curcon->flag |= CONSTRAINT_DISABLE; - } - else { + } else { /* does the constraint require target input... also validates targets */ BPY_pyconstraint_update(owner, curcon); } - /* targets have already been checked for this */ continue; } - else if (curcon->type == CONSTRAINT_TYPE_KINEMATIC) { + else +#endif + if (curcon->type == CONSTRAINT_TYPE_KINEMATIC) { bKinematicConstraint *data = curcon->data; /* bad: we need a separate set of checks here as poletarget is @@ -869,6 +873,7 @@ void validate_pyconstraint_cb (void *arg1, void *arg2) data->text = text; } +#ifndef DISABLE_PYTHON /* this returns a string for the list of usable pyconstraint script names */ char *buildmenu_pyconstraints (Text *con_text, int *pyconindex) { @@ -909,15 +914,17 @@ char *buildmenu_pyconstraints (Text *con_text, int *pyconindex) return str; } +#endif /* DISABLE_PYTHON */ /* this callback gets called when the 'refresh' button of a pyconstraint gets pressed */ void update_pyconstraint_cb (void *arg1, void *arg2) { Object *owner= (Object *)arg1; bConstraint *con= (bConstraint *)arg2; - +#ifndef DISABLE_PYTHON if (owner && con) BPY_pyconstraint_update(owner, con); +#endif } /* ------------- Child-Of Constraint ------------------ */ diff --git a/source/blender/src/editface.c b/source/blender/src/editface.c index 77c27dfa3db..53fb6dbffb1 100644 --- a/source/blender/src/editface.c +++ b/source/blender/src/editface.c @@ -99,8 +99,10 @@ #include "BDR_unwrapper.h" #include "BDR_editobject.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" #include "BPY_menus.h" +#endif /* Pupmenu codes: */ #define UV_CUBE_MAPPING 2 @@ -1238,7 +1240,9 @@ void face_borderselect() void uv_autocalc_tface() { short mode, i=0, has_pymenu=0; /* pymenu must be bigger then UV_*_MAPPING */ +#ifndef DISABLE_PYTHON BPyMenu *pym; +#endif char menu_number[3]; /* uvmenu, will add python items */ @@ -1253,7 +1257,7 @@ void uv_autocalc_tface() MENUSTRING("Project from View (Bounds)",UV_BOUNDS_MAPPING) "|%l|" MENUSTRING("Reset", UV_RESET_MAPPING); - +#ifndef DISABLE_PYTHON /* note that we account for the 10 previous entries with i+10: */ for (pym = BPyMenuTable[PYMENU_UVCALCULATION]; pym; pym = pym->next, i++) { @@ -1268,14 +1272,15 @@ void uv_autocalc_tface() sprintf(menu_number, "%d", i+10); strcat(uvmenu, menu_number); } +#endif mode= pupmenu(uvmenu); - +#ifndef DISABLE_PYTHON if (mode >= 10) { BPY_menu_do_python(PYMENU_UVCALCULATION, mode - 10); return; } - +#endif switch(mode) { case UV_CUBE_MAPPING: calculate_uv_map(B_UVAUTO_CUBE); break; diff --git a/source/blender/src/editmesh_add.c b/source/blender/src/editmesh_add.c index 4dc64b0f933..16a5b049da2 100644 --- a/source/blender/src/editmesh_add.c +++ b/source/blender/src/editmesh_add.c @@ -90,8 +90,10 @@ #include "editmesh.h" /* bpymenu */ +#ifndef DISABLE_PYTHON #include "BPY_extern.h" #include "BPY_menus.h" +#endif static float icovert[12][3] = { {0,0,-200}, @@ -686,14 +688,17 @@ void addedgeface_mesh(void) } else if(amount > 4) { +#ifndef DISABLE_PYTHON /* Python Menu */ BPyMenu *pym; +#endif char menu_number[3]; int i=0, has_pymenu=0, ret; /* facemenu, will add python items */ char facemenu[4096]= "Make Faces%t|Auto%x1|Make FGon%x2|Clear FGon%x3"; +#ifndef DISABLE_PYTHON /* note that we account for the 10 previous entries with i+4: */ for (pym = BPyMenuTable[PYMENU_MESHFACEKEY]; pym; pym = pym->next, i++) { @@ -708,16 +713,18 @@ void addedgeface_mesh(void) sprintf(menu_number, "%d", i+4); strcat(facemenu, menu_number); } - +#endif ret= pupmenu(facemenu); if(ret==1) addfaces_from_edgenet(); else if(ret==2) make_fgon(1); else if(ret==3) make_fgon(0); +#ifndef DISABLE_PYTHON else if (ret >= 4) { BPY_menu_do_python(PYMENU_MESHFACEKEY, ret - 4); return; } +#endif return; } else if(amount<2) { diff --git a/source/blender/src/editscreen.c b/source/blender/src/editscreen.c index 2557894d0e0..3cc306c8ea9 100644 --- a/source/blender/src/editscreen.c +++ b/source/blender/src/editscreen.c @@ -104,7 +104,10 @@ #include "BSE_seqaudio.h" #include "BSE_view.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif + #include "mydevice.h" #include "blendef.h" @@ -1378,11 +1381,13 @@ void screenmain(void) BIF_read_file(ext_load_str); sound_initialize_sounds(); } +#ifndef DISABLE_PYTHON else if ((event==ONLOAD_SCRIPT) && BPY_has_onload_script()) { /* event queued in setup_app_data() in blender.c, where G.f is checked */ onload_script = 1; firsttime = 1; /* see last 'if' in this function */ } +#endif else { towin= 1; } @@ -1518,13 +1523,14 @@ void screenmain(void) } /* Bizar hack. The event queue has mutated... */ if ( (firsttime) && (event == 0) ) { - +#ifndef DISABLE_PYTHON if (onload_script) { /* OnLoad scriptlink */ BPY_do_pyscript(&G.scene->id, SCRIPT_ONLOAD); onload_script = 0; - } - else if (G.fileflags & G_FILE_AUTOPLAY) { + } else +#endif + if (G.fileflags & G_FILE_AUTOPLAY) { // SET AUTOPLAY in G.flags for // other fileloads @@ -1887,9 +1893,9 @@ static void del_area(ScrArea *sa) uiFreeBlocks(&sa->uiblocks); uiFreePanels(&sa->panels); - +#ifndef DISABLE_PYTHON BPY_free_scriptlink(&sa->scriptlink); - +#endif if(sa==curarea) curarea= NULL; if(sa==g_activearea) g_activearea= NULL; } diff --git a/source/blender/src/header_image.c b/source/blender/src/header_image.c index 4ca287d81c5..cf8f3c5c99d 100644 --- a/source/blender/src/header_image.c +++ b/source/blender/src/header_image.c @@ -82,8 +82,10 @@ #include "BSE_trans_types.h" #include "BSE_edit.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" #include "BPY_menus.h" +#endif #include "IMB_imbuf_types.h" @@ -658,8 +660,9 @@ static uiBlock *image_image_rtmappingmenu(void *arg_unused) static void do_image_imagemenu(void *arg, int event) { /* events >=20 are registered bpython scripts */ +#ifndef DISABLE_PYTHON if (event >= 20) BPY_menu_do_python(PYMENU_IMAGE, event - 20); - +#endif switch(event) { case 0: @@ -704,7 +707,9 @@ static uiBlock *image_imagemenu(void *arg_unused) ImBuf *ibuf= BKE_image_get_ibuf(G.sima->image, &G.sima->iuser); uiBlock *block; short yco= 0, menuwidth=150; +#ifndef DISABLE_PYTHON BPyMenu *pym; +#endif int i = 0; block= uiNewBlock(&curarea->uiblocks, "image_imagemenu", UI_EMBOSSP, UI_HELV, curarea->headwin); @@ -749,7 +754,7 @@ static uiBlock *image_imagemenu(void *arg_unused) uiDefIconTextBlockBut(block, image_image_rtmappingmenu, NULL, ICON_RIGHTARROW_THIN, "Realtime Texture Mapping", 0, yco-=20, 120, 19, ""); // uiDefIconTextBut(block, BUTM, 1, ICON_MENU_PANEL, "Realtime Texture Animation|", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 7, ""); } - +#ifndef DISABLE_PYTHON /* note that we acount for the N previous entries with i+20: */ for (pym = BPyMenuTable[PYMENU_IMAGE]; pym; pym = pym->next, i++) { @@ -757,7 +762,7 @@ static uiBlock *image_imagemenu(void *arg_unused) NULL, 0.0, 0.0, 1, i+20, pym->tooltip?pym->tooltip:pym->filename); } - +#endif if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); } @@ -948,6 +953,7 @@ static uiBlock *image_uvs_weldalignmenu(void *arg_unused) return block; } +#ifndef DISABLE_PYTHON static void do_image_uvs_scriptsmenu(void *arg, int event) { BPY_menu_do_python(PYMENU_UV, event); @@ -978,6 +984,7 @@ static uiBlock *image_uvs_scriptsmenu (void *args_unused) return block; } +#endif /* DISABLE_PYTHON */ static void do_image_uvsmenu(void *arg, int event) { @@ -1088,10 +1095,12 @@ static uiBlock *image_uvsmenu(void *arg_unused) uiDefIconTextBlockBut(block, image_uvs_showhidemenu, NULL, ICON_RIGHTARROW_THIN, "Show/Hide Faces", 0, yco-=20, menuwidth, 19, ""); +#ifndef DISABLE_PYTHON uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); uiDefIconTextBlockBut(block, image_uvs_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Scripts", 0, yco-=20, 120, 19, ""); - +#endif + if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); } diff --git a/source/blender/src/header_info.c b/source/blender/src/header_info.c index 28248c052b3..b6bd00d2ad6 100644 --- a/source/blender/src/header_info.c +++ b/source/blender/src/header_info.c @@ -115,8 +115,10 @@ #include "MEM_guardedalloc.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" #include "BPY_menus.h" +#endif #include "GPU_extensions.h" #include "GPU_material.h" @@ -332,8 +334,9 @@ Scene *copy_scene(Scene *sce, int level) obase= obase->next; base= base->next; } +#ifndef DISABLE_PYTHON BPY_copy_scriptlink(&sce->scriptlink); - +#endif /* sculpt data */ sce->sculptdata.session = NULL; if (sce->sculptdata.cumap) { @@ -650,12 +653,14 @@ static void do_info_file_importmenu(void *arg, int event) areawinset(sa->win); } +#ifndef DISABLE_PYTHON /* events >=3 are registered bpython scripts */ if (event >= 3) { BPY_menu_do_python(PYMENU_IMPORT, event - 3); BIF_undo_push("Import file"); - } - else { + } else +#endif + { switch(event) { case 0: /* DXF */ @@ -677,7 +682,9 @@ static uiBlock *info_file_importmenu(void *arg_unused) { uiBlock *block; short yco = 20, menuwidth = 120; +#ifndef DISABLE_PYTHON BPyMenu *pym; +#endif int i = 0; block= uiNewBlock(&curarea->uiblocks, "importmenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); @@ -690,13 +697,13 @@ static uiBlock *info_file_importmenu(void *arg_unused) 0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, 0, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "STL...", 0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, 2, ""); - +#ifndef DISABLE_PYTHON uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); for (pym = BPyMenuTable[PYMENU_IMPORT]; pym; pym = pym->next, i++) { uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, i+3, pym->tooltip?pym->tooltip:pym->filename); } - +#endif uiBlockSetDirection(block, UI_RIGHT); uiTextBoundsBlock(block, 60); @@ -712,11 +719,12 @@ static void do_info_file_exportmenu(void *arg, int event) if (!sa) sa= closest_bigger_area(); areawinset(sa->win); } - +#ifndef DISABLE_PYTHON /* events >=3 are registered bpython scripts */ if (event >= 3) BPY_menu_do_python(PYMENU_EXPORT, event - 3); - - else switch(event) { + else +#endif + switch(event) { case 0: write_vrml_fs(); @@ -735,7 +743,9 @@ static uiBlock *info_file_exportmenu(void *arg_unused) { uiBlock *block; short yco = 20, menuwidth = 120; +#ifndef DISABLE_PYTHON BPyMenu *pym; +#endif int i = 0; block= uiNewBlock(&curarea->uiblocks, "exportmenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); @@ -749,6 +759,7 @@ static uiBlock *info_file_exportmenu(void *arg_unused) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "STL...", 0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, 2, ""); +#ifndef DISABLE_PYTHON uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); /* note that we acount for the 3 previous entries with i+3: */ @@ -757,7 +768,7 @@ static uiBlock *info_file_exportmenu(void *arg_unused) NULL, 0.0, 0.0, 1, i+3, pym->tooltip?pym->tooltip:pym->filename); } - +#endif uiBlockSetDirection(block, UI_RIGHT); uiTextBoundsBlock(block, 60); @@ -1160,9 +1171,12 @@ static uiBlock *info_filemenu(void *arg_unused) void do_info_add_meshmenu(void *arg, int event) { +#ifndef DISABLE_PYTHON if (event>=20) { BPY_menu_do_python(PYMENU_ADDMESH, event - 20); - } else { + } else +#endif + { switch(event) { case 0: /* Plane */ @@ -1214,7 +1228,9 @@ static uiBlock *info_add_meshmenu(void *arg_unused) short yco= 0; /* Python Menu */ +#ifndef DISABLE_PYTHON BPyMenu *pym; +#endif int i=0; block= uiNewBlock(&curarea->uiblocks, "add_meshmenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); @@ -1231,7 +1247,7 @@ static uiBlock *info_add_meshmenu(void *arg_unused) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Grid|", 0, yco-=20, 160, 19, NULL, 0.0, 0.0, 1, 8, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Monkey|", 0, yco-=20, 160, 19, NULL, 0.0, 0.0, 1, 9, ""); - +#ifndef DISABLE_PYTHON pym = BPyMenuTable[PYMENU_ADDMESH]; if (pym) { uiDefIconTextBut(block, SEPR, 0, ICON_BLANK1, "", 0, yco-=6, 160, 6, NULL, 0.0, 0.0, 0, 0, ""); @@ -1240,7 +1256,8 @@ static uiBlock *info_add_meshmenu(void *arg_unused) uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20, 160, 19, NULL, 0.0, 0.0, 1, i+20, pym->tooltip?pym->tooltip:pym->filename); } } - +#endif + uiBlockSetDirection(block, UI_RIGHT); uiTextBoundsBlock(block, 50); @@ -1496,9 +1513,12 @@ static uiBlock *info_add_groupmenu(void *arg_unused) void do_info_addmenu(void *arg, int event) { +#ifndef DISABLE_PYTHON if (event>=20) { BPY_menu_do_python(PYMENU_ADD, event - 20); - } else { + } else +#endif + { switch(event) { case 0: /* Mesh */ @@ -1547,7 +1567,9 @@ static uiBlock *info_addmenu(void *arg_unused) { /* static short tog=0; */ uiBlock *block; +#ifndef DISABLE_PYTHON BPyMenu *pym; +#endif int i=0; short yco= 0; @@ -1575,6 +1597,7 @@ static uiBlock *info_addmenu(void *arg_unused) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Armature", 0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, 8, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Lattice", 0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, 9, ""); +#ifndef DISABLE_PYTHON pym = BPyMenuTable[PYMENU_ADD]; if (pym) { uiDefIconTextBut(block, SEPR, 0, ICON_BLANK1, "", 0, yco-=6, 1620, 6, NULL, 0.0, 0.0, 0, 0, ""); @@ -1583,7 +1606,8 @@ static uiBlock *info_addmenu(void *arg_unused) uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20, 120, 19, NULL, 0.0, 0.0, 1, i+20, pym->tooltip?pym->tooltip:pym->filename); } } - +#endif + uiBlockSetDirection(block, UI_DOWN); uiTextBoundsBlock(block, 80); @@ -1948,9 +1972,10 @@ static void do_info_rendermenu(void *arg, int event) if (!sa) sa= closest_bigger_area(); areawinset(sa->win); } - +#ifndef DISABLE_PYTHON BPY_menu_do_python(PYMENU_RENDER, event - 10); BIF_undo_push("Rendering Script"); +#endif } else { switch(event) { @@ -1998,7 +2023,9 @@ static void do_info_rendermenu(void *arg, int event) static uiBlock *info_rendermenu(void *arg_unused) { uiBlock *block; +#ifndef DISABLE_PYTHON BPyMenu *pym; +#endif short yco= 0; short menuwidth=120; int i=0; @@ -2026,12 +2053,14 @@ static uiBlock *info_rendermenu(void *arg_unused) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Render Settings|F10", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 7, ""); +#ifndef DISABLE_PYTHON uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); for (pym = BPyMenuTable[PYMENU_RENDER]; pym; pym = pym->next, i++) { uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, i+10, pym->tooltip?pym->tooltip:pym->filename); } - +#endif + uiBlockSetDirection(block, UI_DOWN); uiTextBoundsBlock(block, 80); @@ -2042,8 +2071,9 @@ static uiBlock *info_rendermenu(void *arg_unused) static void do_info_help_websitesmenu(void *arg, int event) { +#ifndef DISABLE_PYTHON BPY_menu_do_python(PYMENU_HELPWEBSITES, event); - +#endif allqueue(REDRAWVIEW3D, 0); } @@ -2051,17 +2081,19 @@ static void do_info_help_websitesmenu(void *arg, int event) static uiBlock *info_help_websitesmenu(void *arg_unused) { uiBlock *block; +#ifndef DISABLE_PYTHON BPyMenu *pym; +#endif short yco = 20, menuwidth = 120; int i = 0; block= uiNewBlock(&curarea->uiblocks, "info_help_websitesmenu", UI_EMBOSSP, UI_HELV, G.curscreen->mainwin); uiBlockSetButmFunc(block, do_info_help_websitesmenu, NULL); - +#ifndef DISABLE_PYTHON for (pym = BPyMenuTable[PYMENU_HELPWEBSITES]; pym; pym = pym->next, i++) { uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, i, pym->tooltip?pym->tooltip:pym->filename); } - +#endif uiBlockSetDirection(block, UI_RIGHT); uiTextBoundsBlock(block, 60); @@ -2071,8 +2103,11 @@ static uiBlock *info_help_websitesmenu(void *arg_unused) static void do_info_help_systemmenu(void *arg, int event) { /* events >=10 are registered bpython scripts */ +#ifndef DISABLE_PYTHON if (event >= 10) BPY_menu_do_python(PYMENU_HELPSYSTEM, event - 10); - else { + else +#endif + { switch(event) { case 1: /* Benchmark */ @@ -2102,7 +2137,9 @@ static void do_info_help_systemmenu(void *arg, int event) static uiBlock *info_help_systemmenu(void *arg_unused) { uiBlock *block; +#ifndef DISABLE_PYTHON BPyMenu *pym; +#endif short yco = 20, menuwidth = 120; int i = 0; @@ -2110,11 +2147,11 @@ static uiBlock *info_help_systemmenu(void *arg_unused) uiBlockSetButmFunc(block, do_info_help_systemmenu, NULL); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Benchmark", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); - +#ifndef DISABLE_PYTHON for (pym = BPyMenuTable[PYMENU_HELPSYSTEM]; pym; pym = pym->next, i++) { uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, i+10, pym->tooltip?pym->tooltip:pym->filename); } - +#endif uiBlockSetDirection(block, UI_RIGHT); uiTextBoundsBlock(block, 60); @@ -2132,8 +2169,11 @@ static void do_info_helpmenu(void *arg, int event) } /* events >=10 are registered bpython scripts */ +#ifndef DISABLE_PYTHON if (event >= 10) BPY_menu_do_python(PYMENU_HELP, event - 10); - else { + else +#endif + { switch(event) { case 0: /* About Blender */ @@ -2150,20 +2190,22 @@ static uiBlock *info_helpmenu(void *arg_unused) uiBlock *block; short yco= 0; short menuwidth=120; +#ifndef DISABLE_PYTHON BPyMenu *pym; +#endif int i = 0; block= uiNewBlock(&curarea->uiblocks, "info_helpmenu", UI_EMBOSSP, UI_HELV, curarea->headwin); uiBlockSetButmFunc(block, do_info_helpmenu, NULL); uiDefIconTextBut(block, BUTM, B_SHOWSPLASH, ICON_BLANK1, "About Blender...", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 0, ""); - +#ifndef DISABLE_PYTHON uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); for (pym = BPyMenuTable[PYMENU_HELP]; pym; pym = pym->next, i++) { uiDefIconTextBut(block, BUTM, 1, ICON_PYTHON, pym->name, 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, i+10, pym->tooltip?pym->tooltip:pym->filename); } - +#endif uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); uiDefIconTextBlockBut(block, info_help_websitesmenu, NULL, ICON_RIGHTARROW_THIN, "Websites", 0, yco-=20, 120, 19, ""); diff --git a/source/blender/src/header_oops.c b/source/blender/src/header_oops.c index 68326c330ad..b839029c139 100644 --- a/source/blender/src/header_oops.c +++ b/source/blender/src/header_oops.c @@ -63,8 +63,10 @@ #include "BKE_depsgraph.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" #include "BPY_menus.h" +#endif static int viewmovetemp = 0; diff --git a/source/blender/src/header_script.c b/source/blender/src/header_script.c index 53c4b9b5953..2bf58fb2873 100644 --- a/source/blender/src/header_script.c +++ b/source/blender/src/header_script.c @@ -57,8 +57,10 @@ #include "BKE_sca.h" #include "BSE_filesel.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" #include "BPY_menus.h" +#endif #include "blendef.h" #include "mydevice.h" @@ -68,6 +70,7 @@ /* ********************** SCRIPT ****************************** */ /* action executed after clicking in Scripts menu */ +#ifndef DISABLE_PYTHON static void do_scripts_submenus(void *int_arg, int event) { int menutype = (intptr_t)int_arg; @@ -152,6 +155,7 @@ static uiBlock *script_scriptsmenu(void *arg_unused) uiTextBoundsBlock(block, 50); return block; } +#endif /* DISABLE_PYTHON */ void do_script_buttons(unsigned short event) { @@ -160,6 +164,7 @@ void do_script_buttons(unsigned short event) int nr= 1; Script *script = sc->script; +#ifndef DISABLE_PYTHON if (!sc) return; if (sc->spacetype != SPACE_SCRIPT) return; @@ -200,7 +205,7 @@ void do_script_buttons(unsigned short event) } break; } - +#endif return; } @@ -240,6 +245,7 @@ void script_buttons(void) uiBlockSetEmboss(block, UI_EMBOSS); xco+=XIC; +#ifndef DISABLE_PYTHON /* pull down menus */ if((curarea->flag & HEADER_NO_PULLDOWN)==0) { uiBlockSetEmboss(block, UI_EMBOSSP); @@ -248,7 +254,7 @@ void script_buttons(void) uiDefPulldownBut(block,script_scriptsmenu, NULL, "Scripts", xco, 0, xmax, 20, ""); xco+=xmax; } - +#endif uiBlockSetEmboss(block, UI_EMBOSS); uiBlockBeginAlign(block); diff --git a/source/blender/src/header_text.c b/source/blender/src/header_text.c index 9bb59a81192..9268642db2f 100644 --- a/source/blender/src/header_text.c +++ b/source/blender/src/header_text.c @@ -84,8 +84,10 @@ #include "BLI_blenlib.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" #include "BPY_menus.h" +#endif #include "blendef.h" #include "mydevice.h" @@ -166,11 +168,12 @@ void do_text_buttons(unsigned short event) st->text = st->text->id.next; pop_space_text(st); } - + +#ifndef DISABLE_PYTHON BPY_clear_bad_scriptlinks(text); BPY_free_pyconstraint_links(text); free_text_controllers(text); - +#endif unlink_text(text); free_libblock(&G.main->text, text); @@ -231,7 +234,7 @@ void do_text_buttons(unsigned short event) break; } } - +#ifndef DISABLE_PYTHON static void do_text_template_scriptsmenu(void *arg, int event) { BPY_menu_do_python(PYMENU_SCRIPTTEMPLATE, event); @@ -293,6 +296,7 @@ static uiBlock *text_plugin_scriptsmenu (void *args_unused) return block; } +#endif /* action executed after clicking in File menu */ static void do_text_filemenu(void *arg, int event) @@ -316,8 +320,10 @@ static void do_text_filemenu(void *arg, int event) activate_fileselect(FILE_SPECIAL, "Open Text File", G.sce, add_text_fs); break; case 3: +#ifndef DISABLE_PYTHON if (text->compiled) BPY_free_compiled_text(text); text->compiled = NULL; +#endif if (okee("Reopen Text")) { if (!reopen_text(text)) { error("Could not reopen file"); @@ -339,6 +345,7 @@ static void do_text_filemenu(void *arg, int event) run_python_script(st); break; case 8: +#ifndef DISABLE_PYTHON { Object *ob; bConstraint *con; @@ -373,6 +380,7 @@ static void do_text_filemenu(void *arg, int event) } } } +#endif break; default: break; @@ -820,16 +828,18 @@ static uiBlock *text_filemenu(void *arg_unused) uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Run Python Script|Alt P", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 7, ""); - +#ifndef DISABLE_PYTHON if (BPY_is_pyconstraint(text)) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Refresh All PyConstraints", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 8, ""); - +#endif uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); } - + +#ifndef DISABLE_PYTHON uiDefIconTextBlockBut(block, text_template_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Script Templates", 0, yco-=20, 120, 19, ""); uiDefIconTextBlockBut(block, text_plugin_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Text Plugins", 0, yco-=20, 120, 19, ""); - +#endif + if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); } @@ -924,8 +934,10 @@ static short do_modification_check(SpaceText *st_v) { } else { switch (pupmenu("File Modified Outside Blender %t|Reload from disk %x0|Make text internal (separate copy) %x1|Ignore %x2")) { case 0: +#ifndef DISABLE_PYTHON if (text->compiled) BPY_free_compiled_text(text); text->compiled = NULL; +#endif reopen_text(text); if (st->showsyntax) txt_format_text(st); return 1; diff --git a/source/blender/src/header_view3d.c b/source/blender/src/header_view3d.c index d57fa18a705..e2caf97df05 100644 --- a/source/blender/src/header_view3d.c +++ b/source/blender/src/header_view3d.c @@ -125,8 +125,10 @@ #include "BIF_verse.h" #endif +#ifndef DISABLE_PYTHON #include "BPY_extern.h" #include "BPY_menus.h" +#endif #include "blendef.h" #include "multires.h" @@ -461,6 +463,7 @@ static uiBlock *view3d_view_alignviewmenu(void *arg_unused) return block; } +#ifndef DISABLE_PYTHON static void do_view3d_view_spacehandlers(void *arg, int event) { Text *text = G.main->text.first; @@ -548,6 +551,7 @@ static uiBlock *view3d_view_spacehandlers(void *arg_unused) return block; } +#endif /* DISABLE_PYTHON */ static void do_view3d_viewmenu(void *arg, int event) { @@ -691,8 +695,10 @@ static uiBlock *view3d_viewmenu(void *arg_unused) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Play Back Animation|Alt A", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 13, ""); +#ifndef DISABLE_PYTHON uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); uiDefIconTextBlockBut(block, view3d_view_spacehandlers, NULL, ICON_RIGHTARROW_THIN, "Space Handler Scripts", 0, yco-=20, 120, 19, ""); +#endif if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); @@ -1468,8 +1474,10 @@ static uiBlock *view3d_select_pose_armaturemenu(void *arg_unused) void do_view3d_select_faceselmenu(void *arg, int event) { /* events >= 6 are registered bpython scripts */ +#ifndef DISABLE_PYTHON if (event >= 6) BPY_menu_do_python(PYMENU_FACESELECT, event - 6); - +#endif + switch(event) { case 0: /* border select */ borderselect(); @@ -1491,7 +1499,9 @@ static uiBlock *view3d_select_faceselmenu(void *arg_unused) { uiBlock *block; short yco= 0, menuwidth=120; +#ifndef DISABLE_PYTHON BPyMenu *pym; +#endif int i = 0; block= uiNewBlock(&curarea->uiblocks, "view3d_select_faceselmenu", UI_EMBOSSP, UI_HELV, curarea->headwin); @@ -1507,6 +1517,7 @@ static uiBlock *view3d_select_faceselmenu(void *arg_unused) uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Linked Faces|Ctrl L", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 4, ""); +#ifndef DISABLE_PYTHON uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); /* note that we account for the 6 previous entries with i+6: */ @@ -1515,7 +1526,8 @@ static uiBlock *view3d_select_faceselmenu(void *arg_unused) menuwidth, 19, NULL, 0.0, 0.0, 1, i+6, pym->tooltip?pym->tooltip:pym->filename); } - +#endif + if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); } @@ -2445,6 +2457,7 @@ static uiBlock *view3d_edit_object_showhidemenu(void *arg_unused) return block; } +#ifndef DISABLE_PYTHON static void do_view3d_edit_object_scriptsmenu(void *arg, int event) { BPY_menu_do_python(PYMENU_OBJECT, event); @@ -2471,6 +2484,7 @@ static uiBlock *view3d_edit_object_scriptsmenu(void *arg_unused) return block; } +#endif /* DISABLE_PYTHON */ #ifdef WITH_VERSE extern ListBase session_list; @@ -2610,9 +2624,10 @@ static uiBlock *view3d_edit_objectmenu(void *arg_unused) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Move to Layer...|M", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 10, ""); uiDefIconTextBlockBut(block, view3d_edit_object_showhidemenu, NULL, ICON_RIGHTARROW_THIN, "Show/Hide Objects", 0, yco-=20, 120, 19, ""); +#ifndef DISABLE_PYTHON uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); uiDefIconTextBlockBut(block, view3d_edit_object_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Scripts", 0, yco-=20, 120, 19, ""); - +#endif if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); @@ -3078,6 +3093,7 @@ static uiBlock *view3d_edit_mesh_showhidemenu(void *arg_unused) return block; } +#ifndef DISABLE_PYTHON static void do_view3d_edit_mesh_scriptsmenu(void *arg, int event) { BPY_menu_do_python(PYMENU_MESH, event); @@ -3104,6 +3120,7 @@ static uiBlock *view3d_edit_mesh_scriptsmenu(void *arg_unused) return block; } +#endif /* DISABLE_PYTHON */ static void do_view3d_edit_meshmenu(void *arg, int event) { @@ -3248,9 +3265,11 @@ static uiBlock *view3d_edit_meshmenu(void *arg_unused) uiDefIconTextBlockBut(block, view3d_edit_mesh_showhidemenu, NULL, ICON_RIGHTARROW_THIN, "Show/Hide Vertices", 0, yco-=20, 120, 19, ""); +#ifndef DISABLE_PYTHON uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); uiDefIconTextBlockBut(block, view3d_edit_mesh_scriptsmenu, NULL, ICON_RIGHTARROW_THIN, "Scripts", 0, yco-=20, 120, 19, ""); - +#endif + if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); } @@ -3965,7 +3984,7 @@ static void do_view3d_edit_armaturemenu(void *arg, int event) } - +#ifndef DISABLE_PYTHON static void do_view3d_scripts_armaturemenu(void *arg, int event) { BPY_menu_do_python(PYMENU_ARMATURE, event); @@ -3996,6 +4015,7 @@ static uiBlock *view3d_scripts_armaturemenu(void *args_unused) return block; } +#endif /* DISABLE_PYTHON */ static void do_view3d_armature_settingsmenu(void *arg, int event) { @@ -4077,10 +4097,11 @@ static uiBlock *view3d_edit_armaturemenu(void *arg_unused) uiDefIconTextBlockBut(block, view3d_edit_armature_parentmenu, NULL, ICON_RIGHTARROW_THIN, "Parent", 0, yco-=20, 120, 19, ""); uiDefIconTextBlockBut(block, view3d_armature_settingsmenu, NULL, ICON_RIGHTARROW_THIN, "Bone Settings", 0, yco-=20, 120, 19, ""); +#ifndef DISABLE_PYTHON uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); uiDefIconTextBlockBut(block, view3d_scripts_armaturemenu, NULL, ICON_RIGHTARROW_THIN, "Scripts", 0, yco-=20, 120, 19, ""); - +#endif if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); } @@ -4486,8 +4507,9 @@ static uiBlock *view3d_pose_armaturemenu(void *arg_unused) static void do_view3d_vpaintmenu(void *arg, int event) { /* events >= 3 are registered bpython scripts */ +#ifndef DISABLE_PYTHON if (event >= 3) BPY_menu_do_python(PYMENU_VERTEXPAINT, event - 3); - +#endif switch(event) { case 0: /* undo vertex painting */ BIF_undo(); @@ -4509,7 +4531,9 @@ static uiBlock *view3d_vpaintmenu(void *arg_unused) { uiBlock *block; short yco= 0, menuwidth=120; +#ifndef DISABLE_PYTHON BPyMenu *pym; +#endif int i=0; block= uiNewBlock(&curarea->uiblocks, "view3d_paintmenu", UI_EMBOSSP, UI_HELV, curarea->headwin); @@ -4519,6 +4543,7 @@ static uiBlock *view3d_vpaintmenu(void *arg_unused) uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Vertex Colors|Shift K", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 1, ""); uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Set Shaded Vertex Colors", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 1, 2, ""); +#ifndef DISABLE_PYTHON /* note that we account for the 3 previous entries with i+3: even if the last item isnt displayed, it dosent matter */ for (pym = BPyMenuTable[PYMENU_VERTEXPAINT]; pym; pym = pym->next, i++) { @@ -4526,7 +4551,8 @@ static uiBlock *view3d_vpaintmenu(void *arg_unused) menuwidth, 19, NULL, 0.0, 0.0, 1, i+3, pym->tooltip?pym->tooltip:pym->filename); } - +#endif + if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); } @@ -4581,8 +4607,9 @@ static void do_view3d_wpaintmenu(void *arg, int event) Object *ob= OBACT; /* events >= 3 are registered bpython scripts */ +#ifndef DISABLE_PYTHON if (event >= 4) BPY_menu_do_python(PYMENU_WEIGHTPAINT, event - 4); - +#endif switch(event) { case 0: /* undo weight painting */ BIF_undo(); @@ -4604,7 +4631,9 @@ static uiBlock *view3d_wpaintmenu(void *arg_unused) { uiBlock *block; short yco= 0, menuwidth=120, menunr=1; +#ifndef DISABLE_PYTHON BPyMenu *pym; +#endif int i=0; block= uiNewBlock(&curarea->uiblocks, "view3d_paintmenu", UI_EMBOSSP, UI_HELV, curarea->headwin); @@ -4624,7 +4653,8 @@ static uiBlock *view3d_wpaintmenu(void *arg_unused) uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, ""); menunr++; } - + +#ifndef DISABLE_PYTHON /* note that we account for the 4 previous entries with i+4: even if the last item isnt displayed, it dosent matter */ for (pym = BPyMenuTable[PYMENU_WEIGHTPAINT]; pym; pym = pym->next, i++) { @@ -4632,7 +4662,8 @@ static uiBlock *view3d_wpaintmenu(void *arg_unused) menuwidth, 19, NULL, 0.0, 0.0, 1, i+4, pym->tooltip?pym->tooltip:pym->filename); } - +#endif + if(curarea->headertype==HEADERTOP) { uiBlockSetDirection(block, UI_DOWN); } @@ -4904,8 +4935,9 @@ static uiBlock *view3d_faceselmenu(void *arg_unused) void do_view3d_select_particlemenu(void *arg, int event) { /* events >= 6 are registered bpython scripts */ +#ifndef DISABLE_PYTHON if (event >= 6) BPY_menu_do_python(PYMENU_FACESELECT, event - 6); - +#endif switch(event) { case 0: PE_borderselect(); diff --git a/source/blender/src/headerbuttons.c b/source/blender/src/headerbuttons.c index 44044841a99..7c97fa8431d 100644 --- a/source/blender/src/headerbuttons.c +++ b/source/blender/src/headerbuttons.c @@ -161,8 +161,10 @@ #include "BDR_editmball.h" #include "BDR_sculptmode.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" #include "BPY_menus.h" +#endif #include "GPU_draw.h" @@ -535,6 +537,7 @@ static void filesel_u_renderdir(char *name) allqueue(REDRAWALL, 0); } +#ifndef DISABLE_PYTHON static void filesel_u_pythondir(char *name) { char dir[FILE_MAXDIR], file[FILE_MAXFILE]; @@ -550,6 +553,7 @@ static void filesel_u_pythondir(char *name) error("Invalid scripts dir: check console"); } } +#endif static void filesel_u_sounddir(char *name) { @@ -1525,7 +1529,7 @@ void do_global_buttons(unsigned short event) activate_fileselect(FILE_SPECIAL, "SELECT RENDER PATH", U.renderdir, filesel_u_renderdir); break; - +#ifndef DISABLE_PYTHON case B_PYMENUEVAL: /* is button from space.c *info* */ waitcursor( 1 ); /* can take some time */ if (BPY_path_update() == 0) { /* re-eval scripts registration in menus */ @@ -1542,7 +1546,7 @@ void do_global_buttons(unsigned short event) activate_fileselect(FILE_SPECIAL, "SELECT SCRIPT PATH", U.pythondir, filesel_u_pythondir); break; - +#endif case B_SOUNDDIRFILESEL: /* is button from space.c *info* */ if(curarea->spacetype==SPACE_INFO) { sa= closest_bigger_area(); diff --git a/source/blender/src/interface.c b/source/blender/src/interface.c index 7c1a4668a56..28baf87baa1 100644 --- a/source/blender/src/interface.c +++ b/source/blender/src/interface.c @@ -96,7 +96,9 @@ #include "BSE_view.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" /* for BPY_button_eval */ +#endif #include "GHOST_Types.h" /* for tablet data */ @@ -2144,6 +2146,7 @@ static int ui_act_as_text_but(uiBut *but) but->max= max; if(textleft==0) but->flag &= ~UI_TEXT_LEFT; +#ifndef DISABLE_PYTHON if(BPY_button_eval(str, &value)) { /* Uncomment this if you want to see an error message (and annoy users) */ /* error("Invalid Python expression, check console");*/ @@ -2152,7 +2155,10 @@ static int ui_act_as_text_but(uiBut *but) if(str[0]) retval = 0; /* invalidate return value if eval failed, except when string was null */ } - +#else + value=atof(str); +#endif + if(but->pointype!=FLO) value= (int)value; if(but->type==NUMABS) value= fabs(value); diff --git a/source/blender/src/renderwin.c b/source/blender/src/renderwin.c index b4d78b7fa37..bbac70e9e5e 100644 --- a/source/blender/src/renderwin.c +++ b/source/blender/src/renderwin.c @@ -88,7 +88,10 @@ #include "BDR_sculptmode.h" #include "BDR_editobject.h" + +#ifndef DISABLE_PYTHON #include "BPY_extern.h" /* for BPY_do_all_scripts */ +#endif #include "BSE_view.h" #include "BSE_drawview.h" @@ -1273,8 +1276,10 @@ void BIF_store_spare(void) /* set up display, render an image or scene */ void BIF_do_render(int anim) { +#ifndef DISABLE_PYTHON if (G.f & G_DOSCRIPTLINKS) BPY_do_all_scripts(SCRIPT_RENDER, anim); +#endif BIF_store_spare(); @@ -1286,8 +1291,9 @@ void BIF_do_render(int anim) } if(G.scene->r.dither_intensity != 0.0f) BIF_redraw_render_rect(); - +#ifndef DISABLE_PYTHON if (G.f & G_DOSCRIPTLINKS) BPY_do_all_scripts(SCRIPT_POSTRENDER, anim); +#endif } void do_ogl_view3d_render(Render *re, View3D *v3d, int winx, int winy) diff --git a/source/blender/src/space.c b/source/blender/src/space.c index c26620ccbf2..b6221c2f84b 100644 --- a/source/blender/src/space.c +++ b/source/blender/src/space.c @@ -168,7 +168,9 @@ #include "PIL_time.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "butspace.h" #include "mydevice.h" @@ -1079,7 +1081,9 @@ void BIF_undo(void) else { /* now also in faceselect mode */ if(U.uiflag & USER_GLOBALUNDO) { +#ifndef DISABLE_PYTHON BPY_scripts_clear_pyobjects(); +#endif BKE_undo_step(1); sound_initialize_sounds(); } @@ -1248,12 +1252,13 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) * - grease-pencil also defaults to leftmouse */ if(event==LEFTMOUSE) { +#ifndef DISABLE_PYTHON /* run any view3d event handler script links */ if (sa->scriptlink.totscript) { if (BPY_do_spacehandlers(sa, event, val, SPACEHANDLER_VIEW3D_EVENT)) return; /* return if event was processed (swallowed) by handler(s) */ } - +#endif if(gpencil_do_paint(sa, L_MOUSE)) return; if(BIF_do_manipulator(sa)) return; } @@ -1309,10 +1314,12 @@ static void winqreadview3dspace(ScrArea *sa, void *spacedata, BWinEvent *evt) } } +#ifndef DISABLE_PYTHON /* run any view3d event handler script links */ if (event && sa->scriptlink.totscript) if (BPY_do_spacehandlers(sa, event, val, SPACEHANDLER_VIEW3D_EVENT)) return; /* return if event was processed (swallowed) by handler(s) */ +#endif /* TEXTEDITING?? */ if((G.obedit) && G.obedit->type==OB_FONT) { @@ -4324,7 +4331,8 @@ void drawinfospace(ScrArea *sa, void *spacedata) (xpos+edgsp+(1*mpref)+(1*midsp)),y2,mpref,buth, &(U.uiflag), 0, 0, 0, 0, "Allows all codecs for rendering (not guaranteed)"); #endif - + +#ifndef DISABLE_PYTHON uiDefBut(block, LABEL,0,"Auto Run Python Scripts", (xpos+edgsp+(1*midsp)+(1*mpref)),y6label,mpref,buth, 0, 0, 0, 0, 0, ""); @@ -4332,7 +4340,8 @@ void drawinfospace(ScrArea *sa, void *spacedata) uiDefButBitI(block, TOGN, USER_DONT_DOSCRIPTLINKS, REDRAWBUTSSCRIPT, "Enabled by Default", (xpos+edgsp+(1*mpref)+(1*midsp)),y5,mpref,buth, &(U.flag), 0, 0, 0, 0, "Allow any .blend file to run scripts automatically (unsafe with blend files from an untrusted source)"); - +#endif + uiDefBut(block, LABEL,0,"Keyboard:", (xpos+edgsp+(3*midsp)+(3*mpref)),y2label,mpref,buth, 0, 0, 0, 0, 0, ""); @@ -4511,6 +4520,7 @@ void drawinfospace(ScrArea *sa, void *spacedata) 0, 0, 0, 0, 0, "Select the default render output location"); uiBlockEndAlign(block); +#ifndef DISABLE_PYTHON uiBlockBeginAlign(block); uiDefBut(block, TEX, B_PYMENUEVAL, "Python Scripts: ", (xpos+edgsp+lpref+midsp),y1,(lpref-2*smfileselbut),buth, @@ -4522,7 +4532,7 @@ void drawinfospace(ScrArea *sa, void *spacedata) (xpos+edgsp+(2*lpref)+midsp-smfileselbut),y1,smfileselbut,buth, 0, 0, 0, 0, 0, "Select the default Python script location"); uiBlockEndAlign(block); - +#endif uiBlockBeginAlign(block); uiDefBut(block, TEX, 0, "Sounds: ", @@ -7081,6 +7091,7 @@ SpaceType *spacetext_get_type(void) static void spacescript_change(ScrArea *sa, void *spacedata) { +#ifndef DISABLE_PYTHON SpaceScript *sc = (SpaceScript*) spacedata; /*clear all temp button references*/ @@ -7089,6 +7100,7 @@ static void spacescript_change(ScrArea *sa, void *spacedata) BPy_Free_DrawButtonsList(); sc->but_refs = NULL; } +#endif } SpaceType *spacescript_get_type(void) diff --git a/source/blender/src/toolbox.c b/source/blender/src/toolbox.c index 55feb4c0305..1c028c3f18b 100644 --- a/source/blender/src/toolbox.c +++ b/source/blender/src/toolbox.c @@ -121,8 +121,10 @@ #include "mydevice.h" /* bpymenu */ +#ifndef DISABLE_PYTHON #include "BPY_extern.h" #include "BPY_menus.h" +#endif #include "BLO_sys_types.h" // for intptr_t support @@ -1924,12 +1926,15 @@ static TBitem *create_mesh_sublevel(ListBase *storage) Link *link; TBitem *meshmenu, *mm; int totmenu= 10, totpymenu=0, a=0; - + +#ifndef DISABLE_PYTHON /* Python Menu */ BPyMenu *pym; /* count the python menu items*/ for (pym = BPyMenuTable[PYMENU_ADDMESH]; pym; pym = pym->next, totpymenu++) {} +#endif + if (totpymenu) totmenu += totpymenu+1; /* add 1 for the seperator */ link= MEM_callocN(sizeof(Link) + sizeof(TBitem)*(totmenu+1), "mesh menu"); @@ -1948,6 +1953,7 @@ static TBitem *create_mesh_sublevel(ListBase *storage) mm->icon = 0; mm->retval= a; mm->name = "Monkey"; mm++; a++; /* a == 10 */ +#ifndef DISABLE_PYTHON if (totpymenu) { int i=0; mm->icon = 0; mm->retval= 0; mm->name = "SEPR"; mm++; @@ -1960,7 +1966,8 @@ static TBitem *create_mesh_sublevel(ListBase *storage) mm++; a++; } } - +#endif + /* terminate the menu */ mm->icon= -1; mm->retval= a; mm->name= ""; mm->poin= do_info_add_meshmenu; diff --git a/source/blender/src/usiblender.c b/source/blender/src/usiblender.c index 762264d5bc5..16c26336b89 100644 --- a/source/blender/src/usiblender.c +++ b/source/blender/src/usiblender.c @@ -134,7 +134,9 @@ #include "BDR_imagepaint.h" #include "BDR_vpaint.h" +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "blendef.h" @@ -679,11 +681,13 @@ int BIF_read_homefile(int from_memory) undo_imagepaint_clear(); BKE_reset_undo(); BKE_write_undo("Original"); /* save current state */ - + +#ifndef DISABLE_PYTHON /* if from memory, need to refresh python scripts */ if (from_memory) { BPY_path_update(); } +#endif return success; } @@ -916,8 +920,10 @@ void BIF_write_file(char *target) return; } +#ifndef DISABLE_PYTHON /* send the OnSave event */ if (G.f & G_DOSCRIPTLINKS) BPY_do_pyscript(&G.scene->id, SCRIPT_ONSAVE); +#endif for (li= G.main->library.first; li; li= li->id.next) { if (li->parent==NULL && BLI_streq(li->name, target)) { @@ -1130,9 +1136,11 @@ void exit_usiblender(void) free_editArmature(); free_posebuf(); +#ifndef DISABLE_PYTHON /* before free_blender so py's gc happens while library still exists */ /* needed at least for a rare sigsegv that can happen in pydrivers */ BPY_end_python(); +#endif fastshade_free_render(); /* shaded view */ free_blender(); /* blender.c, does entire library */ diff --git a/source/creator/SConscript b/source/creator/SConscript index c5a661abd69..16556643707 100644 --- a/source/creator/SConscript +++ b/source/creator/SConscript @@ -25,4 +25,7 @@ if env['WITH_BF_OPENEXR']: if not env['WITH_BF_SDL']: defs.append('DISABLE_SDL') +if not env['WITH_BF_PYTHON']: + defs.append('DISABLE_PYTHON') + env.BlenderLib ( libname = 'blender_creator', sources = Split(sources), includes = Split(incs), defines = defs, libtype='core', priority = 1 ) diff --git a/source/creator/creator.c b/source/creator/creator.c index b5360b31a0a..872a5f4d497 100644 --- a/source/creator/creator.c +++ b/source/creator/creator.c @@ -72,7 +72,9 @@ #include "IMB_imbuf.h" // for quicktime_init +#ifndef DISABLE_PYTHON #include "BPY_extern.h" +#endif #include "RE_pipeline.h" @@ -515,9 +517,9 @@ int main(int argc, char **argv) if ( (G.windowstate == G_WINDOWSTATE_BORDER) || (G.windowstate == G_WINDOWSTATE_FULLSCREEN)) setprefsize(stax, stay, sizx, sizy, 0); - +#ifndef DISABLE_PYTHON BPY_start_python(argc, argv); - +#endif /** * NOTE: sound_init_audio() *must be* after start_python, * at least on FreeBSD. @@ -539,8 +541,9 @@ int main(int argc, char **argv) #endif } else { +#ifndef DISABLE_PYTHON BPY_start_python(argc, argv); - +#endif BLI_where_is_temp( btempdir, 0 ); /* call after loading the .B.blend so we can read U.tempdir */ // (ton) Commented out. I have no idea whats thisfor... will mail around! @@ -549,7 +552,7 @@ int main(int argc, char **argv) // sound_init_audio(); // if (G.f & G_DEBUG) printf("setting audio to: %d\n", audio); } - +#ifndef DISABLE_PYTHON /** * NOTE: the U.pythondir string is NULL until BIF_init() is executed, * so we provide the BPY_ function below to append the user defined @@ -559,7 +562,8 @@ int main(int argc, char **argv) * on U.pythondir. */ BPY_post_start_python(); - +#endif + #ifdef WITH_QUICKTIME quicktime_init(); @@ -644,13 +648,14 @@ int main(int argc, char **argv) if (a < argc) { int frame= MIN2(MAXFRAME, MAX2(1, atoi(argv[a]))); Render *re= RE_NewRender(G.scene->id.name); - +#ifndef DISABLE_PYTHON if (G.f & G_DOSCRIPTLINKS) BPY_do_all_scripts(SCRIPT_RENDER, 0); - +#endif RE_BlenderAnim(re, G.scene, frame, frame, G.scene->frame_step); - +#ifndef DISABLE_PYTHON BPY_do_all_scripts(SCRIPT_POSTRENDER, 0); +#endif } } else { printf("\nError: no blend loaded. cannot use '-f'.\n"); @@ -659,14 +664,15 @@ int main(int argc, char **argv) case 'a': if (G.scene) { Render *re= RE_NewRender(G.scene->id.name); - +#ifndef DISABLE_PYTHON if (G.f & G_DOSCRIPTLINKS) BPY_do_all_scripts(SCRIPT_RENDER, 1); - +#endif RE_BlenderAnim(re, G.scene, G.scene->r.sfra, G.scene->r.efra, G.scene->frame_step); - +#ifndef DISABLE_PYTHON if (G.f & G_DOSCRIPTLINKS) BPY_do_all_scripts(SCRIPT_POSTRENDER, 1); +#endif } else { printf("\nError: no blend loaded. cannot use '-a'.\n"); } @@ -704,6 +710,7 @@ int main(int argc, char **argv) } break; case 'P': +#ifndef DISABLE_PYTHON a++; if (a < argc) { /* If we're not running in background mode, then give python a valid screen */ @@ -714,6 +721,9 @@ int main(int argc, char **argv) BPY_run_python_script (argv[a]); } else printf("\nError: you must specify a Python script after '-P '.\n"); +#else + printf("This blender was built without python support\n"); +#endif /* DISABLE_PYTHON */ break; case 'o': a++; diff --git a/tools/Blender.py b/tools/Blender.py index dd617f3c563..abd6cbda4dd 100644 --- a/tools/Blender.py +++ b/tools/Blender.py @@ -110,7 +110,6 @@ def setup_staticlibs(lenv): ] libincs = [ '/usr/lib', - lenv['BF_PYTHON_LIBPATH'], lenv['BF_OPENGL_LIBPATH'], lenv['BF_JPEG_LIBPATH'], lenv['BF_PNG_LIBPATH'], @@ -118,6 +117,8 @@ def setup_staticlibs(lenv): lenv['BF_ICONV_LIBPATH'] ] + if lenv['WITH_BF_PYTHON']: + libincs += Split(lenv['BF_PYTHON_LIBPATH']) if lenv['WITH_BF_SDL']: libincs += Split(lenv['BF_SDL_LIBPATH']) if lenv['WITH_BF_FFMPEG']: @@ -138,7 +139,7 @@ def setup_staticlibs(lenv): if lenv['WITH_BF_STATICOPENGL']: statlibs += Split(lenv['BF_OPENGL_LIB_STATIC']) - if lenv['WITH_BF_STATICPYTHON']: + if lenv['WITH_BF_PYTHON'] and lenv['WITH_BF_STATICPYTHON']: statlibs += Split(lenv['BF_PYTHON_LIB_STATIC']) if lenv['OURPLATFORM'] in ('win32-vc', 'win32-mingw', 'linuxcross'): @@ -154,7 +155,7 @@ def setup_syslibs(lenv): lenv['BF_ZLIB_LIB'] ] - if not lenv['WITH_BF_STATICPYTHON']: + if lenv['WITH_BF_PYTHON'] and not lenv['WITH_BF_STATICPYTHON']: if lenv['BF_DEBUG'] and lenv['OURPLATFORM'] in ('win32-vc'): syslibs.append(lenv['BF_PYTHON_LIB']+'_d') else: @@ -449,15 +450,18 @@ class BlenderEnvironment(SConsEnvironment): lenv.Prepend(LINKFLAGS = ['/DEBUG','/PDB:'+progname+'.pdb']) if lenv['OURPLATFORM']=='linux2': lenv.Append(LINKFLAGS = lenv['PLATFORM_LINKFLAGS']) - lenv.Append(LINKFLAGS = lenv['BF_PYTHON_LINKFLAGS']) + if lenv['WITH_BF_PYTHON']: + lenv.Append(LINKFLAGS = lenv['BF_PYTHON_LINKFLAGS']) if lenv['OURPLATFORM']=='sunos5': lenv.Append(LINKFLAGS = lenv['PLATFORM_LINKFLAGS']) - lenv.Append(LINKFLAGS = lenv['BF_PYTHON_LINKFLAGS']) + if lenv['WITH_BF_PYTHON']: + lenv.Append(LINKFLAGS = lenv['BF_PYTHON_LINKFLAGS']) if lenv['CXX'].endswith('CC'): lenv.Replace(LINK = '$CXX') if lenv['OURPLATFORM']=='darwin': lenv.Append(LINKFLAGS = lenv['PLATFORM_LINKFLAGS']) - lenv.Append(LINKFLAGS = lenv['BF_PYTHON_LINKFLAGS']) + if lenv['WITH_BF_PYTHON']: + lenv.Append(LINKFLAGS = lenv['BF_PYTHON_LINKFLAGS']) lenv.Append(LINKFLAGS = lenv['BF_OPENGL_LINKFLAGS']) if lenv['BF_PROFILE']: lenv.Append(LINKFLAGS = lenv['BF_PROFILE_FLAGS']) diff --git a/tools/btools.py b/tools/btools.py index e16e78488de..26f66568eb8 100755 --- a/tools/btools.py +++ b/tools/btools.py @@ -27,7 +27,7 @@ def print_arguments(args, bc): def validate_arguments(args, bc): opts_list = [ - 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'BF_PYTHON_LINKFLAGS', 'WITH_BF_STATICPYTHON', 'BF_PYTHON_LIB_STATIC', + 'WITH_BF_PYTHON', 'BF_PYTHON', 'BF_PYTHON_VERSION', 'BF_PYTHON_INC', 'BF_PYTHON_BINARY', 'BF_PYTHON_LIB', 'BF_PYTHON_LIBPATH', 'BF_PYTHON_LINKFLAGS', 'WITH_BF_STATICPYTHON', 'BF_PYTHON_LIB_STATIC', 'WITH_BF_OPENAL', 'BF_OPENAL', 'BF_OPENAL_INC', 'BF_OPENAL_LIB', 'BF_OPENAL_LIBPATH', 'WITH_BF_STATICOPENAL', 'BF_OPENAL_LIB_STATIC', 'WITH_BF_SDL', 'BF_SDL', 'BF_SDL_INC', 'BF_SDL_LIB', 'BF_SDL_LIBPATH', 'BF_PTHREADS', 'BF_PTHREADS_INC', 'BF_PTHREADS_LIB', 'BF_PTHREADS_LIBPATH', @@ -145,6 +145,7 @@ def read_opts(cfg, args): ('VERSE_REGEN_PROTO', 'Whether to regenerate the protocol files', 'yes'), ('BF_DEBUG_LIBS', 'list of libraries to build with debug symbols'), + (BoolOption('WITH_BF_PYTHON', 'Compile with python', True)), ('BF_PYTHON', 'base path for python', ''), ('BF_PYTHON_VERSION', 'Python version to use', ''), ('BF_PYTHON_INC', 'include path for Python headers', ''), |