Property Widget Builder Delegates#

omni.flux.property_widget_builder.delegates contains reusable property fields for items from omni.flux.property_widget_builder.widget. Its public fields include the shared typed-value editors, file picker, and ComboBox used by USD, Material, Object, and native property models.

Responsibilities#

  • Build reusable property value fields and grouped numeric drag rows.

  • Coordinate linked-row controls, value routing, focus, commit, cancel, unlink, and one-active-row behavior.

  • Use item-owned linked state and value operations so rows remain linked across widget rebuilds.

Non-Responsibilities#

  • Does not author USD or implement USD multi-selection, undo, refresh, or failure recovery. The USD property model owns those operations through its item and value models.

  • Does not choose which field represents an item. Property-widget models and field-builder registrations own that mapping.

Architecture#

Subclass AbstractField and implement build_ui(). Prefer an existing shared field before adding a product-specific editor. FilePicker accepts stable field and picker identifiers. Relative-path pickers must also provide the keyword-only stage_resolver callback; constructing FilePicker(use_relative_paths=True) without that explicit USD stage capability raises ValueError. ComboboxField consumes an ui.AbstractItemModel supplied by the property value model.

AbstractDragFieldGroup builds and coordinates numeric fields in one row. Pass linkable=True to opt a Float or Int group into link controls, linked presentation, focus, commit, cancel, unlink, and value routing. The item owns the authoritative linked state and value operations. DragFieldGroupCoordinator keeps one row linked within a property panel and resolves deferred focus against the newest visual build after tree virtualization rebuilds a row. Linked state persists across focus changes and ends only when explicitly unlinked or when another row is linked.

AbstractDragFieldGroup owns the shared linked typed-editor lifecycle. FloatDragFieldGroup and IntDragFieldGroup provide only their native numeric model, field, and value-conversion hooks. Domain-specific items can override the standard linked-state and value-operation methods when they require atomic writes, undo, refresh, or failure recovery.