static VisualElement BuildFieldEnumEditor(EnumConstantNodeModel enumConstant, Action <Enum> onNewEnumValue) { var enumEditor = new EnumField(enumConstant.EnumValue); enumEditor.RegisterValueChangedCallback(evt => { onNewEnumValue(evt.newValue); }); return(enumEditor); }
public static VisualElement BuildEnumEditor(this IConstantEditorBuilder builder, EnumConstantNodeModel enumConstant) { void TriggerOnValueChange(Enum newEnumValue) { var oldValue = enumConstant.value; var newValue = enumConstant.value; newValue.Value = Convert.ToInt32(newEnumValue); builder.TriggerOnValueChanged(oldValue, newValue); } Type enumType = enumConstant.EnumType.Resolve(enumConstant.GraphModel.Stencil); VisualElement editor = enumType == typeof(KeyCode) ? BuildSearcherEnumEditor(enumConstant.EnumValue, enumType, TriggerOnValueChange) : BuildFieldEnumEditor(enumConstant, TriggerOnValueChange); editor.SetEnabled(!enumConstant.IsLocked); return(editor); }
public static VisualElement BuildEnumEditor(this IConstantEditorBuilder builder, EnumConstantNodeModel enumConstant) { var enumEditor = new Button { text = enumConstant.EnumValue.ToString() }; // TODO use a bindable element enumEditor.clickable.clickedWithEventInfo += e => { SearcherService.ShowEnumValues("Pick a value", enumConstant.EnumType.Resolve(enumConstant.GraphModel.Stencil), e.originalMousePosition, (v, i) => { enumConstant.value.Value = Convert.ToInt32(v); enumEditor.text = v.ToString(); builder.OnValueChanged?.Invoke(null); }); }; enumEditor.SetEnabled(!enumConstant.IsLocked); return(enumEditor); }