[Bf-blender-cvs] [1474cab63e1] workspaces: Remove linkable vs appendable distinction in data-blocks.
Bastien Montagne
noreply at git.blender.org
Sun May 28 19:46:25 CEST 2017
Commit: 1474cab63e1da8567c344b5d14cb82c683daf457
Author: Bastien Montagne
Date: Sun May 28 19:19:02 2017 +0200
Branches: workspaces
https://developer.blender.org/rB1474cab63e1da8567c344b5d14cb82c683daf457
Remove linkable vs appendable distinction in data-blocks.
This is complicating the code for a specific exception, which shall
hopefully be removed later even!
So better to go with a rather small, non-intrusive hack to prevent
linking Workspaces for now, link/append code in Blender is complicated
enough as it is.
===================================================================
M source/blender/blenkernel/BKE_idcode.h
M source/blender/blenkernel/intern/idcode.c
M source/blender/blenkernel/intern/library.c
M source/blender/blenloader/intern/readblenentry.c
M source/blender/blenloader/intern/readfile.c
M source/blender/editors/space_file/filelist.c
M source/blender/editors/space_file/filesel.c
M source/blender/makesdna/DNA_space_types.h
M source/blender/makesrna/intern/rna_space.c
M source/blender/python/intern/bpy_library_load.c
M source/blender/windowmanager/intern/wm_files_link.c
M source/blender/windowmanager/intern/wm_operator_props.c
===================================================================
diff --git a/source/blender/blenkernel/BKE_idcode.h b/source/blender/blenkernel/BKE_idcode.h
index 05912efbdfa..964a49435f1 100644
--- a/source/blender/blenkernel/BKE_idcode.h
+++ b/source/blender/blenkernel/BKE_idcode.h
@@ -37,7 +37,6 @@ const char *BKE_idcode_to_name_plural(short idcode);
const char *BKE_idcode_to_translation_context(short idcode);
short BKE_idcode_from_name(const char *name);
bool BKE_idcode_is_linkable(short idcode);
-bool BKE_idcode_is_appendable(short idcode);
bool BKE_idcode_is_valid(short idcode);
int BKE_idcode_to_idfilter(const short idcode);
diff --git a/source/blender/blenkernel/intern/idcode.c b/source/blender/blenkernel/intern/idcode.c
index 28773223985..17184972fa6 100644
--- a/source/blender/blenkernel/intern/idcode.c
+++ b/source/blender/blenkernel/intern/idcode.c
@@ -47,58 +47,54 @@ typedef struct {
const char *name, *plural;
const char *i18n_context;
-
- bool is_linkable;
- bool is_appendable;
+
+ int flags;
+#define IDTYPE_FLAGS_ISLINKABLE (1 << 0)
} IDType;
-/**
- * \note Plural need to match rna_main.c's MainCollectionDef.
- * \note IDs that are only linkable (non-appendable) aren't used currently and thus poorly tested.
- *
- * \warning Keep it in sync with i18n contexts in BLT_translation.h!
- */
+/* plural need to match rna_main.c's MainCollectionDef */
+/* WARNING! Keep it in sync with i18n contexts in BLT_translation.h */
static IDType idtypes[] = {
- /** ID's directly below must all be in #Main (membership, not order), and be kept in sync with #MAX_LIBARRAY */
- {ID_AC, "Action", "actions", BLT_I18NCONTEXT_ID_ACTION, true, true },
- {ID_AR, "Armature", "armatures", BLT_I18NCONTEXT_ID_ARMATURE, true, true },
- {ID_BR, "Brush", "brushes", BLT_I18NCONTEXT_ID_BRUSH, true, true },
- {ID_CA, "Camera", "cameras", BLT_I18NCONTEXT_ID_CAMERA, true, true },
- {ID_CF, "CacheFile", "cache_files", BLT_I18NCONTEXT_ID_CACHEFILE, true, true },
- {ID_CU, "Curve", "curves", BLT_I18NCONTEXT_ID_CURVE, true, true },
- {ID_GD, "GPencil", "grease_pencil", BLT_I18NCONTEXT_ID_GPENCIL, true, true }, /* rename gpencil */
- {ID_GR, "Group", "groups", BLT_I18NCONTEXT_ID_GROUP, true, true },
- {ID_IM, "Image", "images", BLT_I18NCONTEXT_ID_IMAGE, true, true },
- {ID_IP, "Ipo", "ipos", "", true, true }, /* deprecated */
- {ID_KE, "Key", "shape_keys", BLT_I18NCONTEXT_ID_SHAPEKEY, false, false},
- {ID_LA, "Lamp", "lamps", BLT_I18NCONTEXT_ID_LAMP, true, true },
- {ID_LI, "Library", "libraries", BLT_I18NCONTEXT_ID_LIBRARY, false, false},
- {ID_LS, "FreestyleLineStyle", "linestyles", BLT_I18NCONTEXT_ID_FREESTYLELINESTYLE, true, true },
- {ID_LT, "Lattice", "lattices", BLT_I18NCONTEXT_ID_LATTICE, true, true },
- {ID_MA, "Material", "materials", BLT_I18NCONTEXT_ID_MATERIAL, true, true },
- {ID_MB, "Metaball", "metaballs", BLT_I18NCONTEXT_ID_METABALL, true, true },
- {ID_MC, "MovieClip", "movieclips", BLT_I18NCONTEXT_ID_MOVIECLIP, true, true },
- {ID_ME, "Mesh", "meshes", BLT_I18NCONTEXT_ID_MESH, true, true },
- {ID_MSK, "Mask", "masks", BLT_I18NCONTEXT_ID_MASK, true, true },
- {ID_NT, "NodeTree", "node_groups", BLT_I18NCONTEXT_ID_NODETREE, true, true },
- {ID_OB, "Object", "objects", BLT_I18NCONTEXT_ID_OBJECT, true, true },
- {ID_PA, "ParticleSettings", "particles", BLT_I18NCONTEXT_ID_PARTICLESETTINGS, true, true },
- {ID_PAL, "Palettes", "palettes", BLT_I18NCONTEXT_ID_PALETTE, true, true },
- {ID_PC, "PaintCurve", "paint_curves", BLT_I18NCONTEXT_ID_PAINTCURVE, true, true },
- {ID_SCE, "Scene", "scenes", BLT_I18NCONTEXT_ID_SCENE, true, true },
- {ID_SCR, "Screen", "screens", BLT_I18NCONTEXT_ID_SCREEN, false, true },
- {ID_SEQ, "Sequence", "sequences", BLT_I18NCONTEXT_ID_SEQUENCE, false, false}, /* not actually ID data */
- {ID_SPK, "Speaker", "speakers", BLT_I18NCONTEXT_ID_SPEAKER, true, true },
- {ID_SO, "Sound", "sounds", BLT_I18NCONTEXT_ID_SOUND, true, true },
- {ID_TE, "Texture", "textures", BLT_I18NCONTEXT_ID_TEXTURE, true, true },
- {ID_TXT, "Text", "texts", BLT_I18NCONTEXT_ID_TEXT, true, true },
- {ID_VF, "VFont", "fonts", BLT_I18NCONTEXT_ID_VFONT, true, true },
- {ID_WO, "World", "worlds", BLT_I18NCONTEXT_ID_WORLD, true, true },
- {ID_WS, "WorkSpace", "workspaces", BLT_I18NCONTEXT_ID_WORKSPACE, false, true },
- {ID_WM, "WindowManager", "window_managers", BLT_I18NCONTEXT_ID_WINDOWMANAGER, false, false},
+ /** ID's directly below must all be in #Main, and be kept in sync with #MAX_LIBARRAY (membership, not order) */
+ { ID_AC, "Action", "actions", BLT_I18NCONTEXT_ID_ACTION, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_AR, "Armature", "armatures", BLT_I18NCONTEXT_ID_ARMATURE, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_BR, "Brush", "brushes", BLT_I18NCONTEXT_ID_BRUSH, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_CA, "Camera", "cameras", BLT_I18NCONTEXT_ID_CAMERA, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_CF, "CacheFile", "cache_files", BLT_I18NCONTEXT_ID_CACHEFILE, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_CU, "Curve", "curves", BLT_I18NCONTEXT_ID_CURVE, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_GD, "GPencil", "grease_pencil", BLT_I18NCONTEXT_ID_GPENCIL, IDTYPE_FLAGS_ISLINKABLE }, /* rename gpencil */
+ { ID_GR, "Group", "groups", BLT_I18NCONTEXT_ID_GROUP, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_IM, "Image", "images", BLT_I18NCONTEXT_ID_IMAGE, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_IP, "Ipo", "ipos", "", IDTYPE_FLAGS_ISLINKABLE }, /* deprecated */
+ { ID_KE, "Key", "shape_keys", BLT_I18NCONTEXT_ID_SHAPEKEY, 0 },
+ { ID_LA, "Lamp", "lamps", BLT_I18NCONTEXT_ID_LAMP, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_LI, "Library", "libraries", BLT_I18NCONTEXT_ID_LIBRARY, 0 },
+ { ID_LS, "FreestyleLineStyle", "linestyles", BLT_I18NCONTEXT_ID_FREESTYLELINESTYLE, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_LT, "Lattice", "lattices", BLT_I18NCONTEXT_ID_LATTICE, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_MA, "Material", "materials", BLT_I18NCONTEXT_ID_MATERIAL, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_MB, "Metaball", "metaballs", BLT_I18NCONTEXT_ID_METABALL, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_MC, "MovieClip", "movieclips", BLT_I18NCONTEXT_ID_MOVIECLIP, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_ME, "Mesh", "meshes", BLT_I18NCONTEXT_ID_MESH, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_MSK, "Mask", "masks", BLT_I18NCONTEXT_ID_MASK, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_NT, "NodeTree", "node_groups", BLT_I18NCONTEXT_ID_NODETREE, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_OB, "Object", "objects", BLT_I18NCONTEXT_ID_OBJECT, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_PA, "ParticleSettings", "particles", BLT_I18NCONTEXT_ID_PARTICLESETTINGS, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_PAL, "Palettes", "palettes", BLT_I18NCONTEXT_ID_PALETTE, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_PC, "PaintCurve", "paint_curves", BLT_I18NCONTEXT_ID_PAINTCURVE, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_SCE, "Scene", "scenes", BLT_I18NCONTEXT_ID_SCENE, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_SCR, "Screen", "screens", BLT_I18NCONTEXT_ID_SCREEN, 0 },
+ { ID_SEQ, "Sequence", "sequences", BLT_I18NCONTEXT_ID_SEQUENCE, 0 }, /* not actually ID data */
+ { ID_SPK, "Speaker", "speakers", BLT_I18NCONTEXT_ID_SPEAKER, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_SO, "Sound", "sounds", BLT_I18NCONTEXT_ID_SOUND, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_TE, "Texture", "textures", BLT_I18NCONTEXT_ID_TEXTURE, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_TXT, "Text", "texts", BLT_I18NCONTEXT_ID_TEXT, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_VF, "VFont", "fonts", BLT_I18NCONTEXT_ID_VFONT, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_WO, "World", "worlds", BLT_I18NCONTEXT_ID_WORLD, IDTYPE_FLAGS_ISLINKABLE },
+ { ID_WM, "WindowManager", "window_managers", BLT_I18NCONTEXT_ID_WINDOWMANAGER, 0 },
+ { ID_WS, "WorkSpace", "workspaces", BLT_I18NCONTEXT_ID_WORKSPACE, IDTYPE_FLAGS_ISLINKABLE },
/** Keep last, not an ID exactly, only include for completeness */
- {ID_ID, "ID", "ids", BLT_I18NCONTEXT_ID_ID, false, false}, /* plural is fake */
+ { ID_ID, "ID", "ids", BLT_I18NCONTEXT_ID_ID,
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list