Merge from 2.5 rev 20647 through 20776.
authorChingiz Dyussenov <chingiz.ds@gmail.com>
Wed, 10 Jun 2009 11:21:17 +0000 (11:21 +0000)
committerChingiz Dyussenov <chingiz.ds@gmail.com>
Wed, 10 Jun 2009 11:21:17 +0000 (11:21 +0000)
1  2 
source/blender/makesrna/intern/rna_mesh.c
source/blender/python/intern/bpy_interface.c

index b330bf277d10f125245cce8ed319db03e924724f,e58b3c51fec473699dbc64c4814abb1803b409af..a071a79230ec9e9250e416b6ac73be51e255acc7
@@@ -771,7 -771,7 +771,7 @@@ static void rna_def_mtface(BlenderRNA *
  
        prop= RNA_def_property(srna, "image", PROP_POINTER, PROP_NONE);
        RNA_def_property_pointer_sdna(prop, NULL, "tpage");
-       RNA_def_property_pointer_funcs(prop, NULL, "rna_TextureFace_image_set");
+       RNA_def_property_pointer_funcs(prop, NULL, "rna_TextureFace_image_set", NULL);
        RNA_def_property_flag(prop, PROP_EDITABLE);
        RNA_def_property_ui_text(prop, "Image", "");
  
@@@ -1044,7 -1044,6 +1044,7 @@@ static void rna_def_mesh(BlenderRNA *br
  {
        StructRNA *srna;
        PropertyRNA *prop;
 +      FunctionRNA *func;
  
        srna= RNA_def_struct(brna, "Mesh", "ID");
        RNA_def_struct_ui_text(srna, "Mesh", "Mesh datablock to define geometric surfaces.");
        RNA_def_property_ui_text(prop, "Shape Keys", "");
  
        rna_def_texmat_common(srna, "rna_Mesh_texspace_editable");
 +
 +      func= RNA_def_function(srna, "copy", "RNA_api_mesh_copy");
 +      RNA_def_function_ui_description(func, "Copy mesh data.");
 +      prop= RNA_def_pointer(func, "src", "Mesh", "", "A mesh to copy data from.");
 +      RNA_def_property_flag(prop, PROP_REQUIRED);
 +      /*
 +      prop= RNA_def_pointer(func, "mesh", "Mesh", "", "A new mesh.");
 +      RNA_def_function_return(func, prop);
 +      */
  }
  
  void RNA_def_mesh(BlenderRNA *brna)
index 147358776bcbb256501241b91cc587dbe0e81c9b,7b3a67ebff5a570b410b4ed4071ee2ab74d18c4f..49cc4d678e55d5b62f2a10255c96274bec1b2622
@@@ -19,6 -19,7 +19,7 @@@
  #include "bpy_rna.h"
  #include "bpy_operator.h"
  #include "bpy_ui.h"
+ #include "bpy_util.h"
  
  #include "DNA_anim_types.h"
  #include "DNA_space_types.h"
@@@ -35,8 -36,6 +36,8 @@@
  
  #include "BPY_extern.h"
  
 +static void bpy_init_syspath();
 +
  void BPY_free_compiled_text( struct Text *text )
  {
        if( text->compiled ) {
@@@ -128,14 -127,14 +129,14 @@@ void BPY_start_python( int argc, char *
        /* Initialize thread support (also acquires lock) */
        PyEval_InitThreads();
        
 -      
        /* bpy.* and lets us import it */
        bpy_init_modules(); 
  
 +      /* init sys.path */
 +      bpy_init_syspath();
        
        py_tstate = PyGILState_GetThisThreadState();
        PyEval_ReleaseThread(py_tstate);
 -      
  }
  
  void BPY_end_python( void )
        return;
  }
  
 +void syspath_append(char *dirname)
 +{
 +      PyObject *mod_sys= NULL, *dict= NULL, *path= NULL, *dir= NULL;
 +      short ok=1;
 +
 +      mod_sys = PyImport_ImportModule( "sys" );       /* new ref */
 +      
 +      if (mod_sys) {
 +              dict = PyModule_GetDict( mod_sys );     /* borrowed ref */
 +              path = PyDict_GetItemString( dict, "path" );    /* borrowed ref */
 +              if ( !PyList_Check( path ) ) {
 +                      ok = 0;
 +              }
 +      } else {
 +              /* cant get the sys module */
 +              /* PyErr_Clear(); is called below */
 +              ok = 0;
 +      }
 +
 +#if PY_MAJOR_VERSION >= 3
 +      dir = PyUnicode_FromString( dirname );
 +#else
 +      dir = PyString_FromString( dirname );
 +#endif
 +      
 +      if (ok && PySequence_Contains(path, dir)==0) { /* Only add if we need to */
 +              if (PyList_Append( path, dir ) != 0) /* decref below */
 +                      ok = 0; /* append failed */
 +      }
 +      
 +      if( (ok==0) || PyErr_Occurred(  ) )
 +              fprintf(stderr, "Warning: could import or build sys.path\n" );
 +      
 +      PyErr_Clear();
 +      Py_DECREF( dir );
 +      Py_XDECREF( mod_sys );
 +}
 +
 +/* Adds bpymodules to sys.path */
 +static void bpy_init_syspath()
 +{
 +      char *dir;
 +      char mod_dir[FILE_MAX];
 +
 +      // make path to [home]/scripts/bpymodules
 +      dir = BLI_gethome_folder("scripts");
 +      BLI_make_file_string("/", mod_dir, dir, "bpymodules");
 +
 +      if (BLI_exists(mod_dir)) {
 +              syspath_append(mod_dir);
 +              fprintf(stderr, "'%s' has been added to sys.path\n", mod_dir);
 +      }
 +}
 +
  /* Can run a file or text block */
  int BPY_run_python_script( bContext *C, const char *fn, struct Text *text )
  {