Usage Examples#

Create a Basic LayerStackWidget#

import omni.ui as ui
from omni.kit.window.layer_stack import LayerStackWidget

# Define callback for prim selection changes
def on_prim_selection_changed(prim_path):
    print(f"Selected prim path: {prim_path}")

# Create a window
window = ui.Window("Layer Stack Widget Example", width=800, height=600)

with window.frame:
    # Create a simple layout with the LayerStackWidget
    with ui.VStack():
        ui.Label("USD Layer Stack")
        # Initialize the LayerStackWidget with selection callback
        layer_stack_widget = LayerStackWidget(on_prim_selection_changed=on_prim_selection_changed)

        # The widget will automatically populate with layer stack information
        # for the current stage and selection

Manage Layer Stack Properties#

import omni.ui as ui
from omni.kit.window.layer_stack import LayerStackWidget

# Create a window
window = ui.Window("Layer Stack Property Management", width=800, height=600)

# Callback for prim selection changes
def on_prim_selection_changed(prim_path):
    print(f"Selected prim: {prim_path}")

with window.frame:
    with ui.VStack():
        # Create the LayerStackWidget
        layer_stack_widget = LayerStackWidget(on_prim_selection_changed=on_prim_selection_changed)

        # Property display area
        with ui.HStack(height=30):
            ui.Label("Selected Property:")
            property_label = ui.Label("None")

        # UI for managing the widget and properties
        with ui.HStack(height=30):
            # Get and display the currently selected property
            def show_selected_property():
                prop = layer_stack_widget.selected_property
                property_label.text = str(prop) if prop else "None"

            ui.Button("Show Selected Property", clicked_fn=show_selected_property)

            # Set a property as selected (in a real app, this would be a real property)
            def set_example_property():
                example_property = "example_property"
                layer_stack_widget.selected_property = example_property
                property_label.text = str(example_property)

            ui.Button("Set Example Property", clicked_fn=set_example_property)

            # Clear the widget
            def clear_widget():
                layer_stack_widget.clear()
                property_label.text = "None"

            ui.Button("Clear Widget", clicked_fn=clear_widget)