diff options
-rw-r--r-- | source/blender/editors/include/UI_interface.h | 3 | ||||
-rw-r--r-- | source/blender/editors/interface/interface_templates.c | 31 | ||||
-rw-r--r-- | source/blender/makesrna/intern/rna_ui_api.c | 1 |
3 files changed, 21 insertions, 14 deletions
diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h index 51347c7c230..e440f6a3d98 100644 --- a/source/blender/editors/include/UI_interface.h +++ b/source/blender/editors/include/UI_interface.h @@ -1042,7 +1042,8 @@ void uiTemplateIDBrowse( const char *newop, const char *openop, const char *unlinkop, int filter); void uiTemplateIDPreview( uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, const char *propname, - const char *newop, const char *openop, const char *unlinkop, int rows, int cols, int filter); + const char *newop, const char *openop, const char *unlinkop, int rows, int cols, + int filter, const bool hide_buttons); void uiTemplateIDTabs( uiLayout *layout, struct bContext *C, PointerRNA *ptr, const char *propname, diff --git a/source/blender/editors/interface/interface_templates.c b/source/blender/editors/interface/interface_templates.c index 0826ba3c5cd..92346e79d1e 100644 --- a/source/blender/editors/interface/interface_templates.c +++ b/source/blender/editors/interface/interface_templates.c @@ -649,7 +649,7 @@ static uiBut *template_id_def_new_but( static void template_ID( bContext *C, uiLayout *layout, TemplateID *template_ui, StructRNA *type, int flag, const char *newop, const char *openop, const char *unlinkop, - const bool live_icon) + const bool live_icon, const bool hide_buttons) { uiBut *but; uiBlock *block; @@ -722,7 +722,7 @@ static void template_ID( UI_but_funcN_set(but, template_id_cb, MEM_dupallocN(template_ui), POINTER_FROM_INT(UI_ID_OVERRIDE)); } - if (ID_REAL_USERS(id) > 1) { + if ((ID_REAL_USERS(id) > 1) && (hide_buttons == false)) { char numstr[32]; short numstr_len; @@ -748,12 +748,14 @@ static void template_ID( if (user_alert) UI_but_flag_enable(but, UI_BUT_REDALERT); - if (id->lib == NULL && !(ELEM(GS(id->name), ID_GR, ID_SCE, ID_SCR, ID_TXT, ID_OB, ID_WS))) { + if (id->lib == NULL && !(ELEM(GS(id->name), ID_GR, ID_SCE, ID_SCR, ID_TXT, ID_OB, ID_WS)) && + (hide_buttons == false)) + { uiDefIconButR(block, UI_BTYPE_ICON_TOGGLE, 0, ICON_FAKE_USER_OFF, 0, 0, UI_UNIT_X, UI_UNIT_Y, &idptr, "use_fake_user", -1, 0, 0, -1, -1, NULL); } } - if (flag & UI_ID_ADD_NEW) { + if ((flag & UI_ID_ADD_NEW) && (hide_buttons == false)) { template_id_def_new_but(block, id, template_ui, type, newop, editable, flag & UI_ID_OPEN, false, UI_UNIT_X); } @@ -791,7 +793,7 @@ static void template_ID( /* delete button */ /* don't use RNA_property_is_unlink here */ - if (id && (flag & UI_ID_DELETE)) { + if (id && (flag & UI_ID_DELETE) && (hide_buttons == false)) { /* allow unlink if 'unlinkop' is passed, even when 'PROP_NEVER_UNLINK' is set */ but = NULL; @@ -894,7 +896,7 @@ static void ui_template_id( PointerRNA *ptr, const char *propname, const char *newop, const char *openop, const char *unlinkop, int flag, int prv_rows, int prv_cols, int filter, bool use_tabs, - float scale, bool live_icon) + float scale, const bool live_icon, const bool hide_buttons) { TemplateID *template_ui; PropertyRNA *prop; @@ -942,7 +944,9 @@ static void ui_template_id( } else { uiLayoutRow(layout, true); - template_ID(C, layout, template_ui, type, flag, newop, openop, unlinkop, live_icon); + template_ID( + C, layout, template_ui, type, flag, newop, openop, + unlinkop, live_icon, hide_buttons); } } @@ -958,7 +962,7 @@ void uiTemplateID( layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE | UI_ID_RENAME | UI_ID_DELETE, - 0, 0, filter, false, 1.0f, live_icon); + 0, 0, filter, false, 1.0f, live_icon, false); } void uiTemplateIDBrowse( @@ -969,18 +973,19 @@ void uiTemplateIDBrowse( layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE | UI_ID_RENAME, - 0, 0, filter, false, 1.0f, false); + 0, 0, filter, false, 1.0f, false, false); } void uiTemplateIDPreview( uiLayout *layout, bContext *C, PointerRNA *ptr, const char *propname, const char *newop, - const char *openop, const char *unlinkop, int rows, int cols, int filter) + const char *openop, const char *unlinkop, int rows, int cols, int filter, + const bool hide_buttons) { ui_template_id( layout, C, ptr, propname, newop, openop, unlinkop, UI_ID_BROWSE | UI_ID_RENAME | UI_ID_DELETE | UI_ID_PREVIEWS, - rows, cols, filter, false, 1.0f, false); + rows, cols, filter, false, 1.0f, false, hide_buttons); } void uiTemplateGpencilColorPreview( @@ -991,7 +996,7 @@ void uiTemplateGpencilColorPreview( layout, C, ptr, propname, NULL, NULL, NULL, UI_ID_BROWSE | UI_ID_PREVIEWS | UI_ID_DELETE, - rows, cols, filter, false, scale < 0.5f ? 0.5f : scale, false); + rows, cols, filter, false, scale < 0.5f ? 0.5f : scale, false, false); } /** @@ -1007,7 +1012,7 @@ void uiTemplateIDTabs( layout, C, ptr, propname, newop, NULL, unlinkop, UI_ID_BROWSE | UI_ID_RENAME, - 0, 0, filter, true, 1.0f, false); + 0, 0, filter, true, 1.0f, false, false); } /************************ ID Chooser Template ***************************/ diff --git a/source/blender/makesrna/intern/rna_ui_api.c b/source/blender/makesrna/intern/rna_ui_api.c index 5b51dacec76..4d361920dcb 100644 --- a/source/blender/makesrna/intern/rna_ui_api.c +++ b/source/blender/makesrna/intern/rna_ui_api.c @@ -802,6 +802,7 @@ void RNA_api_ui_layout(StructRNA *srna) RNA_def_int(func, "cols", 0, 0, INT_MAX, "Number of thumbnail preview columns to display", "", 0, INT_MAX); RNA_def_enum(func, "filter", id_template_filter_items, UI_TEMPLATE_ID_FILTER_ALL, "", "Optionally limit the items which can be selected"); + RNA_def_boolean(func, "hide_buttons", false, "", "Show only list, no buttons"); func = RNA_def_function(srna, "template_any_ID", "rna_uiTemplateAnyID"); parm = RNA_def_pointer(func, "data", "AnyType", "", "Data from which to take property"); |