- bpy.app.driver_namespace, read-only dictionary, edit in-place.
- reset on file load and new file.
- on errors the namespace used to be reset, this should not be needed.
simple example.
  def driverFunc(val):
    return val * val
  bpy.app.driver_namespace['driverFunc'] = driverFunc
... now all drivers can access this function.
		
	
		
			
				
	
	
		
			149 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			149 lines
		
	
	
		
			5.7 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| /*
 | |
|  * $Id$
 | |
|  *
 | |
|  * ***** BEGIN GPL LICENSE BLOCK *****
 | |
|  *
 | |
|  * This program is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the GNU General Public License
 | |
|  * as published by the Free Software Foundation; either version 2
 | |
|  * of the License, or (at your option) any later version.
 | |
|  *
 | |
|  * This program is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | |
|  * GNU General Public License for more details.
 | |
|  *
 | |
|  * You should have received a copy of the GNU General Public License
 | |
|  * along with this program; if not, write to the Free Software Foundation,
 | |
|  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 | |
|  *
 | |
|  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
 | |
|  * All rights reserved.
 | |
|  *
 | |
|  * The Original Code was in: source/blender/bpython/include/BPY_extern.h
 | |
|  *
 | |
|  * Contributor(s): Michel Selten, Willian P. Germano, Chris Keith
 | |
|  *
 | |
|  * ***** END GPL LICENSE BLOCK *****
 | |
|  */
 | |
| 
 | |
| #ifndef BPY_EXTERN_H
 | |
| #define BPY_EXTERN_H
 | |
| 
 | |
| extern char bprogname[];	/* holds a copy of argv[0], from creator.c */
 | |
| extern char btempdir[];		/* use this to store a valid temp directory */
 | |
| 
 | |
| struct Text; /* defined in DNA_text_types.h */
 | |
| struct ID; /* DNA_ID.h */
 | |
| struct Object; /* DNA_object_types.h */
 | |
| struct ChannelDriver; /* DNA_anim_types.h */
 | |
| struct ListBase; /* DNA_listBase.h */
 | |
| struct SpaceText; /* DNA_space_types.h */
 | |
| struct SpaceScript; /* DNA_space_types.h */
 | |
| struct ScrArea; /* DNA_screen_types.h */
 | |
| struct bScreen; /* DNA_screen_types.h */
 | |
| struct bConstraint; /* DNA_constraint_types.h */
 | |
| struct bPythonConstraint; /* DNA_constraint_types.h */
 | |
| struct bConstraintOb; /* DNA_constraint_types.h */
 | |
| struct bConstraintTarget; /* DNA_constraint_types.h*/
 | |
| struct Script;				/* DNA_screen_types.h */
 | |
| struct BPyMenu;
 | |
| struct bContext;
 | |
| struct bContextDataResult;
 | |
| struct ReportList;
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| 	/*These two next functions are important for making sure the Draw module
 | |
| 	  works correctly.  Before calling any gui callback using the Draw module,
 | |
| 	  the following code must be executed:
 | |
| 	  
 | |
| 		if (some_drawspace_pylist) {
 | |
| 			BPy_Set_DrawButtonsList(some_drawspace_pylist->but_refs);
 | |
| 			BPy_Free_DrawButtonsList();
 | |
| 		}
 | |
| 		some_drawspace_pylist = PyList_New(0);
 | |
| 		BPy_Set_DrawButtonsList(some_drawspace_pylist);
 | |
| 
 | |
| 	  Also, BPy_Free_DrawButtonsList() must be called as necassary when a drawspace
 | |
| 	  with python callbacks is destroyed.
 | |
|       
 | |
| 	  This is necassary to avoid blender buttons storing invalid pointers to freed
 | |
| 	  python data.*/
 | |
| //	void BPy_Set_DrawButtonsList(void *list);
 | |
| //	void BPy_Free_DrawButtonsList(void);
 | |
| //
 | |
| 	void BPY_pyconstraint_eval(struct bPythonConstraint *con, struct bConstraintOb *cob, struct ListBase *targets);
 | |
| //	void BPY_pyconstraint_settings(void *arg1, void *arg2);
 | |
| 	void BPY_pyconstraint_target(struct bPythonConstraint *con, struct bConstraintTarget *ct);
 | |
| 	void BPY_pyconstraint_update(struct Object *owner, struct bConstraint *con);
 | |
| 	int BPY_is_pyconstraint(struct Text *text);
 | |
| //	void BPY_free_pyconstraint_links(struct Text *text);
 | |
| //
 | |
| 	void BPY_start_python( int argc, char **argv );
 | |
| 	void BPY_end_python( void );
 | |
| //	void init_syspath( int first_time );
 | |
| //	void syspath_append( char *dir );
 | |
| //	void BPY_rebuild_syspath( void );
 | |
| //	int BPY_path_update( void );
 | |
| //
 | |
| //	int BPY_Err_getLinenumber( void );
 | |
| //	const char *BPY_Err_getFilename( void );
 | |
| //
 | |
| //	int BPY_txt_do_python_Text( struct Text *text );
 | |
| //	int BPY_menu_do_python( short menutype, int event );
 | |
| //	int BPY_menu_do_shortcut( short menutype, unsigned short key, unsigned short modifiers );
 | |
| //	int BPY_menu_invoke( struct BPyMenu *pym, short menutype );
 | |
| 	
 | |
| 	/* 2.5 UI Scripts */
 | |
| 	int BPY_run_python_script( struct bContext *C, const char *filename, struct Text *text, struct ReportList *reports ); // 2.5 working
 | |
| 	int BPY_run_script_space_draw(const struct bContext *C, struct SpaceScript * sc); // 2.5 working
 | |
| //	int BPY_run_script_space_listener(struct bContext *C, struct SpaceScript * sc, struct ARegion *ar, struct wmNotifier *wmn); // 2.5 working
 | |
| 	void BPY_update_modules( void ); // XXX - annoying, need this for pointers that get out of date
 | |
| //
 | |
| 	int BPY_context_get(struct bContext *C, const char *member, struct bContextDataResult *result);
 | |
| //
 | |
| //	int BPY_run_script(struct Script *script);
 | |
| 	void BPY_free_compiled_text( struct Text *text );
 | |
| //
 | |
| //	int BPY_has_onload_script( void );
 | |
| //
 | |
| //	int BPY_is_spacehandler(struct Text *text, char spacetype);
 | |
| //	int BPY_del_spacehandler(struct Text *text, struct ScrArea *sa);
 | |
| //	int BPY_add_spacehandler(struct Text *txt, struct ScrArea *sa,char spacetype);
 | |
| //	int BPY_has_spacehandler(struct Text *text, struct ScrArea *sa);
 | |
| //	void BPY_screen_free_spacehandlers(struct bScreen *sc);
 | |
| //	int BPY_do_spacehandlers(struct ScrArea *sa, unsigned short event,
 | |
| //		short eventValue, unsigned short space_event);
 | |
| //
 | |
| 	void BPY_reset_driver(void);
 | |
| 	float BPY_eval_driver(struct ChannelDriver *driver);
 | |
| //
 | |
| 	int BPY_eval_button(struct bContext *C, const char *expr, double *value);
 | |
| 
 | |
| 	int BPY_eval_string(struct bContext *C, const char *expr);
 | |
| 
 | |
| /* format importer hook */
 | |
| 	int BPY_call_importloader(const char *name);
 | |
| //
 | |
| //	void BPY_spacescript_do_pywin_draw( struct SpaceScript *sc );
 | |
| //	void BPY_spacescript_do_pywin_event( struct SpaceScript *sc,
 | |
| //					     unsigned short event, short val, char ascii );
 | |
| //	void BPY_free_finished_script( struct Script *script );
 | |
| //	void BPY_scripts_clear_pyobjects( void );
 | |
| //
 | |
| //	void error_pyscript( void );
 | |
| 	void BPY_DECREF(void *pyob_ptr);	/* Py_DECREF() */
 | |
| 	void BPY_set_context(struct bContext *C);
 | |
| /* void BPY_Err_Handle(struct Text *text); */
 | |
| /* int BPY_spacetext_is_pywin(struct SpaceText *st); */
 | |
| 	void BPY_load_user_modules(struct bContext *C);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }				/* extern "C" */
 | |
| #endif
 | |
| 
 | |
| #endif  /* BPY_EXTERN_H */
 |