Filling in branch from trunk
[blender.git] / source / blender / python / BPY_extern.h
1 /*
2  * $Id$
3  *
4  * ***** BEGIN GPL/BL DUAL LICENSE BLOCK *****
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version. The Blender
10  * Foundation also sells licenses for use in proprietary software under
11  * the Blender License.  See http://www.blender.org/BL/ for information
12  * about this.
13  *
14  * This program is distributed in the hope that it will be useful,
15  * but WITHOUT ANY WARRANTY; without even the implied warranty of
16  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17  * GNU General Public License for more details.
18  *
19  * You should have received a copy of the GNU General Public License
20  * along with this program; if not, write to the Free Software Foundation,
21  * Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
22  *
23  * The Original Code is Copyright (C) 2001-2002 by NaN Holding BV.
24  * All rights reserved.
25  *
26  * The Original Code was in: source/blender/bpython/include/BPY_extern.h
27  *
28  * Contributor(s): Michel Selten, Willian P. Germano, Chris Keith
29  *
30  * ***** END GPL/BL DUAL LICENSE BLOCK *****
31  */
32
33 #ifndef BPY_EXTERN_H
34 #define BPY_EXTERN_H
35
36 extern char bprogname[];        /* holds a copy of argv[0], from creator.c */
37
38 struct Text; /* defined in DNA_text_types.h */
39 struct ID; /* DNA_ID.h */
40 struct Object; /* DNA_object_types.h */
41 struct IpoDriver; /* DNA_curve_types.h */
42 struct ScriptLink; /* DNA_scriptlink_types.h */
43 struct ListBase; /* DNA_listBase.h */
44 struct SpaceText; /* DNA_space_types.h */
45 struct SpaceScript; /* DNA_space_types.h */
46 struct Script; /* BPI_script.h */
47 struct ScrArea; /* DNA_screen_types.h */
48 struct bScreen; /* DNA_screen_types.h */
49 struct bConstraint; /* DNA_constraint_types.h */
50 struct bPythonConstraint; /* DNA_constraint_types.h */
51 struct bConstraintOb; /* DNA_constraint_types.h */
52 struct bConstraintTarget; /* DNA_constraint_types.h*/
53 #ifdef __cplusplus
54 extern "C" {
55 #endif
56
57         /*These two next functions are important for making sure the Draw module
58           works correctly.  Before calling any gui callback using the Draw module,
59           the following code must be executed:
60           
61                 if (some_drawspace_pylist) {
62                         BPy_Set_DrawButtonsList(some_drawspace_pylist->but_refs);
63                         BPy_Free_DrawButtonsList();
64                 }
65                 some_drawspace_pylist = PyList_New(0);
66                 BPy_Set_DrawButtonsList(some_drawspace_pylist);
67
68       Also, BPy_Free_DrawButtonsList() must be called as necassary when a drawspace
69       with python callbacks is destroyed.
70       
71       This is necassary to avoid blender buttons storing invalid pointers to freed
72       python data.*/
73         void BPy_Set_DrawButtonsList(void *list);
74         void BPy_Free_DrawButtonsList(void);
75         
76         void BPY_pyconstraint_eval(struct bPythonConstraint *con, struct bConstraintOb *cob, struct ListBase *targets);
77         void BPY_pyconstraint_settings(void *arg1, void *arg2);
78         void BPY_pyconstraint_target(struct bPythonConstraint *con, struct bConstraintTarget *ct);
79         void BPY_pyconstraint_update(struct Object *owner, struct bConstraint *con);
80         int BPY_is_pyconstraint(struct Text *text);
81         
82         void BPY_start_python( int argc, char **argv );
83         void BPY_end_python( void );
84         void BPY_post_start_python( void );
85         void init_syspath( int first_time );
86         void syspath_append( char *dir );
87
88         int BPY_Err_getLinenumber( void );
89         const char *BPY_Err_getFilename( void );
90
91         int BPY_txt_do_python_Text( struct Text *text );
92         int BPY_menu_do_python( short menutype, int event );
93         void BPY_run_python_script( char *filename );
94         void BPY_free_compiled_text( struct Text *text );
95
96         void BPY_clear_bad_scriptlinks( struct Text *byebye );
97         int BPY_has_onload_script( void );
98         void BPY_do_all_scripts( short event );
99         int BPY_check_all_scriptlinks( struct Text *text );
100         void BPY_do_pyscript( struct ID *id, short event );
101         void BPY_free_scriptlink( struct ScriptLink *slink );
102         void BPY_copy_scriptlink( struct ScriptLink *scriptlink );
103
104         int BPY_is_spacehandler(struct Text *text, char spacetype);
105         int BPY_del_spacehandler(struct Text *text, struct ScrArea *sa);
106         int BPY_add_spacehandler(struct Text *txt, struct ScrArea *sa,char spacetype);
107         int BPY_has_spacehandler(struct Text *text, struct ScrArea *sa);
108         void BPY_screen_free_spacehandlers(struct bScreen *sc);
109         int BPY_do_spacehandlers(struct ScrArea *sa, unsigned short event,
110                 unsigned short space_event);
111
112         void BPY_pydriver_update(void);
113         float BPY_pydriver_eval(struct IpoDriver *driver);
114         struct Object **BPY_pydriver_get_objects(struct IpoDriver *driver);
115
116         int BPY_button_eval(char *expr, double *value);
117
118 /* format importer hook */
119         int BPY_call_importloader( char *name );
120
121         void BPY_spacescript_do_pywin_draw( struct SpaceScript *sc );
122         void BPY_spacescript_do_pywin_event( struct SpaceScript *sc,
123                                              unsigned short event, short val, char ascii );
124         void BPY_clear_script( struct Script *script );
125         void BPY_free_finished_script( struct Script *script );
126
127 /* void BPY_Err_Handle(struct Text *text); */
128 /* void BPY_clear_bad_scriptlink(struct ID *id, struct Text *byebye); */
129 /* void BPY_clear_bad_scriptlist(struct ListBase *, struct Text *byebye); */
130 /* int BPY_spacetext_is_pywin(struct SpaceText *st); */
131
132 #ifdef __cplusplus
133 }                               /* extern "C" */
134 #endif
135
136 #endif  /* BPY_EXTERN_H */