It used to be possible to add a ReferenceWidget by calling oLayout.AddItem( “Param”, “ref”, “ReferenceWidget” ) in your DefineLayout. But that was four or five years ago, and it no longer works.
def MyProperty3333_DefineLayout( in_ctxt ): oLayout = in_ctxt.Source oLayout.Clear() # Test some other control types oLayout.AddItem( "Param", "txt", "Texture Space" ) oLayout.AddItem( "Param", "scnref", "SceneReferenceWidget" ) # Doesn't work oLayout.AddItem( "Param", "ref", "ReferenceWidget" ) # Doesn't work oPPGItem = oLayout.AddItem( "Param", "", "dscontrol" ) ; oPPGItem.SetAttribute( "UIType", "ReferenceWidget" );
For reference 😉 this is a ReferenceWidget:

And this is how a ReferenceWidget is added in SPDL:
Parameter "inst_source" input
{
title = "Instance source";
guid = "{5620730D-AEFC-4C4A-B1DF-9377E808E27B}";
type = reference;
}
...
inst_source
{
Name = "Source Object";
UIType = "ReferenceWidget.ReferenceWidget.1"
{
filter = "{6B579D20-3DC5-11D0-9449-00AA006D3165}";
mode = "single";
}
}