Merging r39029 through r39049 from trunk into soc-2011-tomato
authorSergey Sharybin <sergey.vfx@gmail.com>
Fri, 5 Aug 2011 06:47:37 +0000 (06:47 +0000)
committerSergey Sharybin <sergey.vfx@gmail.com>
Fri, 5 Aug 2011 06:47:37 +0000 (06:47 +0000)
source/blender/blenloader/BLO_readfile.h
source/blender/blenloader/intern/readfile.c
source/blender/editors/space_file/file_ops.c
source/blender/editors/space_sequencer/sequencer_edit.c
source/blender/makesrna/intern/rna_access.c
source/blender/python/intern/bpy_library.c
source/blender/windowmanager/intern/wm_operators.c
source/gameengine/Converter/KX_BlenderSceneConverter.cpp

index 85d4b936c518fc6f47eb66611b726cbb574b14cd..479314777284ac5639c098c919f00f844dff0cd8 100644 (file)
@@ -211,7 +211,16 @@ int BLO_has_bfile_extension(char *str);
  */
 int BLO_is_a_library(const char *path, char *dir, char *group);
 
-struct Main* BLO_library_append_begin(const struct bContext *C, BlendHandle** bh, const char *filepath);
+
+/**
+ * Initialize the BlendHandle for appending or linking library data.
+ *
+ * @param mainvar The current main database eg G.main or CTX_data_main(C).
+ * @param bh A blender file handle as returned by BLO_blendhandle_from_file or BLO_blendhandle_from_memory.
+ * @param filepath Used for relative linking, copied to the lib->name
+ * @return the library Main, to be passed to BLO_library_append_named_part as mainl.
+ */
+struct Main* BLO_library_append_begin(struct Main *mainvar, BlendHandle** bh, const char *filepath);
 
 
 /**
@@ -243,11 +252,6 @@ void BLO_library_append_end(const struct bContext *C, struct Main *mainl, BlendH
 
 void *BLO_library_read_struct(struct FileData *fd, struct BHead *bh, const char *blockname);
 
-/* deprecated */
-#if 1
-void BLO_script_library_append(BlendHandle **bh, char *dir, char *name, int idcode, short flag, struct Main *mainvar, struct Scene *scene, struct ReportList *reports);
-#endif
-
 BlendFileData* blo_read_blendafterruntime(int file, char *name, int actualsize, struct ReportList *reports);
 
 #ifdef __cplusplus
index c36657c7ffd63865b42477c6f73f2686d54e2b03..4a1441cf1d57fd90794f64ae9bdaeb09e3f33be7 100644 (file)
@@ -13126,9 +13126,8 @@ static void append_id_part(FileData *fd, Main *mainvar, ID *id, ID **id_r)
 
 /* common routine to append/link something from a library */
 
-static Main* library_append_begin(const bContext *C, FileData **fd, const char *filepath)
+static Main* library_append_begin(Main *mainvar, FileData **fd, const char *filepath)
 {
-       Main *mainvar= CTX_data_main(C);
        Main *mainl;
 
        /* make mains */
@@ -13144,10 +13143,10 @@ static Main* library_append_begin(const bContext *C, FileData **fd, const char *
        return mainl;
 }
 
-Main* BLO_library_append_begin(const bContext *C, BlendHandle** bh, const char *filepath)
+Main* BLO_library_append_begin(Main *mainvar, BlendHandle** bh, const char *filepath)
 {
        FileData *fd= (FileData*)(*bh);
-       return library_append_begin(C, &fd, filepath);
+       return library_append_begin(mainvar, &fd, filepath);
 }
 
 
index 77524c7e117496d8a93404df1f6f6a2b5bacdfef..d4253495e976e2e000e2296c3ec6835787758efa 100644 (file)
@@ -64,6 +64,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <stdio.h>
+#include <ctype.h>
 
 /* for events */
 #define NOTACTIVEFILE                  0
@@ -1079,8 +1080,18 @@ static void file_expand_directory(bContext *C)
                }
 
 #ifdef WIN32
-               if (sfile->params->dir[0] == '\0')
+               if (sfile->params->dir[0] == '\0') {
                        get_default_root(sfile->params->dir);
+               }
+               /* change "C:" --> "C:\", [#28102] */
+               else if (   (isalpha(sfile->params->dir[0]) &&
+                           (sfile->params->dir[1] == ':')) &&
+                           (sfile->params->dir[2] == '\0')
+
+               ) {
+                       sfile->params->dir[2]= '\\';
+                       sfile->params->dir[3]= '\0';
+               }
 #endif
        }
 }
index b7a7b6b5412e9c8b3bff5598acd9acbb0a5c137e..6a69d32d307fb83b11116a23eebaa7876c848de3 100644 (file)
@@ -1785,7 +1785,7 @@ static int sequencer_separate_images_exec(bContext *C, wmOperator *op)
                                se = give_stripelem(seq, cfra);
 
                                seq_new= seq_dupli_recursive(scene, scene, seq, SEQ_DUPE_UNIQUE_NAME);
-                               BLI_addtail(&ed->seqbase, seq_new);
+                               BLI_addtail(ed->seqbasep, seq_new);
 
                                seq_new->start= start_ofs;
                                seq_new->type= SEQ_IMAGE;
@@ -1839,7 +1839,6 @@ void SEQUENCER_OT_images_separate(wmOperatorType *ot)
        ot->description="On image sequences strips, it return a strip for each image";
        
        /* api callbacks */
-       ot->invoke= WM_operator_props_popup;
        ot->exec= sequencer_separate_images_exec;
        ot->poll= sequencer_edit_poll;
        
index e71be8c153e89fbc9366c9d337133ceb74789005..f1056c86a4cb1d0c9380bccdb1a5b3f405497611 100644 (file)
@@ -4007,10 +4007,13 @@ void RNA_string_get(PointerRNA *ptr, const char *name, char *value)
 {
        PropertyRNA *prop= RNA_struct_find_property(ptr, name);
 
-       if(prop)
+       if(prop) {
                RNA_property_string_get(ptr, prop, value);
-       else
+       }
+       else {
                printf("RNA_string_get: %s.%s not found.\n", ptr->type->identifier, name);
+               value[0]= '\0';
+       }
 }
 
 char *RNA_string_get_alloc(PointerRNA *ptr, const char *name, char *fixedbuf, int fixedlen)
index 85bffb5a8cc056196c531fb6615d2c1de41cdbf8..4ce3e0356e27600ef00f1cb9fb79fdc9e951cb40 100644 (file)
@@ -39,6 +39,7 @@
 #include "BKE_library.h"
 #include "BKE_idcode.h"
 #include "BKE_report.h"
+#include "BKE_context.h"
 
 #include "BLI_utildefines.h"
 #include "BLI_string.h"
@@ -317,7 +318,7 @@ static PyObject *bpy_lib_exit(BPy_Library *self, PyObject *UNUSED(args))
        flag_all_listbases_ids(LIB_PRE_EXISTING, 1);
 
        /* here appending/linking starts */
-       mainl= BLO_library_append_begin(BPy_GetContext(), &(self->blo_handle), self->relpath);
+       mainl= BLO_library_append_begin(CTX_data_main(BPy_GetContext()), &(self->blo_handle), self->relpath);
 
        {
                int i= 0, code;
index 2c337e7c7f7b9e6c8c02965c64d01cc7fd7288aa..d3138f33ad74c94422635ea77ee6a4f5b489cadb 100644 (file)
@@ -1621,7 +1621,6 @@ static int wm_link_append_exec(bContext *C, wmOperator *op)
        int idcode, totfiles=0;
        short flag;
 
-       name[0] = '\0';
        RNA_string_get(op->ptr, "filename", name);
        RNA_string_get(op->ptr, "directory", dir);
 
@@ -1690,7 +1689,7 @@ static int wm_link_append_exec(bContext *C, wmOperator *op)
        flag_all_listbases_ids(LIB_PRE_EXISTING, 1);
 
        /* here appending/linking starts */
-       mainl = BLO_library_append_begin(C, &bh, libname);
+       mainl = BLO_library_append_begin(bmain, &bh, libname);
        if(totfiles == 0) {
                BLO_library_append_named_part_ex(C, mainl, &bh, name, idcode, flag);
        }
index 58089cc4b2d2503cba979ec0cbaa4bf8280eb4c7..b04a0d24e7820b265ba08d4f57a773ff0f42feb4 100644 (file)
@@ -950,7 +950,6 @@ bool KX_BlenderSceneConverter::LinkBlendFilePath(const char *path, char *group,
 
 bool KX_BlenderSceneConverter::LinkBlendFile(BlendHandle *bpy_openlib, const char *path, char *group, KX_Scene *scene_merge, char **err_str, short options)
 {
-       bContext *C;
        Main *main_newlib; /* stored as a dynamic 'main' until we free it */
        Main *main_tmp= NULL; /* created only for linking, then freed */
        LinkNode *names = NULL;
@@ -981,12 +980,10 @@ bool KX_BlenderSceneConverter::LinkBlendFile(BlendHandle *bpy_openlib, const cha
        }
        
        main_newlib= (Main *)MEM_callocN( sizeof(Main), "BgeMain");
-       C= CTX_create();
-       CTX_data_main_set(C, main_newlib);
        BKE_reports_init(&reports, RPT_STORE);  
 
        /* here appending/linking starts */
-       main_tmp = BLO_library_append_begin(C, &bpy_openlib, (char *)path);
+       main_tmp = BLO_library_append_begin(main_newlib, &bpy_openlib, (char *)path);
 
        int totnames_dummy;
        names = BLO_blendhandle_get_datablock_names( bpy_openlib, idcode, &totnames_dummy);
@@ -1000,11 +997,11 @@ bool KX_BlenderSceneConverter::LinkBlendFile(BlendHandle *bpy_openlib, const cha
        }
        BLI_linklist_free(names, free); /* free linklist *and* each node's data */
        
-       BLO_library_append_end(C, main_tmp, &bpy_openlib, idcode, flag);
+       BLO_library_append_end(NULL, main_tmp, &bpy_openlib, idcode, flag);
 
        /* now do another round of linking for Scenes so all actions are properly loaded */
        if (idcode==ID_SCE && options & LIB_LOAD_LOAD_ACTIONS) {
-               main_tmp = BLO_library_append_begin(C, &bpy_openlib, (char *)path);
+               main_tmp = BLO_library_append_begin(main_newlib, &bpy_openlib, (char *)path);
 
                int totnames_dummy;
                names = BLO_blendhandle_get_datablock_names( bpy_openlib, ID_AC, &totnames_dummy);
@@ -1018,12 +1015,11 @@ bool KX_BlenderSceneConverter::LinkBlendFile(BlendHandle *bpy_openlib, const cha
                }
                BLI_linklist_free(names, free); /* free linklist *and* each node's data */
        
-               BLO_library_append_end(C, main_tmp, &bpy_openlib, ID_AC, flag);
+               BLO_library_append_end(NULL, main_tmp, &bpy_openlib, ID_AC, flag);
        }
        
        BLO_blendhandle_close(bpy_openlib);
-       
-       CTX_free(C);
+
        BKE_reports_clear(&reports);
        /* done linking */