Override template: Add text and icon optional parameters
authorDalai Felinto <dfelinto@gmail.com>
Wed, 5 Jul 2017 12:44:19 +0000 (14:44 +0200)
committerDalai Felinto <dfelinto@gmail.com>
Wed, 5 Jul 2017 15:58:27 +0000 (17:58 +0200)
source/blender/editors/include/UI_interface.h
source/blender/editors/interface/interface_templates.c
source/blender/makesrna/intern/rna_ui_api.c

index b3c95aa07129e4002f6345ae3c5601daa50fe4cc..42386c7ecac7ece18d4d86d10a535b4d444d83c7 100644 (file)
@@ -956,7 +956,11 @@ void uiTemplateHeader3D(uiLayout *layout, struct bContext *C);
 void uiTemplateEditModeSelection(uiLayout *layout, struct bContext *C);
 void uiTemplateReportsBanner(uiLayout *layout, struct bContext *C);
 void uiTemplateKeymapItemProperties(uiLayout *layout, struct PointerRNA *ptr);
-void uiTemplateOverrideProperty(uiLayout *layout, struct PointerRNA *collection_props_ptr, struct PointerRNA *scene_props_ptr, const char *name, const char *custom_template);
+void uiTemplateOverrideProperty(
+        uiLayout *layout, struct PointerRNA *collection_props_ptr, struct PointerRNA *scene_props_ptr,
+        const char *propname,
+        const char *name, const char *text_ctxt, int translate, int icon,
+        const char *custom_template);
 void uiTemplateComponentMenu(uiLayout *layout, struct PointerRNA *ptr, const char *propname, const char *name);
 void uiTemplateNodeSocket(uiLayout *layout, struct bContext *C, float *color);
 void uiTemplateCacheFile(uiLayout *layout, struct bContext *C, struct PointerRNA *ptr, const char *propname);
index 083e29ac28b5435286b0820daee09d988f56b818..e21f09fad6125aa0562c99cf52b39a6631429a78 100644 (file)
@@ -4000,7 +4000,10 @@ void uiTemplateKeymapItemProperties(uiLayout *layout, PointerRNA *ptr)
 
 /********************************* Overrides *************************************/
 
-void uiTemplateOverrideProperty(uiLayout *layout, struct PointerRNA *collection_props_ptr, struct PointerRNA *scene_props_ptr, const char *name, const char *custom_template)
+void uiTemplateOverrideProperty(
+        uiLayout *layout, PointerRNA *collection_props_ptr, PointerRNA *scene_props_ptr, const char *propname,
+        const char *name, const char *text_ctxt, int translate, int icon,
+        const char *custom_template)
 {
        bool is_set = false;
        uiLayout *row, *col;
@@ -4010,27 +4013,30 @@ void uiTemplateOverrideProperty(uiLayout *layout, struct PointerRNA *collection_
 
        IDProperty *collection_props = collection_props_ptr->data;
 
-       if (IDP_GetPropertyFromGroup(collection_props, name)) {
-               prop = RNA_struct_find_property(collection_props_ptr, name);
+       if (IDP_GetPropertyFromGroup(collection_props, propname)) {
+               prop = RNA_struct_find_property(collection_props_ptr, propname);
                ptr = collection_props_ptr;
                is_set = RNA_property_is_set(ptr, prop);
        }
        else {
                /* property doesn't exist yet */
-               prop = RNA_struct_find_property(scene_props_ptr, name);
+               prop = RNA_struct_find_property(scene_props_ptr, propname);
                ptr = scene_props_ptr;
        }
 
+       /* Get translated name (label). */
+       name = RNA_translate_ui_text(name, text_ctxt, NULL, prop, translate);
+
        row = uiLayoutRow(layout, false);
        col = uiLayoutColumn(row, false);
 
        uiLayoutSetEnabled(col, is_set);
 
        if (custom_template && STREQ(custom_template, "icon_view")) {
-               uiTemplateIconView(col, ptr, name, false, 5.0f);
+               uiTemplateIconView(col, ptr, propname, false, 5.0f);
        }
        else {
-               uiItemFullR(col, ptr, prop, -1, 0, 0, NULL, ICON_NONE);
+               uiItemFullR(col, ptr, prop, -1, 0, 0, name, icon);
        }
 
        col = uiLayoutColumn(row, false);
index 76ff29152764f3010d7f448e0cc0090676c6c092..fd7346379a1e76fa3f5a4b437476a74480d3b7ae 100644 (file)
@@ -918,6 +918,7 @@ void RNA_api_ui_layout(StructRNA *srna)
        RNA_def_parameter_flags(parm, PROP_NEVER_NULL, PARM_REQUIRED | PARM_RNAPTR);
        parm = RNA_def_string(func, "property", NULL, 0, "", "Identifier of property in collection_properties");
        RNA_def_parameter_flags(parm, 0, PARM_REQUIRED);
+       api_ui_item_common(func);
        parm = RNA_def_string(func, "custom_template", NULL, 0, "", "Optional template to use for property");
 
        func = RNA_def_function(srna, "template_component_menu", "uiTemplateComponentMenu");