| Quintiq file version 2.0 | 
| #parent: ListLibOpt_BT_UICustomSetting/DataHolderOwner | 
| Response OnCreated () id:Response_ListLibOpt_BT_UICustomSetting_DataHolderOwner_OnCreated | 
| { | 
|   #keys: '[139544.1.1248681456]' | 
|   Body: | 
|   [* | 
|     owner := construct( shadow[LibOpt_UIOwner] );  | 
|      | 
|     type := typeof( LibOpt_BT_CustomSetting ); | 
|      | 
|     allowed_args := construct( structured_Type ); | 
|     allowed_args.Add( typeof( LibOpt_Optimizer ) ); | 
|     allowed_args.Add( typeof( LibOpt_Optimization ) ); | 
|      | 
|     tv := type.TypeView(); | 
|     stats := selectset( tv, Statics, stat, | 
|                         stat.Arguments( relsize ) = 1 and | 
|                         allowed_args.Find( stat.Arguments( relget ).Element( 0 ).ElementType() ) >= 0 ); | 
|      | 
|     instance := Dialog.Data().WrappedInstance(); | 
|     levels := instance.GetSettingsAncestors(); | 
|      | 
|     levels.Add( instance ); | 
|     existing := selectset( levels, Elements.CustomSetting, cs, true ); | 
|     traverse( existing, Elements, cs ) | 
|     { | 
|       stat := select( stats, Elements, stat,  | 
|                       stat.Name() = cs.MethodName() | 
|                       and stat.Arguments( relget ).Element( 0 ).ElementType().Name() = cs.ArgumentType() ); | 
|       owner.UICustomSetting( relnew, MethodName := cs.MethodName(), | 
|                                      ArgumentType := cs.ArgumentType(), | 
|                                      Description := guard( stat.Description(), '' ), | 
|                                      CanMove := cs.TrackingTableBase() = instance, | 
|                                      DefinedOn := cs.TrackingTableBase().GetName(), | 
|                                      IsCreated := true | 
|                                      ); | 
|     } | 
|      | 
|     // Find non-existing | 
|     set := selectvalues( existing, Elements, cs, true, cs.MethodName() + '(' + cs.ArgumentType() + ')' ); | 
|      | 
|     traverse( stats, Elements, stat ) | 
|     { | 
|       arg := stat.Arguments( relget ).Element( 0 ); | 
|       if( set.Find( stat.Name() + '(' + arg.ElementType().Name() + ')' ) < 0 ) | 
|       { | 
|         owner.UICustomSetting( relnew, MethodName := stat.Name(), | 
|                                        ArgumentType := arg.ElementType().Name(), | 
|                                        Description := stat.Description(), | 
|                                        CanMove := true, | 
|                                        IsCreated := false ); | 
|       } | 
|     } | 
|      | 
|     this.Data( & owner ); | 
|   *] | 
|   CanBindMultiple: false | 
|   DefinitionID: 'Responsedef_GUIComponent_OnCreated' | 
| } |