From 0dab5818d7dfc7fd9921eac9150de18e4c44cbbe Mon Sep 17 00:00:00 2001 From: Harley Acheson Date: Fri, 22 Sep 2023 18:49:01 +0200 Subject: [PATCH] UI: Discrete Thumbnail Sizes for Menus Allow menus to select thumbnail sizes in discrete steps. Pull Request: https://projects.blender.org/blender/blender/pulls/112455 --- scripts/startup/bl_ui/space_filebrowser.py | 8 ++++---- source/blender/makesrna/intern/rna_space.cc | 21 +++++++++++++++++---- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/scripts/startup/bl_ui/space_filebrowser.py b/scripts/startup/bl_ui/space_filebrowser.py index d45ae30af86..b06d2f76b3d 100644 --- a/scripts/startup/bl_ui/space_filebrowser.py +++ b/scripts/startup/bl_ui/space_filebrowser.py @@ -505,7 +505,7 @@ class FILEBROWSER_MT_view(FileBrowserMenu, Menu): layout.separator() - layout.prop_menu_enum(params, "display_size") + layout.prop_menu_enum(params, "display_size_discrete") layout.prop_menu_enum(params, "recursion_level") layout.separator() @@ -567,7 +567,7 @@ class FILEBROWSER_MT_context_menu(FileBrowserMenu, Menu): layout.prop_menu_enum(params, "display_type") if params.display_type == 'THUMBNAIL': - layout.prop_menu_enum(params, "display_size") + layout.prop_menu_enum(params, "display_size_discrete") layout.prop_menu_enum(params, "recursion_level", text="Recursions") layout.prop_menu_enum(params, "sort_method") @@ -667,7 +667,7 @@ class ASSETBROWSER_MT_view(AssetBrowserMenu, Menu): layout.separator() - layout.prop_menu_enum(params, "display_size") + layout.prop_menu_enum(params, "display_size_discrete") layout.separator() @@ -841,7 +841,7 @@ class ASSETBROWSER_MT_context_menu(AssetBrowserMenu, Menu): layout.separator() if params.display_type == 'THUMBNAIL': - layout.prop_menu_enum(params, "display_size") + layout.prop_menu_enum(params, "display_size_discrete") classes = ( diff --git a/source/blender/makesrna/intern/rna_space.cc b/source/blender/makesrna/intern/rna_space.cc index 3831b538b3d..40c15705539 100644 --- a/source/blender/makesrna/intern/rna_space.cc +++ b/source/blender/makesrna/intern/rna_space.cc @@ -6740,6 +6740,15 @@ static void rna_def_fileselect_params(BlenderRNA *brna) {0, nullptr, 0, nullptr, nullptr}, }; + static const EnumPropertyItem display_size_items[] = { + {32, "TINY", 0, "Tiny", ""}, + {64, "SMALL", 0, "Small", ""}, + {96, "NORMAL", 0, "Medium", ""}, + {128, "BIG", 0, "Big", ""}, + {192, "LARGE", 0, "Large", ""}, + {0, nullptr, 0, nullptr, nullptr}, + }; + srna = RNA_def_struct(brna, "FileSelectParams", nullptr); RNA_def_struct_path_func(srna, "rna_FileSelectParams_path"); RNA_def_struct_ui_text(srna, "File Select Parameters", "File Select Parameters"); @@ -6917,13 +6926,17 @@ static void rna_def_fileselect_params(BlenderRNA *brna) prop = RNA_def_property(srna, "display_size", PROP_INT, PROP_NONE); RNA_def_property_int_sdna(prop, nullptr, "thumbnail_size"); - RNA_def_property_ui_text(prop, - "Display Size", - "Change the size of the display (width of columns or thumbnails size)"); + RNA_def_property_ui_text(prop, "Display Size", "Change the size of thumbnails"); RNA_def_property_update(prop, NC_SPACE | ND_SPACE_FILE_LIST, nullptr); RNA_def_property_int_default(prop, 96); RNA_def_property_range(prop, 16, 256); - RNA_def_property_ui_range(prop, 24, 256, 16, 0); + RNA_def_property_ui_range(prop, 24, 256, 1, 0); + + prop = RNA_def_property(srna, "display_size_discrete", PROP_ENUM, PROP_NONE); + RNA_def_property_enum_sdna(prop, nullptr, "thumbnail_size"); + RNA_def_property_enum_items(prop, display_size_items); + RNA_def_property_ui_text(prop, "Display Size", "Change the size of thumbnails in discrete steps"); + RNA_def_property_update(prop, NC_SPACE | ND_SPACE_FILE_LIST, nullptr); } static void rna_def_fileselect_asset_params(BlenderRNA *brna)