Add hide_buttons option to template_ID_preview
authorAntonioya <blendergit@gmail.com>
Fri, 2 Nov 2018 16:30:09 +0000 (17:30 +0100)
committerAntonioya <blendergit@gmail.com>
Fri, 2 Nov 2018 18:28:36 +0000 (19:28 +0100)
When use the template in the topbar for only select an ID is very annoying to have the buttons after the name and only adds noise to the selector.

This option hide the number of users, new and delete buttons to get a cleaner topbar selector.

By default the parameter is disabled in order to keep all existing code/UI running.

source/blender/editors/include/UI_interface.h
source/blender/editors/interface/interface_templates.c
source/blender/makesrna/intern/rna_ui_api.c

index 51347c7c2307f226050adafa646710b859cc0a30..e440f6a3d98fb783bffc4e7345d8adf1b54a872c 100644 (file)
@@ -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,
index 0826ba3c5cdd2d8fa438b4a4ba6e6d5eff768aec..92346e79d1e9570cceb07e563657884408fc6399 100644 (file)
@@ -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 ***************************/
index 5b51dacec769dc1dcd7c128d8f8ccf1feb437ff6..4d361920dcb2983f89b769b078ab735f7a6bb9da 100644 (file)
@@ -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");