Asset Shelf: Add default preview size option

Allow changing the size of previews in a new asset shelf
when registering a new asset shelf type.

Pull Request: https://projects.blender.org/blender/blender/pulls/121358
This commit is contained in:
Julian Eisel 2024-05-02 12:56:53 -04:00 committed by Hans Goudey
parent 6f5f70994e
commit 05b125f399
4 changed files with 12 additions and 1 deletions

@ -9088,6 +9088,7 @@ class VIEW3D_AST_sculpt_brushes(bpy.types.AssetShelf):
# enabled.
bl_space_type = 'VIEW_3D'
bl_default_preview_size = 48
@classmethod
def poll(cls, context):

@ -535,6 +535,8 @@ struct AssetShelfType {
AssetShelfTypeFlag flag;
short default_preview_size;
/** Determine if asset shelves of this type should be available in current context or not. */
bool (*poll)(const bContext *C, const AssetShelfType *shelf_type);

@ -88,7 +88,8 @@ AssetShelf *create_shelf_from_type(AssetShelfType &type)
{
AssetShelf *shelf = MEM_new<AssetShelf>(__func__);
*shelf = dna::shallow_zero_initialize();
shelf->settings.preview_size = DEFAULT_TILE_SIZE;
shelf->settings.preview_size = type.default_preview_size ? type.default_preview_size :
DEFAULT_TILE_SIZE;
shelf->settings.asset_library_reference = asset_system::all_library_reference();
shelf->type = &type;
shelf->preferred_row_count = 1;

@ -2303,6 +2303,13 @@ static void rna_def_asset_shelf(BlenderRNA *brna)
RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL | PROP_ENUM_FLAG);
RNA_def_property_ui_text(prop, "Options", "Options for this asset shelf type");
prop = RNA_def_property(srna, "bl_default_preview_size", PROP_INT, PROP_UNSIGNED);
RNA_def_property_int_sdna(prop, nullptr, "type->default_preview_size");
RNA_def_property_range(prop, 32, 256);
RNA_def_property_flag(prop, PROP_REGISTER_OPTIONAL);
RNA_def_property_ui_text(
prop, "Default Preview Size", "Default size of the asset preview thumbnails in pixels");
PropertyRNA *parm;
FunctionRNA *func;