user: Explain UILayout(bpy_struct) in complete detail according to the official Blender documentation.

assistant: **data** ([`AnyType`](bpy.types.AnyType.html#bpy.types.AnyType "bpy.types.AnyType"), (never None)) – Data from which to take property
            - **property** (*string**,* *(**never None**)*) – Identifier of property in data
            - **value** (*string**,* *(**never None**)*) – Enum property value
            - **text** (*string**,* *(**optional**)*) – Override automatic text of the item
            - **text_ctxt** (*string**,* *(**optional**)*) – Override automatic translation context of the given text
            - **translate** (*boolean**,* *(**optional**)*) – Translate the given text, when UI translation is enabled
            - **icon** (enum in [Icon Items](bpy_types_enum_items/icon_items.html#rna-enum-icon-items), (optional)) – Icon, Override automatic icon of the item

    prop_search(*data*, *property*, *search_data*, *search_property*, *\**, *text=''*, *text_ctxt=''*, *translate=True*, *icon='NONE'*, *results_are_suggestions=False*, *item_search_property=''*)
    :   prop_search

        Parameters:
        :   - **data** ([`AnyType`](bpy.types.AnyType.html#bpy.types.AnyType "bpy.types.AnyType"), (never None)) – Data from which to take property
            - **property** (*string**,* *(**never None**)*) – Identifier of property in data
            - **search_data** ([`AnyType`](bpy.types.AnyType.html#bpy.types.AnyType "bpy.types.AnyType"), (never None)) – Data from which to take collection to search in
            - **search_property** (*string**,* *(**never None**)*) – Identifier of search collection property
            - **text** (*string**,* *(**optional**)*) – Override automatic text of the item
            - **text_ctxt** (*string**,* *(**optional**)*) – Override automatic translation context of the given text
            - **translate** (*boolean**,* *(**optional**)*) – Translate the given text, when UI translation is enabled
            - **icon** (enum in [Icon Items](bpy_types_enum_items/icon_items.html#rna-enum-icon-items), (optional)) – Icon, Override automatic icon of the item
            - **results_are_suggestions** (*boolean**,* *(**optional**)*) – Accept inputs that do not match any item
            - **item_search_property** (*string**,* *(**optional**,* *never None**)*) – Identifier of the string property in each collection’s items to use for searching (defaults to the items’ type ‘name property’)

    prop_decorator(*data*, *property*, *\**, *index=-1*)
    :   prop_decorator

        Parameters:
        :   - **data** ([`AnyType`](bpy.types.AnyType.html#bpy.types.AnyType "bpy.types.AnyType"), (never None)) – Data from which to take property
            - **property** (*string**,* *(**never None**)*) – Identifier of property in data
            - **index** (*int in* *[**-2**,* *inf**]**,* *(**optional**)*) – The index of this button, when set a single member of an array can be accessed, when set to -1 all array members are used

    operator(*operator*, *\**, *text=''*, *text_ctxt=''*, *translate=True*, *icon='NONE'*, *emboss=True*, *depress=False*, *icon_value=0*, *search_weight=0.0*)
    :   Item. Places a button into the layout to call an Operator.

        Parameters:
        :   - **operator** (*string**,* *(**never None**)*) – Identifier of the operator
            - **text** (*string**,* *(**optional**)*) – Override automatic text of the item
            - **text_ctxt** (*string**,* *(**optional**)*) – Override automatic translation context of the given text
            - **translate** (*boolean**,* *(**optional**)*) – Translate the given text, when UI translation is enabled
            - **icon** (enum in [Icon Items](bpy_types_enum_items/icon_items.html#rna-enum-icon-items), (optional)) – Icon, Override automatic icon of the item
            - **emboss** (*boolean**,* *(**optional**)*) – Draw the button itself, not just the icon/text
            - **depress** (*boolean**,* *(**optional**)*) – Draw pressed in
            - **icon_value** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Icon Value, Override automatic icon of the item
            - **search_weight** (*float in* *[**-inf**,* *inf**]**,* *(**optional**)*) – Search Weight, Influences the sorting when using menu-seach

        Returns:
        :   Operator properties to fill in

        Return type:
        :   [`OperatorProperties`](bpy.types.OperatorProperties.html#bpy.types.OperatorProperties "bpy.types.OperatorProperties")

    operator_menu_hold(*operator*, *\**, *text=''*, *text_ctxt=''*, *translate=True*, *icon='NONE'*, *emboss=True*, *depress=False*, *icon_value=0*, *menu*)
    :   Item. Places a button into the layout to call an Operator.

        Parameters:
        :   - **operator** (*string**,* *(**never None**)*) – Identifier of the operator
            - **text** (*string**,* *(**optional**)*) – Override automatic text of the item
            - **text_ctxt** (*string**,* *(**optional**)*) – Override automatic translation context of the given text
            - **translate** (*boolean**,* *(**optional**)*) – Translate the given text, when UI translation is enabled
            - **icon** (enum in [Icon Items](bpy_types_enum_items/icon_items.html#rna-enum-icon-items), (optional)) – Icon, Override automatic icon of the item
            - **emboss** (*boolean**,* *(**optional**)*) – Draw the button itself, not just the icon/text
            - **depress** (*boolean**,* *(**optional**)*) – Draw pressed in
            - **icon_value** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Icon Value, Override automatic icon of the item
            - **menu** (*string**,* *(**never None**)*) – Identifier of the menu

        Returns:
        :   Operator properties to fill in

        Return type:
        :   [`OperatorProperties`](bpy.types.OperatorProperties.html#bpy.types.OperatorProperties "bpy.types.OperatorProperties")

    operator_enum(*operator*, *property*, *\**, *icon_only=False*)
    :   operator_enum

        Parameters:
        :   - **operator** (*string**,* *(**never None**)*) – Identifier of the operator
            - **property** (*string**,* *(**never None**)*) – Identifier of property in operator
            - **icon_only** (*boolean**,* *(**optional**)*) – Draw only icons in buttons, no text

    operator_menu_enum(*operator*, *property*, *\**, *text=''*, *text_ctxt=''*, *translate=True*, *icon='NONE'*)
    :   operator_menu_enum

        Parameters:
        :   - **operator** (*string**,* *(**never None**)*) – Identifier of the operator
            - **property** (*string**,* *(**never None**)*) – Identifier of property in operator
            - **text** (*string**,* *(**optional**)*) – Override automatic text of the item
            - **text_ctxt** (*string**,* *(**optional**)*) – Override automatic translation context of the given text
            - **translate** (*boolean**,* *(**optional**)*) – Translate the given text, when UI translation is enabled
            - **icon** (enum in [Icon Items](bpy_types_enum_items/icon_items.html#rna-enum-icon-items), (optional)) – Icon, Override automatic icon of the item

        Returns:
        :   Operator properties to fill in

        Return type:
        :   [`OperatorProperties`](bpy.types.OperatorProperties.html#bpy.types.OperatorProperties "bpy.types.OperatorProperties")

    label(*\**, *text=''*, *text_ctxt=''*, *translate=True*, *icon='NONE'*, *icon_value=0*)
    :   Item. Displays text and/or icon in the layout.

        Parameters:
        :   - **text** (*string**,* *(**optional**)*) – Override automatic text of the item
            - **text_ctxt** (*string**,* *(**optional**)*) – Override automatic translation context of the given text
            - **translate** (*boolean**,* *(**optional**)*) – Translate the given text, when UI translation is enabled
            - **icon** (enum in [Icon Items](bpy_types_enum_items/icon_items.html#rna-enum-icon-items), (optional)) – Icon, Override automatic icon of the item
            - **icon_value** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Icon Value, Override automatic icon of the item

    menu(*menu*, *\**, *text=''*, *text_ctxt=''*, *translate=True*, *icon='NONE'*, *icon_value=0*)
    :   menu

        Parameters:
        :   - **menu** (*string**,* *(**never None**)*) – Identifier of the menu
            - **text** (*string**,* *(**optional**)*) – Override automatic text of the item
            - **text_ctxt** (*string**,* *(**optional**)*) – Override automatic translation context of the given text
            - **translate** (*boolean**,* *(**optional**)*) – Translate the given text, when UI translation is enabled
            - **icon** (enum in [Icon Items](bpy_types_enum_items/icon_items.html#rna-enum-icon-items), (optional)) – Icon, Override automatic icon of the item
            - **icon_value** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Icon Value, Override automatic icon of the item

    menu_contents(*menu*)
    :   menu_contents

        Parameters:
        :   **menu** (*string**,* *(**never None**)*) – Identifier of the menu

    popover(*panel*, *\**, *text=''*, *text_ctxt=''*, *translate=True*, *icon='NONE'*, *icon_value=0*)
    :   popover

        Parameters:
        :   - **panel** (*string**,* *(**never None**)*) – Identifier of the panel
            - **text** (*string**,* *(**optional**)*) – Override automatic text of the item
            - **text_ctxt** (*string**,* *(**optional**)*) – Override automatic translation context of the given text
            - **translate** (*boolean**,* *(**optional**)*) – Translate the given text, when UI translation is enabled
            - **icon** (enum in [Icon Items](bpy_types_enum_items/icon_items.html#rna-enum-icon-items), (optional)) – Icon, Override automatic icon of the item
            - **icon_value** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Icon Value, Override automatic icon of the item

    popover_group(*space_type*, *region_type*, *context*, *category*)
    :   popover_group

        Parameters:
        :   - **space_type** (enum in [Space Type Items](bpy_types_enum_items/space_type_items.html#rna-enum-space-type-items)) – Space Type
            - **region_type** (enum in [Region Type Items](bpy_types_enum_items/region_type_items.html#rna-enum-region-type-items)) – Region Type
            - **context** (*string**,* *(**never None**)*) – panel type context
            - **category** (*string**,* *(**never None**)*) – panel type category

    separator(*\**, *factor=1.0*, *type='AUTO'*)
    :   Item. Inserts empty space into the layout between items.

        Parameters:
        :   - **factor** (*float in* *[**0**,* *inf**]**,* *(**optional**)*) – Percentage, Percentage of width to space (leave unset for default space)
            - **type** (enum in [`'AUTO'`, `'SPACE'`, `'LINE'`], (optional)) –

              Type, The type of the separator

              - `AUTO`
                Auto – Best guess at what type of separator is needed..
              - `SPACE`
                Empty space – Horizontal or Vertical empty space, depending on layout direction..
              - `LINE`
                Line – Horizontal or Vertical line, depending on layout direction..

    separator_spacer()
    :   Item. Inserts horizontal spacing empty space into the layout between items.

    progress(*\**, *text=''*, *text_ctxt=''*, *translate=True*, *factor=0.0*, *type='BAR'*)
    :   Progress indicator

        Parameters:
        :   - **text** (*string**,* *(**optional**)*) – Override automatic text of the item
            - **text_ctxt** (*string**,* *(**optional**)*) – Override automatic translation context of the given text
            - **translate** (*boolean**,* *(**optional**)*) – Translate the given text, when UI translation is enabled
            - **factor** (*float in* *[**0**,* *1**]**,* *(**optional**)*) – Factor, Amount of progress from 0.0f to 1.0f
            - **type** (enum in [`'BAR'`, `'RING'`], (optional)) – Type, The type of progress indicator

    context_pointer_set(*name*, *data*)
    :   context_pointer_set

        Parameters:
        :   - **name** (*string**,* *(**never None**)*) – Name, Name of entry in the context
            - **data** ([`AnyType`](bpy.types.AnyType.html#bpy.types.AnyType "bpy.types.AnyType")) – Pointer to put in context

    context_string_set(*name*, *value*)
    :   context_string_set

        Parameters:
        :   - **name** (*string**,* *(**never None**)*) – Name, Name of entry in the context
            - **value** (*string**,* *(**never None**)*) – Value, String to put in context

    template_header()
    :   Inserts common Space header UI (editor type selector)

    template_ID(*data*, *property*, *\**, *new=''*, *open=''*, *unlink=''*, *filter='ALL'*, *live_icon=False*, *text=''*, *text_ctxt=''*, *translate=True*)
    :   template_ID

        Parameters:
        :   - **data** ([`AnyType`](bpy.types.AnyType.html#bpy.types.AnyType "bpy.types.AnyType"), (never None)) – Data from which to take property
            - **property** (*string**,* *(**never None**)*) – Identifier of property in data
            - **new** (*string**,* *(**optional**,* *never None**)*) – Operator identifier to create a new ID block
            - **open** (*string**,* *(**optional**,* *never None**)*) – Operator identifier to open a file for creating a new ID block
            - **unlink** (*string**,* *(**optional**,* *never None**)*) – Operator identifier to unlink the ID block
            - **filter** (enum in [`'ALL'`, `'AVAILABLE'`], (optional)) – Optionally limit the items which can be selected
            - **live_icon** (*boolean**,* *(**optional**)*) – Show preview instead of fixed icon
            - **text** (*string**,* *(**optional**)*) – Override automatic text of the item
            - **text_ctxt** (*string**,* *(**optional**)*) – Override automatic translation context of the given text
            - **translate** (*boolean**,* *(**optional**)*) – Translate the given text, when UI translation is enabled

    template_ID_preview(*data*, *property*, *\**, *new=''*, *open=''*, *unlink=''*, *rows=0*, *cols=0*, *filter='ALL'*, *hide_buttons=False*)
    :   template_ID_preview

        Parameters:
        :   - **data** ([`AnyType`](bpy.types.AnyType.html#bpy.types.AnyType "bpy.types.AnyType"), (never None)) – Data from which to take property
            - **property** (*string**,* *(**never None**)*) – Identifier of property in data
            - **new** (*string**,* *(**optional**,* *never None**)*) – Operator identifier to create a new ID block
            - **open** (*string**,* *(**optional**,* *never None**)*) – Operator identifier to open a file for creating a new ID block
            - **unlink** (*string**,* *(**optional**,* *never None**)*) – Operator identifier to unlink the ID block
            - **rows** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Number of thumbnail preview rows to display
            - **cols** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Number of thumbnail preview columns to display
            - **filter** (enum in [`'ALL'`, `'AVAILABLE'`], (optional)) – Optionally limit the items which can be selected
            - **hide_buttons** (*boolean**,* *(**optional**)*) – Show only list, no buttons

    template_matrix(*data*, *property*)
    :   Insert a readonly Matrix UI. The UI displays the matrix components - translation, rotation and scale. The **property** argument must be the identifier of an existing 4x4 float vector property of subtype ‘MATRIX’.

        Parameters:
        :   - **data** ([`AnyType`](bpy.types.AnyType.html#bpy.types.AnyType "bpy.types.AnyType"), (never None)) – Data from which to take property
            - **property** (*string**,* *(**never None**)*) – Identifier of property in data

    template_any_ID(*data*, *property*, *type_property*, *\**, *text=''*, *text_ctxt=''*, *translate=True*)
    :   template_any_ID

        Parameters:
        :   - **data** ([`AnyType`](bpy.types.AnyType.html#bpy.types.AnyType "bpy.types.AnyType"), (never None)) – Data from which to take property
            - **property** (*string**,* *(**never None**)*) – Identifier of property in data
            - **type_property** (*string**,* *(**never None**)*) – Identifier of property in data giving the type of the ID-blocks to use
            - **text** (*string**,* *(**optional**)*) – Override automatic text of the item
            - **text_ctxt** (*string**,* *(**optional**)*) – Override automatic translation context of the given text
            - **translate** (*boolean**,* *(**optional**)*) – Translate the given text, when UI translation is enabled

    template_ID_tabs(*data*, *property*, *\**, *new=''*, *menu=''*, *filter='ALL'*)
    :   template_ID_tabs

        Parameters:
        :   - **data** ([`AnyType`](bpy.types.AnyType.html#bpy.types.AnyType "bpy.types.AnyType"), (never None)) – Data from which to take property
            - **property** (*string**,* *(**never None**)*) – Identifier of property in data
            - **new** (*string**,* *(**optional**,* *never None**)*) – Operator identifier to create a new ID block
            - **menu** (*string**,* *(**optional**,* *never None**)*) – Context menu identifier
            - **filter** (enum in [`'ALL'`, `'AVAILABLE'`], (optional)) – Optionally limit the items which can be selected

    template_action(*id*, *\**, *new=''*, *unlink=''*, *text=''*, *text_ctxt=''*, *translate=True*)
    :   template_action

        Parameters:
        :   - **id** ([`ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID"), (never None)) – The data-block for which to select an Action
            - **new** (*string**,* *(**optional**,* *never None**)*) – Operator identifier to create a new ID block
            - **unlink** (*string**,* *(**optional**,* *never None**)*) – Operator identifier to unlink the ID block
            - **text** (*string**,* *(**optional**)*) – Override automatic text of the item