Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--release/scripts/startup/bl_ui/space_filebrowser.py14
-rw-r--r--source/blender/blenkernel/BKE_blender_copybuffer.h6
-rw-r--r--source/blender/blenkernel/BKE_idcode.h6
-rw-r--r--source/blender/blenkernel/intern/blender_copybuffer.c4
-rw-r--r--source/blender/blenkernel/intern/idcode.c4
-rw-r--r--source/blender/blenloader/BLO_readfile.h6
-rw-r--r--source/blender/blenloader/intern/readfile.c2
-rw-r--r--source/blender/editors/space_file/filelist.c14
-rw-r--r--source/blender/editors/space_file/filelist.h4
-rw-r--r--source/blender/makesdna/DNA_ID.h68
-rw-r--r--source/blender/makesdna/DNA_space_types.h3
-rw-r--r--source/blender/makesdna/DNA_userdef_types.h3
-rw-r--r--source/blender/makesrna/intern/rna_space.c221
13 files changed, 196 insertions, 159 deletions
diff --git a/release/scripts/startup/bl_ui/space_filebrowser.py b/release/scripts/startup/bl_ui/space_filebrowser.py
index 8ff85459d35..95046678b27 100644
--- a/release/scripts/startup/bl_ui/space_filebrowser.py
+++ b/release/scripts/startup/bl_ui/space_filebrowser.py
@@ -148,7 +148,12 @@ class FILEBROWSER_PT_filter(Panel):
if params.use_filter_blendid:
row = col.row()
row.label(icon='BLANK1') # Indentation
- row.prop(params, "filter_id_category", text="")
+
+ sub = row.column(align=True)
+ filter_id = params.filter_id
+ for identifier in dir(filter_id):
+ if identifier.startswith("category_"):
+ sub.prop(filter_id, identifier, toggle=True)
col.separator()
@@ -314,8 +319,11 @@ class FILEBROWSER_PT_advanced_filter(Panel):
layout.prop(params, "use_filter_blendid")
if params.use_filter_blendid:
layout.separator()
- col = layout.column()
- col.prop(params, "filter_id")
+ col = layout.column(align=True)
+ filter_id = params.filter_id
+ for identifier in dir(filter_id):
+ if identifier.startswith("filter_"):
+ col.prop(filter_id, identifier, toggle=True)
class FILEBROWSER_PT_directory_path(Panel):
diff --git a/source/blender/blenkernel/BKE_blender_copybuffer.h b/source/blender/blenkernel/BKE_blender_copybuffer.h
index fcc30ffc20d..ca20d3d9bba 100644
--- a/source/blender/blenkernel/BKE_blender_copybuffer.h
+++ b/source/blender/blenkernel/BKE_blender_copybuffer.h
@@ -20,6 +20,8 @@
* \ingroup bke
*/
+#include "BLI_sys_types.h"
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -36,12 +38,12 @@ bool BKE_copybuffer_save(struct Main *bmain_src, const char *filename, struct Re
bool BKE_copybuffer_read(struct Main *bmain_dst,
const char *libname,
struct ReportList *reports,
- const unsigned int id_types_mask);
+ const uint64_t id_types_mask);
int BKE_copybuffer_paste(struct bContext *C,
const char *libname,
const short flag,
struct ReportList *reports,
- const unsigned int id_types_mask);
+ const uint64_t id_types_mask);
#ifdef __cplusplus
}
diff --git a/source/blender/blenkernel/BKE_idcode.h b/source/blender/blenkernel/BKE_idcode.h
index dc58651b4e8..067143e3253 100644
--- a/source/blender/blenkernel/BKE_idcode.h
+++ b/source/blender/blenkernel/BKE_idcode.h
@@ -24,6 +24,8 @@
* \ingroup bke
*/
+#include "BLI_sys_types.h"
+
#ifdef __cplusplus
extern "C" {
#endif
@@ -35,8 +37,8 @@ short BKE_idcode_from_name(const char *name);
bool BKE_idcode_is_linkable(short idcode);
bool BKE_idcode_is_valid(short idcode);
-int BKE_idcode_to_idfilter(const short idcode);
-short BKE_idcode_from_idfilter(const int idfilter);
+uint64_t BKE_idcode_to_idfilter(const short idcode);
+short BKE_idcode_from_idfilter(const uint64_t idfilter);
int BKE_idcode_to_index(const short idcode);
short BKE_idcode_from_index(const int index);
diff --git a/source/blender/blenkernel/intern/blender_copybuffer.c b/source/blender/blenkernel/intern/blender_copybuffer.c
index f78eefa0a27..8619db34d93 100644
--- a/source/blender/blenkernel/intern/blender_copybuffer.c
+++ b/source/blender/blenkernel/intern/blender_copybuffer.c
@@ -84,7 +84,7 @@ bool BKE_copybuffer_save(Main *bmain_src, const char *filename, ReportList *repo
bool BKE_copybuffer_read(Main *bmain_dst,
const char *libname,
ReportList *reports,
- const unsigned int id_types_mask)
+ const uint64_t id_types_mask)
{
BlendHandle *bh = BLO_blendhandle_from_file(libname, reports);
if (bh == NULL) {
@@ -117,7 +117,7 @@ int BKE_copybuffer_paste(bContext *C,
const char *libname,
const short flag,
ReportList *reports,
- const unsigned int id_types_mask)
+ const uint64_t id_types_mask)
{
Main *bmain = CTX_data_main(C);
Scene *scene = CTX_data_scene(C);
diff --git a/source/blender/blenkernel/intern/idcode.c b/source/blender/blenkernel/intern/idcode.c
index 6b7cb181374..b9ca77ceb67 100644
--- a/source/blender/blenkernel/intern/idcode.c
+++ b/source/blender/blenkernel/intern/idcode.c
@@ -179,7 +179,7 @@ short BKE_idcode_from_name(const char *name)
/**
* Convert an idcode into an idfilter (e.g. ID_OB -> FILTER_ID_OB).
*/
-int BKE_idcode_to_idfilter(const short idcode)
+uint64_t BKE_idcode_to_idfilter(const short idcode)
{
#define CASE_IDFILTER(_id) \
case ID_##_id: \
@@ -227,7 +227,7 @@ int BKE_idcode_to_idfilter(const short idcode)
/**
* Convert an idfilter into an idcode (e.g. FILTER_ID_OB -> ID_OB).
*/
-short BKE_idcode_from_idfilter(const int idfilter)
+short BKE_idcode_from_idfilter(const uint64_t idfilter)
{
#define CASE_IDFILTER(_id) \
case FILTER_ID_##_id: \
diff --git a/source/blender/blenloader/BLO_readfile.h b/source/blender/blenloader/BLO_readfile.h
index ee7877b1a5d..00dbe334356 100644
--- a/source/blender/blenloader/BLO_readfile.h
+++ b/source/blender/blenloader/BLO_readfile.h
@@ -19,6 +19,8 @@
#ifndef __BLO_READFILE_H__
#define __BLO_READFILE_H__
+#include "BLI_sys_types.h"
+
/** \file
* \ingroup blenloader
* \brief external readfile function prototypes.
@@ -145,9 +147,7 @@ void BLO_library_link_end(struct Main *mainl,
struct ViewLayer *view_layer,
const struct View3D *v3d);
-int BLO_library_link_copypaste(struct Main *mainl,
- BlendHandle *bh,
- const unsigned int id_types_mask);
+int BLO_library_link_copypaste(struct Main *mainl, BlendHandle *bh, const uint64_t id_types_mask);
void *BLO_library_read_struct(struct FileData *fd, struct BHead *bh, const char *blockname);
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index d97fe900679..c1f61db27c3 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -11259,7 +11259,7 @@ static ID *link_named_part(
/**
* Simple reader for copy/paste buffers.
*/
-int BLO_library_link_copypaste(Main *mainl, BlendHandle *bh, const unsigned int id_types_mask)
+int BLO_library_link_copypaste(Main *mainl, BlendHandle *bh, const uint64_t id_types_mask)
{
FileData *fd = (FileData *)(bh);
BHead *bhead;
diff --git a/source/blender/editors/space_file/filelist.c b/source/blender/editors/space_file/filelist.c
index 9defff74c6f..11304d6ae46 100644
--- a/source/blender/editors/space_file/filelist.c
+++ b/source/blender/editors/space_file/filelist.c
@@ -269,8 +269,8 @@ typedef struct FileListEntryPreview {
} FileListEntryPreview;
typedef struct FileListFilter {
- unsigned int filter;
- unsigned int filter_id;
+ uint64_t filter;
+ uint64_t filter_id;
char filter_glob[FILE_MAXFILE];
char filter_search[66]; /* + 2 for heading/trailing implicit '*' wildcards. */
short flags;
@@ -361,7 +361,7 @@ static void filelist_readjob_dir(
/* helper, could probably go in BKE actually? */
static int groupname_to_code(const char *group);
-static unsigned int groupname_to_filter_id(const char *group);
+static uint64_t groupname_to_filter_id(const char *group);
static void filelist_filter_clear(FileList *filelist);
static void filelist_cache_clear(FileListEntryCache *cache, size_t new_size);
@@ -746,7 +746,7 @@ static bool is_filtered_lib(FileListInternEntry *file, const char *root, FileLis
is_filtered = false;
}
else {
- unsigned int filter_id = groupname_to_filter_id(group);
+ uint64_t filter_id = groupname_to_filter_id(group);
if (!(filter_id & filter->filter_id)) {
is_filtered = false;
}
@@ -835,8 +835,8 @@ void filelist_setfilter_options(FileList *filelist,
const bool do_filter,
const bool hide_dot,
const bool hide_parent,
- const unsigned int filter,
- const unsigned int filter_id,
+ const uint64_t filter,
+ const uint64_t filter_id,
const char *filter_glob,
const char *filter_search)
{
@@ -2422,7 +2422,7 @@ static int groupname_to_code(const char *group)
return buf[0] ? BKE_idcode_from_name(buf) : 0;
}
-static unsigned int groupname_to_filter_id(const char *group)
+static uint64_t groupname_to_filter_id(const char *group)
{
int id_code = groupname_to_code(group);
diff --git a/source/blender/editors/space_file/filelist.h b/source/blender/editors/space_file/filelist.h
index 9b1107294ff..654a86b1702 100644
--- a/source/blender/editors/space_file/filelist.h
+++ b/source/blender/editors/space_file/filelist.h
@@ -62,8 +62,8 @@ void filelist_setfilter_options(struct FileList *filelist,
const bool do_filter,
const bool hide_dot,
const bool hide_parent,
- const unsigned int filter,
- const unsigned int filter_id,
+ const uint64_t filter,
+ const uint64_t filter_id,
const char *filter_glob,
const char *filter_search);
void filelist_filter(struct FileList *filelist);
diff --git a/source/blender/makesdna/DNA_ID.h b/source/blender/makesdna/DNA_ID.h
index d0ba2b0c4e5..89af705d5ed 100644
--- a/source/blender/makesdna/DNA_ID.h
+++ b/source/blender/makesdna/DNA_ID.h
@@ -645,43 +645,39 @@ typedef enum IDRecalcFlag {
} IDRecalcFlag;
-/* To filter ID types (filter_id) */
-/* XXX We cannot put all needed IDs inside an enum...
- * We'll have to see whether we can fit all needed ones inside 32 values,
- * or if we need to fallback to longlong defines :/
- */
+/* To filter ID types (filter_id). 64 bit to fit all types. */
enum {
- FILTER_ID_AC = (1 << 0),
- FILTER_ID_AR = (1 << 1),
- FILTER_ID_BR = (1 << 2),
- FILTER_ID_CA = (1 << 3),
- FILTER_ID_CU = (1 << 4),
- FILTER_ID_GD = (1 << 5),
- FILTER_ID_GR = (1 << 6),
- FILTER_ID_IM = (1 << 7),
- FILTER_ID_LA = (1 << 8),
- FILTER_ID_LS = (1 << 9),
- FILTER_ID_LT = (1 << 10),
- FILTER_ID_MA = (1 << 11),
- FILTER_ID_MB = (1 << 12),
- FILTER_ID_MC = (1 << 13),
- FILTER_ID_ME = (1 << 14),
- FILTER_ID_MSK = (1 << 15),
- FILTER_ID_NT = (1 << 16),
- FILTER_ID_OB = (1 << 17),
- FILTER_ID_PAL = (1 << 18),
- FILTER_ID_PC = (1 << 19),
- FILTER_ID_SCE = (1 << 20),
- FILTER_ID_SPK = (1 << 21),
- FILTER_ID_SO = (1 << 22),
- FILTER_ID_TE = (1 << 23),
- FILTER_ID_TXT = (1 << 24),
- FILTER_ID_VF = (1 << 25),
- FILTER_ID_WO = (1 << 26),
- FILTER_ID_PA = (1 << 27),
- FILTER_ID_CF = (1 << 28),
- FILTER_ID_WS = (1 << 29),
- FILTER_ID_LP = (1u << 31),
+ FILTER_ID_AC = (1ULL << 0),
+ FILTER_ID_AR = (1ULL << 1),
+ FILTER_ID_BR = (1ULL << 2),
+ FILTER_ID_CA = (1ULL << 3),
+ FILTER_ID_CU = (1ULL << 4),
+ FILTER_ID_GD = (1ULL << 5),
+ FILTER_ID_GR = (1ULL << 6),
+ FILTER_ID_IM = (1ULL << 7),
+ FILTER_ID_LA = (1ULL << 8),
+ FILTER_ID_LS = (1ULL << 9),
+ FILTER_ID_LT = (1ULL << 10),
+ FILTER_ID_MA = (1ULL << 11),
+ FILTER_ID_MB = (1ULL << 12),
+ FILTER_ID_MC = (1ULL << 13),
+ FILTER_ID_ME = (1ULL << 14),
+ FILTER_ID_MSK = (1ULL << 15),
+ FILTER_ID_NT = (1ULL << 16),
+ FILTER_ID_OB = (1ULL << 17),
+ FILTER_ID_PAL = (1ULL << 18),
+ FILTER_ID_PC = (1ULL << 19),
+ FILTER_ID_SCE = (1ULL << 20),
+ FILTER_ID_SPK = (1ULL << 21),
+ FILTER_ID_SO = (1ULL << 22),
+ FILTER_ID_TE = (1ULL << 23),
+ FILTER_ID_TXT = (1ULL << 24),
+ FILTER_ID_VF = (1ULL << 25),
+ FILTER_ID_WO = (1ULL << 26),
+ FILTER_ID_PA = (1ULL << 27),
+ FILTER_ID_CF = (1ULL << 28),
+ FILTER_ID_WS = (1ULL << 29),
+ FILTER_ID_LP = (1ULL << 31),
};
#define FILTER_ID_ALL \
diff --git a/source/blender/makesdna/DNA_space_types.h b/source/blender/makesdna/DNA_space_types.h
index bdfe5040794..548212a2b0d 100644
--- a/source/blender/makesdna/DNA_space_types.h
+++ b/source/blender/makesdna/DNA_space_types.h
@@ -676,7 +676,8 @@ typedef struct FileSelectParams {
/** Text items name must match to be shown. */
char filter_search[64];
/** Same as filter, but for ID types (aka library groups). */
- int filter_id;
+ int _pad0;
+ uint64_t filter_id;
/** Active file used for keyboard navigation. */
int active_file;
diff --git a/source/blender/makesdna/DNA_userdef_types.h b/source/blender/makesdna/DNA_userdef_types.h
index d40559bc194..b3f82bc1269 100644
--- a/source/blender/makesdna/DNA_userdef_types.h
+++ b/source/blender/makesdna/DNA_userdef_types.h
@@ -604,7 +604,8 @@ typedef struct UserDef_FileSpaceData {
int sort_type; /* FileSelectParams.sort */
int details_flags; /* FileSelectParams.details_flags */
int flag; /* FileSelectParams.flag */
- int filter_id; /* FileSelectParams.filter_id */
+ int _pad0;
+ uint64_t filter_id; /* FileSelectParams.filter_id */
/** Info used when creating the file browser in a temporary window. */
int temp_win_sizex;
diff --git a/source/blender/makesrna/intern/rna_space.c b/source/blender/makesrna/intern/rna_space.c
index 762c1985fa9..63817137a02 100644
--- a/source/blender/makesrna/intern/rna_space.c
+++ b/source/blender/makesrna/intern/rna_space.c
@@ -2329,6 +2329,11 @@ static void rna_FileSelectPrams_filter_glob_set(PointerRNA *ptr, const char *val
BLI_path_extension_glob_validate(params->filter_glob);
}
+static PointerRNA rna_FileSelectParams_filter_id_get(PointerRNA *ptr)
+{
+ return rna_pointer_inherit_refine(ptr, &RNA_FileSelectIDFilter, ptr->data);
+}
+
static void rna_FileBrowser_FSMenuEntry_path_get(PointerRNA *ptr, char *value)
{
char *path = ED_fsmenu_entry_get_path(ptr->data);
@@ -5328,139 +5333,169 @@ static void rna_def_space_console(BlenderRNA *brna)
RNA_def_property_ui_text(prop, "Output", "Command output");
}
-static void rna_def_fileselect_params(BlenderRNA *brna)
+/* Filter for datablock types in link/append. */
+static void rna_def_fileselect_idfilter(BlenderRNA *brna)
{
- StructRNA *srna;
- PropertyRNA *prop;
-
- static const EnumPropertyItem file_display_items[] = {
- {FILE_VERTICALDISPLAY,
- "LIST_VERTICAL",
- ICON_LONGDISPLAY,
- "Vertical List",
- "Display files as a vertical list"},
- {FILE_HORIZONTALDISPLAY,
- "LIST_HORIZONTAL",
- ICON_SHORTDISPLAY,
- "Horizontal List",
- "Display files as a horizontal list"},
- {FILE_IMGDISPLAY, "THUMBNAIL", ICON_IMGDISPLAY, "Thumbnails", "Display files as thumbnails"},
- {0, NULL, 0, NULL, NULL},
+ struct IDFilterBoolean {
+ /* 64 bit, so we can't use bitflag enum. */
+ const uint64_t flag;
+ const char *identifier;
+ const int icon;
+ const char *name;
+ const char *description;
};
- static const EnumPropertyItem display_size_items[] = {
- {64, "TINY", 0, "Tiny", ""},
- {96, "SMALL", 0, "Small", ""},
- {128, "NORMAL", 0, "Regular", ""},
- {192, "LARGE", 0, "Large", ""},
- {0, NULL, 0, NULL, NULL},
- };
-
- static const EnumPropertyItem file_filter_idtypes_items[] = {
- {FILTER_ID_AC, "ACTION", ICON_ANIM_DATA, "Actions", "Show/hide Action data-blocks"},
+ static const struct IDFilterBoolean booleans[] = {
+ /* Datablocks */
+ {FILTER_ID_AC, "filter_action", ICON_ANIM_DATA, "Actions", "Show Action data-blocks"},
{FILTER_ID_AR,
- "ARMATURE",
+ "filter_armature",
ICON_ARMATURE_DATA,
"Armatures",
- "Show/hide Armature data-blocks"},
- {FILTER_ID_BR, "BRUSH", ICON_BRUSH_DATA, "Brushes", "Show/hide Brushes data-blocks"},
- {FILTER_ID_CA, "CAMERA", ICON_CAMERA_DATA, "Cameras", "Show/hide Camera data-blocks"},
- {FILTER_ID_CF, "CACHEFILE", ICON_FILE, "Cache Files", "Show/hide Cache File data-blocks"},
- {FILTER_ID_CU, "CURVE", ICON_CURVE_DATA, "Curves", "Show/hide Curve data-blocks"},
+ "Show Armature data-blocks"},
+ {FILTER_ID_BR, "filter_brush", ICON_BRUSH_DATA, "Brushes", "Show Brushes data-blocks"},
+ {FILTER_ID_CA, "filter_camera", ICON_CAMERA_DATA, "Cameras", "Show Camera data-blocks"},
+ {FILTER_ID_CF, "filter_cachefile", ICON_FILE, "Cache Files", "Show Cache File data-blocks"},
+ {FILTER_ID_CU, "filter_curve", ICON_CURVE_DATA, "Curves", "Show Curve data-blocks"},
{FILTER_ID_GD,
- "GREASE_PENCIL",
+ "filter_grease_pencil",
ICON_GREASEPENCIL,
"Grease Pencil",
- "Show/hide Grease pencil data-blocks"},
- {FILTER_ID_GR, "GROUP", ICON_GROUP, "Collections", "Show/hide Collection data-blocks"},
- {FILTER_ID_IM, "IMAGE", ICON_IMAGE_DATA, "Images", "Show/hide Image data-blocks"},
- {FILTER_ID_LA, "LIGHT", ICON_LIGHT_DATA, "Lights", "Show/hide Light data-blocks"},
+ "Show Grease pencil data-blocks"},
+ {FILTER_ID_GR, "filter_group", ICON_GROUP, "Collections", "Show Collection data-blocks"},
+ {FILTER_ID_IM, "filter_image", ICON_IMAGE_DATA, "Images", "Show Image data-blocks"},
+ {FILTER_ID_LA, "filter_light", ICON_LIGHT_DATA, "Lights", "Show Light data-blocks"},
{FILTER_ID_LS,
- "LINESTYLE",
+ "filter_linestyle",
ICON_LINE_DATA,
"Freestyle Linestyles",
- "Show/hide Freestyle's Line Style data-blocks"},
- {FILTER_ID_LT, "LATTICE", ICON_LATTICE_DATA, "Lattices", "Show/hide Lattice data-blocks"},
+ "Show Freestyle's Line Style data-blocks"},
+ {FILTER_ID_LT, "filter_lattice", ICON_LATTICE_DATA, "Lattices", "Show Lattice data-blocks"},
{FILTER_ID_MA,
- "MATERIAL",
+ "filter_material",
ICON_MATERIAL_DATA,
"Materials",
- "Show/hide Material data-blocks"},
- {FILTER_ID_MB, "METABALL", ICON_META_DATA, "Metaballs", "Show/hide Metaball data-blocks"},
+ "Show Material data-blocks"},
+ {FILTER_ID_MB, "filter_metaball", ICON_META_DATA, "Metaballs", "Show Metaball data-blocks"},
{FILTER_ID_MC,
- "MOVIE_CLIP",
+ "filter_movie_clip",
ICON_TRACKER_DATA,
"Movie Clips",
- "Show/hide Movie Clip data-blocks"},
- {FILTER_ID_ME, "MESH", ICON_MESH_DATA, "Meshes", "Show/hide Mesh data-blocks"},
- {FILTER_ID_MSK, "MASK", ICON_MOD_MASK, "Masks", "Show/hide Mask data-blocks"},
- {FILTER_ID_NT, "NODE_TREE", ICON_NODETREE, "Node Trees", "Show/hide Node Tree data-blocks"},
- {FILTER_ID_OB, "OBJECT", ICON_OBJECT_DATA, "Objects", "Show/hide Object data-blocks"},
+ "Show Movie Clip data-blocks"},
+ {FILTER_ID_ME, "filter_mesh", ICON_MESH_DATA, "Meshes", "Show Mesh data-blocks"},
+ {FILTER_ID_MSK, "filter_mask", ICON_MOD_MASK, "Masks", "Show Mask data-blocks"},
+ {FILTER_ID_NT,
+ "filter_node_tree",
+ ICON_NODETREE,
+ "Node Trees",
+ "Show Node Tree data-blocks"},
+ {FILTER_ID_OB, "filter_object", ICON_OBJECT_DATA, "Objects", "Show Object data-blocks"},
{FILTER_ID_PA,
- "PARTICLE_SETTINGS",
+ "filter_particle_settings",
ICON_PARTICLE_DATA,
"Particles Settings",
- "Show/hide Particle Settings data-blocks"},
- {FILTER_ID_PAL, "PALETTE", ICON_COLOR, "Palettes", "Show/hide Palette data-blocks"},
+ "Show Particle Settings data-blocks"},
+ {FILTER_ID_PAL, "filter_palette", ICON_COLOR, "Palettes", "Show Palette data-blocks"},
{FILTER_ID_PC,
- "PAINT_CURVE",
+ "filter_paint_curve",
ICON_CURVE_BEZCURVE,
"Paint Curves",
- "Show/hide Paint Curve data-blocks"},
+ "Show Paint Curve data-blocks"},
{FILTER_ID_LP,
- "LIGHT_PROBE",
+ "filter_light_probe",
ICON_OUTLINER_DATA_LIGHTPROBE,
"Light Probes",
- "Show/hide Light Probe data-blocks"},
- {FILTER_ID_SCE, "SCENE", ICON_SCENE_DATA, "Scenes", "Show/hide Scene data-blocks"},
- {FILTER_ID_SPK, "SPEAKER", ICON_SPEAKER, "Speakers", "Show/hide Speaker data-blocks"},
- {FILTER_ID_SO, "SOUND", ICON_SOUND, "Sounds", "Show/hide Sound data-blocks"},
- {FILTER_ID_TE, "TEXTURE", ICON_TEXTURE_DATA, "Textures", "Show/hide Texture data-blocks"},
- {FILTER_ID_TXT, "TEXT", ICON_TEXT, "Texts", "Show/hide Text data-blocks"},
- {FILTER_ID_VF, "FONT", ICON_FONT_DATA, "Fonts", "Show/hide Font data-blocks"},
- {FILTER_ID_WO, "WORLD", ICON_WORLD_DATA, "Worlds", "Show/hide World data-blocks"},
+ "Show Light Probe data-blocks"},
+ {FILTER_ID_SCE, "filter_scene", ICON_SCENE_DATA, "Scenes", "Show Scene data-blocks"},
+ {FILTER_ID_SPK, "filter_speaker", ICON_SPEAKER, "Speakers", "Show Speaker data-blocks"},
+ {FILTER_ID_SO, "filter_sound", ICON_SOUND, "Sounds", "Show Sound data-blocks"},
+ {FILTER_ID_TE, "filter_texture", ICON_TEXTURE_DATA, "Textures", "Show Texture data-blocks"},
+ {FILTER_ID_TXT, "filter_text", ICON_TEXT, "Texts", "Show Text data-blocks"},
+ {FILTER_ID_VF, "filter_font", ICON_FONT_DATA, "Fonts", "Show Font data-blocks"},
+ {FILTER_ID_WO, "filter_world", ICON_WORLD_DATA, "Worlds", "Show World data-blocks"},
{FILTER_ID_WS,
- "WORK_SPACE",
+ "filter_work_space",
ICON_WORKSPACE,
"Workspaces",
- "Show/hide workspace data-blocks"},
- {0, NULL, 0, NULL, NULL},
- };
+ "Show workspace data-blocks"},
- static const EnumPropertyItem file_filter_idcategories_items[] = {
- {FILTER_ID_SCE, "SCENE", ICON_SCENE_DATA, "Scenes", "Show/hide scenes"},
- {FILTER_ID_AC, "ANIMATION", ICON_ANIM_DATA, "Animations", "Show/hide animation data"},
+ /* Categories */
+ {FILTER_ID_SCE, "category_scene", ICON_SCENE_DATA, "Scenes", "Show scenes"},
+ {FILTER_ID_AC, "category_animation", ICON_ANIM_DATA, "Animations", "Show animation data"},
{FILTER_ID_OB | FILTER_ID_GR,
- "OBJECT",
+ "category_object",
ICON_GROUP,
"Objects & Collections",
- "Show/hide objects and groups"},
+ "Show objects and groups"},
{FILTER_ID_AR | FILTER_ID_CU | FILTER_ID_LT | FILTER_ID_MB | FILTER_ID_ME,
- "GEOMETRY",
+ "category_geometry",
ICON_MESH_DATA,
"Geometry",
- "Show/hide meshes, curves, lattice, armatures and metaballs data"},
+ "Show meshes, curves, lattice, armatures and metaballs data"},
{FILTER_ID_LS | FILTER_ID_MA | FILTER_ID_NT | FILTER_ID_TE,
- "SHADING",
+ "category_shading",
ICON_MATERIAL_DATA,
"Shading",
- "Show/hide materials, nodetrees, textures and Freestyle's linestyles"},
+ "Show materials, nodetrees, textures and Freestyle's linestyles"},
{FILTER_ID_IM | FILTER_ID_MC | FILTER_ID_MSK | FILTER_ID_SO,
- "IMAGE",
+ "category_image",
ICON_IMAGE_DATA,
"Images & Sounds",
- "Show/hide images, movie clips, sounds and masks"},
- {FILTER_ID_CA | FILTER_ID_LA | FILTER_ID_SPK | FILTER_ID_WO | FILTER_ID_WS,
- "ENVIRONMENT",
+ "Show images, movie clips, sounds and masks"},
+ {FILTER_ID_CA | FILTER_ID_LA | FILTER_ID_LP | FILTER_ID_SPK | FILTER_ID_WO | FILTER_ID_WS,
+ "category_environment",
ICON_WORLD_DATA,
"Environment",
- "Show/hide worlds, lights, cameras and speakers"},
+ "Show worlds, lights, cameras and speakers"},
{FILTER_ID_BR | FILTER_ID_GD | FILTER_ID_PA | FILTER_ID_PAL | FILTER_ID_PC | FILTER_ID_TXT |
FILTER_ID_VF | FILTER_ID_CF,
- "MISC",
+ "category_misc",
ICON_GREASEPENCIL,
"Miscellaneous",
- "Show/hide other data types"},
+ "Show other data types"},
+
+ {0, NULL, 0, NULL, NULL}};
+
+ StructRNA *srna = RNA_def_struct(brna, "FileSelectIDFilter", NULL);
+ RNA_def_struct_sdna(srna, "FileSelectParams");
+ RNA_def_struct_nested(brna, srna, "FileSelectParams");
+ RNA_def_struct_ui_text(
+ srna, "File Select ID Filter", "Which ID types to show/hide, when browsing a library");
+
+ for (int i = 0; booleans[i].identifier; i++) {
+ PropertyRNA *prop = RNA_def_property(srna, booleans[i].identifier, PROP_BOOLEAN, PROP_NONE);
+ RNA_def_property_boolean_sdna(prop, NULL, "filter_id", booleans[i].flag);
+ RNA_def_property_ui_text(prop, booleans[i].name, booleans[i].description);
+ RNA_def_property_ui_icon(prop, booleans[i].icon, 0);
+ RNA_def_property_update(prop, NC_SPACE | ND_SPACE_FILE_PARAMS, NULL);
+ }
+}
+
+static void rna_def_fileselect_params(BlenderRNA *brna)
+{
+ StructRNA *srna;
+ PropertyRNA *prop;
+
+ static const EnumPropertyItem file_display_items[] = {
+ {FILE_VERTICALDISPLAY,
+ "LIST_VERTICAL",
+ ICON_LONGDISPLAY,
+ "Vertical List",
+ "Display files as a vertical list"},
+ {FILE_HORIZONTALDISPLAY,
+ "LIST_HORIZONTAL",
+ ICON_SHORTDISPLAY,
+ "Horizontal List",
+ "Display files as a horizontal list"},
+ {FILE_IMGDISPLAY, "THUMBNAIL", ICON_IMGDISPLAY, "Thumbnails", "Display files as thumbnails"},
+ {0, NULL, 0, NULL, NULL},
+ };
+
+ static const EnumPropertyItem display_size_items[] = {
+ {64, "TINY", 0, "Tiny", ""},
+ {96, "SMALL", 0, "Small", ""},
+ {128, "NORMAL", 0, "Regular", ""},
+ {192, "LARGE", 0, "Large", ""},
{0, NULL, 0, NULL, NULL},
};
@@ -5602,21 +5637,12 @@ static void rna_def_fileselect_params(BlenderRNA *brna)
RNA_def_property_ui_icon(prop, ICON_BLENDER, 0);
RNA_def_property_update(prop, NC_SPACE | ND_SPACE_FILE_PARAMS, NULL);
- prop = RNA_def_property(srna, "filter_id", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_sdna(prop, NULL, "filter_id");
- RNA_def_property_enum_items(prop, file_filter_idtypes_items);
- RNA_def_property_flag(prop, PROP_ENUM_FLAG);
+ prop = RNA_def_property(srna, "filter_id", PROP_POINTER, PROP_NONE);
+ RNA_def_property_flag(prop, PROP_NEVER_NULL);
+ RNA_def_property_struct_type(prop, "FileSelectIDFilter");
+ RNA_def_property_pointer_funcs(prop, "rna_FileSelectParams_filter_id_get", NULL, NULL, NULL);
RNA_def_property_ui_text(
prop, "Filter ID Types", "Which ID types to show/hide, when browsing a library");
- RNA_def_property_update(prop, NC_SPACE | ND_SPACE_FILE_PARAMS, NULL);
-
- prop = RNA_def_property(srna, "filter_id_category", PROP_ENUM, PROP_NONE);
- RNA_def_property_enum_sdna(prop, NULL, "filter_id");
- RNA_def_property_enum_items(prop, file_filter_idcategories_items);
- RNA_def_property_flag(prop, PROP_ENUM_FLAG);
- RNA_def_property_ui_text(
- prop, "Filter ID Categories", "Which ID categories to show/hide, when browsing a library");
- RNA_def_property_update(prop, NC_SPACE | ND_SPACE_FILE_PARAMS, NULL);
prop = RNA_def_property(srna, "filter_glob", PROP_STRING, PROP_NONE);
RNA_def_property_string_sdna(prop, NULL, "filter_glob");
@@ -6445,6 +6471,7 @@ void RNA_def_space(BlenderRNA *brna)
rna_def_space_sequencer(brna);
rna_def_space_text(brna);
rna_def_fileselect_params(brna);
+ rna_def_fileselect_idfilter(brna);
rna_def_filemenu_entry(brna);
rna_def_space_filebrowser(brna);
rna_def_space_outliner(brna);