2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								/**
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  $ 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 , 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-12 13:34:04 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								 *  Inc . ,  51  Franklin  Street ,  Fifth  Floor ,  Boston ,  MA  02110 - 1301 ,  USA . 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  Contributor ( s ) :  Campbell  Barton 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  * * * * *  END  GPL  LICENSE  BLOCK  * * * * * 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-07-19 13:32:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								/* Note, this module is not to be used directly by the user.
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  its  accessed  from  blender  with  bpy . __ops__ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								 *  */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "bpy_operator.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-04-01 12:43:07 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "bpy_operator_wrap.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-12-25 10:48:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "bpy_rna.h" /* for setting arg props only - pyrna_py_to_prop() */ 
  
						 
					
						
							
								
									
										
										
										
											2009-04-19 13:37:59 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "bpy_util.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-23 01:02:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "RNA_enum_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								# include  "WM_api.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "WM_types.h" 
  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								# include  "MEM_guardedalloc.h" 
  
						 
					
						
							
								
									
										
										
										
											2009-01-02 07:54:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# include  "BKE_report.h" 
  
						 
					
						
							
								
									
										
										
										
											2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-13 23:25:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * pyop_poll ( PyObject  * UNUSED ( self ) ,  PyObject  * args )  
						 
					
						
							
								
									
										
										
										
											2010-09-01 11:16:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									wmOperatorType  * ot ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									char 		* opname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyObject 	* context_dict =  NULL ;  /* optional args */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyObject 	* context_dict_back ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-04 12:59:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									char 		* context_str =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-01 11:16:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PyObject 	* ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-04 12:59:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  context =  WM_OP_EXEC_DEFAULT ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-09-01 11:16:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// XXX Todo, work out a better solution for passing on context, could make a tuple from self and pack the name and Context into it...
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bContext  * C  =  BPy_GetContext ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2010-11-04 12:59:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! PyArg_ParseTuple ( args ,  " s|Os:_bpy.ops.poll " ,  & opname ,  & context_dict ,  & context_str ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-01 11:16:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot =  WM_operatortype_find ( opname ,  TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ot  = =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyErr_Format ( PyExc_SystemError ,  " Polling operator  \" bpy.ops.%s \"  error, could not be found " ,  opname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-04 12:59:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( context_str )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										if ( RNA_enum_value_from_id ( operator_context_items ,  context_str ,  & context ) = = 0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											char  * enum_str =  BPy_enum_as_string ( operator_context_items ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyErr_Format ( PyExc_TypeError ,  " Calling operator  \" bpy.ops.%s.poll \"  error, expected a string enum in (%.200s) " ,  opname ,  enum_str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											MEM_freeN ( enum_str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2010-11-07 04:46:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( context_dict = = NULL  | |  context_dict = = Py_None )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-01 11:16:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										context_dict =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-07 04:46:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if  ( ! PyDict_Check ( context_dict ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyErr_Format ( PyExc_TypeError ,  " Calling operator  \" bpy.ops.%s.poll \"  error, custom context expected a dict or None, got a %.200s " ,  opname ,  Py_TYPE ( context_dict ) - > tp_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-01 11:16:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									context_dict_back =  CTX_py_dict_get ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									CTX_py_dict_set ( C ,  ( void  * ) context_dict ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Py_XINCREF ( context_dict ) ;  /* so we done loose it */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* main purpose of thsi function */ 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-04 12:59:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ret =  WM_operator_poll_context ( ( bContext * ) C ,  ot ,  context )  ?  Py_True  :  Py_False ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-01 11:16:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* restore with original context dict, probably NULL but need this for nested operator calls */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Py_XDECREF ( context_dict ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									CTX_py_dict_set ( C ,  ( void  * ) context_dict_back ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Py_INCREF ( ret ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ret ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
									
										
										
											
												python operators (in bpy_opwrapper.*)
This means you can define an operator in python that is called from C or Python - like any other operator.
Python functions for invoke and exec can be registered with an operator name.
keywords are read from the python exec() function, then used to create operator properties. The default python values are used to set the property type and defaults.
def exec(size=2.0, text="blah"): ...
is equivalent to...
prop = RNA_def_property(ot->srna, "size", PROP_FLOAT, PROP_NONE);
RNA_def_property_float_default(prop, 2.0f);
prop = RNA_def_property(ot->srna, "size", PROP_STRING, PROP_NONE);
RNA_def_property_string_default(prop, "blah");
TODO -
* make use of events
* return OPERATOR_CANCELLED/OPERATOR_FINISHED.. etc
* add support for array args
* more testing
											 
										 
										
											2008-12-27 14:52:49 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-13 23:25:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * pyop_call ( PyObject  * UNUSED ( self ) ,  PyObject  * args )  
						 
					
						
							
								
									
										
										
										
											2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2008-12-25 10:48:36 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									wmOperatorType  * ot ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  error_val  =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PointerRNA  ptr ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-23 01:02:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									int  operator_ret =  OPERATOR_CANCELLED ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:10:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-09-03 22:37:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									char 		* opname ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:10:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									char 		* context_str =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-03 22:37:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PyObject 	* kw =  NULL ;  /* optional args */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PyObject 	* context_dict =  NULL ;  /* optional args */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyObject 	* context_dict_back ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-03 22:37:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* note that context is an int, python does the conversion in this case */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  context =  WM_OP_EXEC_DEFAULT ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-19 13:32:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-03-14 13:43:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									// XXX Todo, work out a better solution for passing on context, could make a tuple from self and pack the name and Context into it...
 
							 
						 
					
						
							
								
									
										
										
										
											2009-05-25 13:48:44 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									bContext  * C  =  BPy_GetContext ( ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-14 13:43:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:10:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! PyArg_ParseTuple ( args ,  " sO|O!s:_bpy.ops.call " ,  & opname ,  & context_dict ,  & PyDict_Type ,  & kw ,  & context_str ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-19 13:32:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-08-13 14:42:45 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									ot =  WM_operatortype_find ( opname ,  TRUE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-19 13:32:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-26 12:39:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ot  = =  NULL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-01 11:16:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_Format ( PyExc_SystemError ,  " Calling operator  \" bpy.ops.%s \"  error, could not be found " ,  opname ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-26 12:39:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:10:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( context_str )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-12 21:40:46 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( RNA_enum_value_from_id ( operator_context_items ,  context_str ,  & context ) = = 0 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-02-10 11:10:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											char  * enum_str =  BPy_enum_as_string ( operator_context_items ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											PyErr_Format ( PyExc_TypeError ,  " Calling operator  \" bpy.ops.%s \"  error, expected a string enum in (%.200s) " ,  opname ,  enum_str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											MEM_freeN ( enum_str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-07 04:46:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( context_dict = = NULL  | |  context_dict = = Py_None )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										context_dict =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-07 04:46:50 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  if  ( ! PyDict_Check ( context_dict ) )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyErr_Format ( PyExc_TypeError ,  " Calling operator  \" bpy.ops.%s \"  error, custom context expected a dict or None, got a %.200s " ,  opname ,  Py_TYPE ( context_dict ) - > tp_name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									context_dict_back =  CTX_py_dict_get ( C ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									CTX_py_dict_set ( C ,  ( void  * ) context_dict ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Py_XINCREF ( context_dict ) ;  /* so we done loose it */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-11-04 12:59:03 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if ( WM_operator_poll_context ( ( bContext * ) C ,  ot ,  context )  = =  FALSE )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-27 12:21:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										const  char  * msg =  CTX_wm_operator_poll_msg_get ( C ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-23 16:45:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_Format ( PyExc_SystemError ,  " Operator bpy.ops.%.200s.poll() %.200s " ,  opname ,  msg  ?  msg  :  " failed, context is incorrect " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-09-27 12:21:23 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										CTX_wm_operator_poll_msg_set ( C ,  NULL ) ;  /* better set to NULL else it could be used again */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										error_val =  - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-18 10:46:26 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-01-26 20:43:27 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										WM_operator_properties_create_ptr ( & ptr ,  ot ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-23 12:05:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										WM_operator_properties_sanitize ( & ptr ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-03 22:37:09 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if ( kw  & &  PyDict_Size ( kw ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											error_val =  pyrna_pydict_to_props ( & ptr ,  kw ,  0 ,  " Converting py args to operator properties:  " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-19 13:32:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-01-02 07:54:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										if  ( error_val = = 0 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											ReportList  * reports ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-02 07:54:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											reports =  MEM_mallocN ( sizeof ( ReportList ) ,  " wmOperatorReportList " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											BKE_reports_init ( reports ,  RPT_STORE ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-02 07:54:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-23 01:02:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											operator_ret =  WM_operator_call_py ( C ,  ot ,  context ,  & ptr ,  reports ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-02 07:54:38 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											if ( BPy_reports_to_error ( reports ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												error_val  =  - 1 ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-22 09:12:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											/* operator output is nice to have in the terminal/console too */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if ( reports - > list . first )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												char  * report_str =  BKE_reports_string ( reports ,  0 ) ;  /* all reports */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												if ( report_str )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													PySys_WriteStdout ( " %s \n " ,  report_str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
													MEM_freeN ( report_str ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											BKE_reports_clear ( reports ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( ( reports - > flag  &  RPT_FREE )  = =  0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												MEM_freeN ( reports ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-22 09:12:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										WM_operator_properties_free ( & ptr ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-01-01 20:44:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-28 13:03:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								#if 0 
  
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										/* if there is some way to know an operator takes args we should use this */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										{ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											/* no props */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											if  ( kw  ! =  NULL )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												PyErr_Format ( PyExc_AttributeError ,  " Operator  \" %s \"  does not take any args " ,  opname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
												return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
											} 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-28 13:03:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
											WM_operator_name_call ( C ,  opname ,  WM_OP_EXEC_DEFAULT ,  NULL ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										} 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-28 13:03:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								# endif 
  
						 
					
						
							
								
									
										
										
										
											2009-10-29 09:25:11 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* restore with original context dict, probably NULL but need this for nested operator calls */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									Py_XDECREF ( context_dict ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									CTX_py_dict_set ( C ,  ( void  * ) context_dict_back ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-28 13:03:37 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( error_val = = - 1 )  { 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-25 14:17:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-01-23 01:02:53 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									/* return operator_ret as a bpy enum */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  pyrna_enum_bitfield_to_py ( operator_return_items ,  operator_ret ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-13 23:25:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * pyop_as_string ( PyObject  * UNUSED ( self ) ,  PyObject  * args )  
						 
					
						
							
								
									
										
										
										
											2009-09-16 06:02:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									wmOperatorType  * ot ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PointerRNA  ptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									char 		* opname ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyObject 	* kw =  NULL ;  /* optional args */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  all_args  =  1 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									int  error_val =  0 ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-11 10:51:40 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									char  * buf  =  NULL ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-16 06:02:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PyObject  * pybuf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bContext  * C  =  BPy_GetContext ( ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-11-13 11:10:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									if  ( ! PyArg_ParseTuple ( args ,  " s|O!i:_bpy.ops.as_string " ,  & opname ,  & PyDict_Type ,  & kw ,  & all_args ) ) 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-16 06:02:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot =  WM_operatortype_find ( opname ,  TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( ot  = =  NULL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-23 16:45:17 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_Format ( PyExc_SystemError ,  " _bpy.ops.as_string: operator  \" %.200s \" could not be found " ,  opname ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-09-16 06:02:56 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* WM_operator_properties_create(&ptr, opname); */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* Save another lookup */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									RNA_pointer_create ( NULL ,  ot - > srna ,  NULL ,  & ptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( kw  & &  PyDict_Size ( kw ) ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										error_val =  pyrna_pydict_to_props ( & ptr ,  kw ,  0 ,  " Converting py args to operator properties:  " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( error_val = = 0 ) 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										buf =  WM_operator_pystring ( C ,  ot ,  & ptr ,  all_args ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									WM_operator_properties_free ( & ptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if  ( error_val = = - 1 )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( buf )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pybuf =  PyUnicode_FromString ( buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										MEM_freeN ( buf ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									else  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										pybuf =  PyUnicode_FromString ( " " ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  pybuf ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-13 23:25:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * pyop_dir ( PyObject  * UNUSED ( self ) )  
						 
					
						
							
								
									
										
										
										
											2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2009-03-14 13:43:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PyObject  * list  =  PyList_New ( 0 ) ,  * name ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									wmOperatorType  * ot ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									for ( ot =  WM_operatortype_first ( ) ;  ot ;  ot =  ot - > next )  { 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										name  =  PyUnicode_FromString ( ot - > idname ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										PyList_Append ( list ,  name ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
										Py_DECREF ( name ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
									
										
										
										
											2009-03-14 13:43:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  list ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-13 23:25:08 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  PyObject  * pyop_getrna ( PyObject  * UNUSED ( self ) ,  PyObject  * value )  
						 
					
						
							
								
									
										
										
										
											2009-07-26 18:18:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									wmOperatorType  * ot ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PointerRNA  ptr ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									char  * opname =  _PyUnicode_AsString ( value ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									BPy_StructRNA  * pyrna =  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( opname = = NULL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-13 11:10:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_SetString ( PyExc_TypeError ,  " _bpy.ops.get_rna() expects a string argument " ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-26 18:18:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									ot =  WM_operatortype_find ( opname ,  TRUE ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									if ( ot = = NULL )  { 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-13 11:10:29 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										PyErr_Format ( PyExc_KeyError ,  " _bpy.ops.get_rna( \" %s \" ) not found " ,  opname ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-07-26 18:18:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
										return  NULL ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									} 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* type */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									//RNA_pointer_create(NULL, &RNA_Struct, ot->srna, &ptr);
 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									/* XXX - should call WM_operator_properties_free */ 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 16:19:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									WM_operator_properties_create_ptr ( & ptr ,  ot ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2010-11-23 12:05:35 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									WM_operator_properties_sanitize ( & ptr ,  0 ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2009-11-24 16:19:15 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									
							 
						 
					
						
							
								
									
										
										
										
											2009-07-26 18:18:14 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									pyrna =  ( BPy_StructRNA  * ) pyrna_struct_CreatePyObject ( & ptr ) ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									pyrna - > freeptr =  TRUE ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									return  ( PyObject  * ) pyrna ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								}  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-09-09 17:36:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								static  struct  PyMethodDef  bpy_ops_methods [ ]  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ " poll " ,  ( PyCFunction )  pyop_poll ,  METH_VARARGS ,  NULL } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ " call " ,  ( PyCFunction )  pyop_call ,  METH_VARARGS ,  NULL } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ " as_string " ,  ( PyCFunction )  pyop_as_string ,  METH_VARARGS ,  NULL } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ " dir " ,  ( PyCFunction )  pyop_dir ,  METH_NOARGS ,  NULL } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ " get_rna " ,  ( PyCFunction )  pyop_getrna ,  METH_O ,  NULL } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ " macro_define " ,  ( PyCFunction )  PYOP_wrap_macro_define ,  METH_VARARGS ,  NULL } , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									{ NULL ,  NULL ,  0 ,  NULL } 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								static  struct  PyModuleDef  bpy_ops_module  =  {  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									PyModuleDef_HEAD_INIT , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									" _bpy.ops " , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									- 1 , /* multiple "initialization" just copies the module dict. */ 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									bpy_ops_methods , 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
									NULL ,  NULL ,  NULL ,  NULL 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								} ;  
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								PyObject  * BPY_operator_module ( void )  
						 
					
						
							
								
									
										
										
										
											2009-03-21 06:55:30 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
								{  
						 
					
						
							
								
									
										
										
										
											2010-09-09 17:36:54 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									PyObject  * submodule ; 
							 
						 
					
						
							
								
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2010-10-29 22:59:39 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									submodule =  PyModule_Create ( & bpy_ops_module ) ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								
							 
						 
					
						
							
								
									
										
										
										
											2009-07-19 13:32:02 +00:00 
										
									 
								 
							 
							
								
									
										 
								
							 
							
								 
							
							
									return  submodule ; 
							 
						 
					
						
							
								
									
										
										
										
											2008-12-21 08:53:36 +00:00 
										
									 
								 
							 
							
								
							 
							
								 
							
							
								}