user: Give a detailed overview of UILayout(bpy_struct): syntax, arguments, return values, common patterns.

assistant:     - **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_search(*data*, *property*, *search_data*, *search_property*, *\**, *new=''*, *unlink=''*, *text=''*, *text_ctxt=''*, *translate=True*)
    :   template_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
            - **new** (*string**,* *(**optional**,* *never None**)*) – Operator identifier to create a new item for the collection
            - **unlink** (*string**,* *(**optional**,* *never None**)*) – Operator identifier to unlink or delete the active item from the collection
            - **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_search_preview(*data*, *property*, *search_data*, *search_property*, *\**, *new=''*, *unlink=''*, *text=''*, *text_ctxt=''*, *translate=True*, *rows=0*, *cols=0*)
    :   template_search_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
            - **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
            - **new** (*string**,* *(**optional**,* *never None**)*) – Operator identifier to create a new item for the collection
            - **unlink** (*string**,* *(**optional**,* *never None**)*) – Operator identifier to unlink or delete the active item from the collection
            - **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
            - **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

    template_path_builder(*data*, *property*, *root*, *\**, *text=''*, *text_ctxt=''*, *translate=True*)
    :   template_path_builder

        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
            - **root** ([`ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID")) – ID-block from which path is evaluated from
            - **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_modifiers()
    :   Generates the UI layout for the modifier stack

    template_strip_modifiers()
    :   Generates the UI layout for the strip modifier stack

    template_collection_exporters()
    :   Generates the UI layout for collection exporters

    template_constraints(*\**, *use_bone_constraints=True*)
    :   Generates the panels for the constraint stack

        Parameters:
        :   **use_bone_constraints** (*boolean**,* *(**optional**)*) – Add panels for bone constraints instead of object constraints

    template_shaderfx()
    :   Generates the panels for the shader effect stack

    template_greasepencil_color(*data*, *property*, *\**, *rows=0*, *cols=0*, *scale=1.0*, *filter='ALL'*)
    :   template_greasepencil_color

        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
            - **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
            - **scale** (*float in* *[**0.1**,* *1.5**]**,* *(**optional**)*) – Scale of the image thumbnails
            - **filter** (enum in [`'ALL'`, `'AVAILABLE'`], (optional)) – Optionally limit the items which can be selected

    template_constraint_header(*data*)
    :   Generates the header for constraint panels

        Parameters:
        :   **data** ([`Constraint`](bpy.types.Constraint.html#bpy.types.Constraint "bpy.types.Constraint"), (never None)) – Constraint data

    template_preview(*id*, *\**, *show_buttons=True*, *parent=None*, *slot=None*, *preview_id=''*)
    :   Item. A preview window for materials, textures, lights or worlds.

        Parameters:
        :   - **id** ([`ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID")) – ID data-block
            - **show_buttons** (*boolean**,* *(**optional**)*) – Show preview buttons?
            - **parent** ([`ID`](bpy.types.ID.html#bpy.types.ID "bpy.types.ID"), (optional)) – ID data-block
            - **slot** ([`TextureSlot`](bpy.types.TextureSlot.html#bpy.types.TextureSlot "bpy.types.TextureSlot"), (optional)) – Texture slot
            - **preview_id** (*string**,* *(**optional**,* *never None**)*) – Identifier of this preview widget, if not set the ID type will be used (i.e. all previews of materials without explicit ID will have the same size…).

    template_curve_mapping(*data*, *property*, *\**, *type='NONE'*, *levels=False*, *brush=False*, *use_negative_slope=False*, *show_tone=False*, *show_presets=False*)
    :   Item. A curve mapping widget used for e.g falloff curves for lights.

        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** (enum in [`'NONE'`, `'VECTOR'`, `'COLOR'`, `'HUE'`], (optional)) – Type, Type of curves to display
            - **levels** (*boolean**,* *(**optional**)*) – Show black/white levels
            - **brush** (*boolean**,* *(**optional**)*) – Show brush options
            - **use_negative_slope** (*boolean**,* *(**optional**)*) – Use a negative slope by default
            - **show_tone** (*boolean**,* *(**optional**)*) – Show tone options
            - **show_presets** (*boolean**,* *(**optional**)*) – Show preset options

    template_curveprofile(*data*, *property*)
    :   A profile path editor used for custom profiles

        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_color_ramp(*data*, *property*, *\**, *expand=False*)
    :   Item. A color ramp widget.

        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
            - **expand** (*boolean**,* *(**optional**)*) – Expand button to show more detail

    template_icon(*icon_value*, *\**, *scale=1.0*)
    :   Display a large icon

        Parameters:
        :   - **icon_value** (*int in* *[**0**,* *inf**]*) – Icon to display
            - **scale** (*float in* *[**1**,* *100**]**,* *(**optional**)*) – Scale, Scale the icon size (by the button size)

    template_icon_view(*data*, *property*, *\**, *show_labels=False*, *scale=6.0*, *scale_popup=5.0*)
    :   Enum. Large widget showing Icon previews.

        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
            - **show_labels** (*boolean**,* *(**optional**)*) – Show enum label in preview buttons
            - **scale** (*float in* *[**1**,* *100**]**,* *(**optional**)*) – UI Units, Scale the button icon size (by the button size)
            - **scale_popup** (*float in* *[**1**,* *100**]**,* *(**optional**)*) – Scale, Scale the popup icon size (by the button size)

    template_histogram(*data*, *property*)
    :   Item. A histogramm widget to analyze imaga data.

        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_waveform(*data*, *property*)
    :   Item. A waveform widget to analyze imaga data.

        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_vectorscope(*data*, *property*)
    :   Item. A vectorscope widget to analyze imaga data.

        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_layers(*data*, *property*, *used_layers_data*, *used_layers_property*, *active_layer*)
    :   template_layers

        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
            - **used_layers_data** ([`AnyType`](bpy.types.AnyType.html#bpy.types.AnyType "bpy.types.AnyType")) – Data from which to take property
            - **used_layers_property** (*string**,* *(**never None**)*) – Identifier of property in data
            - **active_layer** (*int in* *[**0**,* *inf**]*) – Active Layer

    template_color_picker(*data*, *property*, *\**, *value_slider=False*, *lock=False*, *lock_luminosity=False*, *cubic=False*)
    :   Item. A color wheel widget to pick colors.

        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
            - **value_slider** (*boolean**,* *(**optional**)*) – Display the value slider to the right of the color wheel
            - **lock** (*boolean**,* *(**optional**)*) – Lock the color wheel display to value 1.0 regardless of actual color
            - **lock_luminosity** (*boolean**,* *(**optional**)*) – Keep the color at its original vector length
            - **cubic** (*boolean**,* *(**optional**)*) – Cubic saturation for picking values close to white

    template_palette(*data*, *property*, *\**, *color=False*)
    :   Item. A palette used to pick colors.

        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
            - **color** (*boolean**,* *(**optional**)*) – Display the colors as colors or values

    template_image_layers(*image*, *image_user*)
    :   template_image_layers

    template_image(*data*, *property*, *image_user*, *\**, *compact=False*, *multiview=False*)
    :   Item(s). User interface for selecting images and their source paths.

        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
            - **compact** (*boolean**,* *(**optional**)*) – Use more compact layout
            - **multiview** (*boolean**,* *(**optional**)*) – Expose Multi-View options

    template_image_settings(*image_settings*, *\**, *color_management=False*)
    :   User interface for setting image format options

        Parameters:
        :   **color_management** (*boolean**,* *(**optional**)*) – Show color management settings

    template_image_stereo_3d(*stereo_3d_format*)
    :   User interface for setting image stereo 3d options

    template_image_views(*image_settings*)
    :   User interface for setting image views output options

    template_movieclip(*data*, *property*, *\**, *compact=False*)
    :   Item(s). User interface for selecting movie clips and their source paths.

        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
            - **compact** (*boolean**,* *(**optional**)*) – Use more compact layout

    template_track(*data*, *property*)
    :   Item. A movie-track widget to preview tracking image.

        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_marker(*data*, *property*, *clip_user*, *track*, *\**, *compact=False*)
    :   Item. A widget to control single marker settings.

        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
            - **compact** (*boolean**,* *(**optional**)*) – Use more compact layout

    template_movieclip_information(*data*, *property*, *clip_user*)
    :   Item. Movie clip information data.

        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_list(*listtype_name*, *list_id*, *dataptr*, *propname*, *active_dataptr*, *active_propname*, *\**, *item_dyntip_propname=''*, *rows=5*, *maxrows=5*, *type='DEFAULT'*, *columns=9*, *sort_reverse=False*, *sort_lock=False*)
    :   Item. A list widget to display data, e.g. vertexgroups.

        Parameters:
        :   - **listtype_name** (*string**,* *(**never None**)*) – Identifier of the list type to use
            - **list_id** (*string**,* *(**never None**)*) – Identifier of this list widget. Necessary to tell apart different list widgets. Mandatory when using default “UI_UL_list” class. If this not an empty string, the uilist gets a custom ID, otherwise it takes the name of the class used to define the uilist (for example, if the class name is “OBJECT_UL_vgroups”, and list_id is not set by the script, then bl_idname = “OBJECT_UL_vgroups”)
            - **dataptr** ([`AnyType`](bpy.types.AnyType.html#bpy.types.AnyType "bpy.types.AnyType")) – Data from which to take the Collection property
            - **propname** (*string**,* *(**never None**)*) – Identifier of the Collection property in data
            - **active_dataptr** ([`AnyType`](bpy.types.AnyType.html#bpy.types.AnyType "bpy.types.AnyType"), (never None)) – Data from which to take the integer property, index of the active item
            - **active_propname** (*string**,* *(**never None**)*) – Identifier of the integer property in active_data, index of the active item
            - **item_dyntip_propname** (*string**,* *(**optional**,* *never None**)*) – Identifier of a string property in items, to use as tooltip content
            - **rows** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Default and minimum number of rows to display
            - **maxrows** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Default maximum number of rows to display
            - **type** (enum in [Uilist Layout Type Items](bpy_types_enum_items/uilist_layout_type_items.html#rna-enum-uilist-layout-type-items), (optional)) – Type, Type of layout to use
            - **columns** (*int in* *[**0**,* *inf**]**,* *(**optional**)*) – Number of items to display per row, for GRID layout
            - **sort_reverse** (*boolean**,* *(**optional**)*) – Display items in reverse order by default
            - **sort_lock** (*boolean**,* *(**optional**)*) –