Revert to master - those changes are globally valid, but remain incomplete,
[blender.git] / source / blender / makesrna / intern / rna_main_api.c
index 8b5ed66e21754eb07b605a2400cfeeb89dbd5dfc..5a0da0b76517fa9c2ac9f010d1c27c908703fabb 100644 (file)
@@ -36,6 +36,7 @@
 #include "DNA_ID.h"
 #include "DNA_modifier_types.h"
 #include "DNA_space_types.h"
+#include "DNA_object_types.h"
 
 #include "BLI_utildefines.h"
 #include "BLI_path_util.h"
@@ -88,7 +89,6 @@
 #include "DNA_lamp_types.h"
 #include "DNA_material_types.h"
 #include "DNA_mesh_types.h"
-#include "DNA_object_types.h"
 #include "DNA_speaker_types.h"
 #include "DNA_sound_types.h"
 #include "DNA_text_types.h"
 
 #include "ED_screen.h"
 
-#include "BLF_translation.h"
+#include "BLT_translation.h"
 
 #ifdef WITH_PYTHON
 #  include "BPY_extern.h"
@@ -352,12 +352,17 @@ static Image *rna_Main_images_new(Main *bmain, const char *name, int width, int
        id_us_min(&image->id);
        return image;
 }
-static Image *rna_Main_images_load(Main *bmain, ReportList *reports, const char *filepath)
+static Image *rna_Main_images_load(Main *bmain, ReportList *reports, const char *filepath, int check_existing)
 {
        Image *ima;
 
        errno = 0;
-       ima = BKE_image_load(bmain, filepath);
+       if (check_existing) {
+               ima = BKE_image_load_exists(filepath);
+       }
+       else {
+               ima = BKE_image_load(bmain, filepath);
+       }
 
        if (!ima) {
                BKE_reportf(reports, RPT_ERROR, "Cannot read '%s': %s", filepath,
@@ -436,12 +441,17 @@ static void rna_Main_metaballs_remove(Main *bmain, ReportList *reports, PointerR
        }
 }
 
-static VFont *rna_Main_fonts_load(Main *bmain, ReportList *reports, const char *filepath)
+static VFont *rna_Main_fonts_load(Main *bmain, ReportList *reports, const char *filepath, int check_existing)
 {
        VFont *font;
-
        errno = 0;
-       font = BKE_vfont_load(bmain, filepath);
+
+       if (check_existing) {
+               font = BKE_vfont_load_exists(bmain, filepath);
+       }
+       else {
+               font = BKE_vfont_load(bmain, filepath);
+       }
 
        if (!font)
                BKE_reportf(reports, RPT_ERROR, "Cannot read '%s': %s", filepath,
@@ -483,12 +493,13 @@ static void rna_Main_textures_remove(Main *bmain, ReportList *reports, PointerRN
        }
 }
 
-static Brush *rna_Main_brushes_new(Main *bmain, const char *name)
+static Brush *rna_Main_brushes_new(Main *bmain, const char *name, int mode)
 {
-       Brush *brush = BKE_brush_add(bmain, name);
+       Brush *brush = BKE_brush_add(bmain, name, mode);
        id_us_min(&brush->id);
        return brush;
 }
+
 static void rna_Main_brushes_remove(Main *bmain, ReportList *reports, PointerRNA *brush_ptr)
 {
        Brush *brush = brush_ptr->data;
@@ -552,9 +563,17 @@ static void rna_Main_speakers_remove(Main *bmain, ReportList *reports, PointerRN
        }
 }
 
-static bSound *rna_Main_sounds_load(Main *bmain, const char *name)
+static bSound *rna_Main_sounds_load(Main *bmain, const char *name, int check_existing)
 {
-       bSound *sound = BKE_sound_new_file(bmain, name);
+       bSound *sound;
+
+       if (check_existing) {
+               sound = BKE_sound_new_file_exists(bmain, name);
+       }
+       else {
+               sound = BKE_sound_new_file(bmain, name);
+       }
+
        id_us_min(&sound->id);
        return sound;
 }
@@ -674,12 +693,18 @@ static void rna_Main_palettes_remove(Main *bmain, ReportList *reports, PointerRN
        }
 }
 
-static MovieClip *rna_Main_movieclip_load(Main *bmain, ReportList *reports, const char *filepath)
+static MovieClip *rna_Main_movieclip_load(Main *bmain, ReportList *reports, const char *filepath, int check_existing)
 {
        MovieClip *clip;
 
        errno = 0;
-       clip = BKE_movieclip_file_add(bmain, filepath);
+
+       if (check_existing) {
+               clip = BKE_movieclip_file_add_exists(bmain, filepath);
+       }
+       else {
+               clip = BKE_movieclip_file_add(bmain, filepath);
+       }
 
        if (!clip)
                BKE_reportf(reports, RPT_ERROR, "Cannot read '%s': %s", filepath,
@@ -1206,6 +1231,7 @@ void RNA_def_main_images(BlenderRNA *brna, PropertyRNA *cprop)
        RNA_def_function_ui_description(func, "Load a new image into the main database");
        parm = RNA_def_string_file_path(func, "filepath", "File Path", 0, "", "path of the file to load");
        RNA_def_property_flag(parm, PROP_REQUIRED);
+       RNA_def_boolean(func, "check_existing", false, "", "Using existing data-block if this file is already loaded");
        /* return type */
        parm = RNA_def_pointer(func, "image", "Image", "", "New image datablock");
        RNA_def_function_return(func, parm);
@@ -1350,6 +1376,7 @@ void RNA_def_main_fonts(BlenderRNA *brna, PropertyRNA *cprop)
        RNA_def_function_ui_description(func, "Load a new font into the main database");
        parm = RNA_def_string_file_path(func, "filepath", "File Path", 0, "", "path of the font to load");
        RNA_def_property_flag(parm, PROP_REQUIRED);
+       RNA_def_boolean(func, "check_existing", false, "", "Using existing data-block if this file is already loaded");
        /* return type */
        parm = RNA_def_pointer(func, "vfont", "VectorFont", "", "New font datablock");
        RNA_def_function_return(func, parm);
@@ -1422,6 +1449,7 @@ void RNA_def_main_brushes(BlenderRNA *brna, PropertyRNA *cprop)
        RNA_def_function_ui_description(func, "Add a new brush to the main database");
        parm = RNA_def_string(func, "name", "Brush", 0, "", "New name for the datablock");
        RNA_def_property_flag(parm, PROP_REQUIRED);
+       parm = RNA_def_enum(func, "mode", object_mode_items, OB_MODE_TEXTURE_PAINT, "", "Paint Mode for the new brush");
        /* return type */
        parm = RNA_def_pointer(func, "brush", "Brush", "", "New brush datablock");
        RNA_def_function_return(func, parm);
@@ -1612,6 +1640,7 @@ void RNA_def_main_sounds(BlenderRNA *brna, PropertyRNA *cprop)
        RNA_def_function_ui_description(func, "Add a new sound to the main database from a file");
        parm = RNA_def_string_file_path(func, "filepath", "Path", FILE_MAX, "", "path for the datablock");
        RNA_def_property_flag(parm, PROP_REQUIRED);
+       RNA_def_boolean(func, "check_existing", false, "", "Using existing data-block if this file is already loaded");
        /* return type */
        parm = RNA_def_pointer(func, "sound", "Sound", "", "New text datablock");
        RNA_def_function_return(func, parm);
@@ -1835,6 +1864,7 @@ void RNA_def_main_movieclips(BlenderRNA *brna, PropertyRNA *cprop)
        RNA_def_function_ui_description(func, "Add a new movie clip to the main database from a file");
        parm = RNA_def_string_file_path(func, "filepath", "Path", FILE_MAX, "", "path for the datablock");
        RNA_def_property_flag(parm, PROP_REQUIRED);
+       RNA_def_boolean(func, "check_existing", false, "", "Using existing data-block if this file is already loaded");
        /* return type */
        parm = RNA_def_pointer(func, "clip", "MovieClip", "", "New movie clip datablock");
        RNA_def_function_return(func, parm);