internal static IDataField CreateDataField(IField field, ModuleSchema schema) { return(field switch { StringField f => new StringDataField(f), BooleanField f => new BooleanDataField(f), NumericField f => new NumericDataField(f), EnumField f => new EnumDataField(f), InstrumentField f => new InstrumentDataField(f, schema), OverlayField f => new OverlayDataField(f, schema), TempoField f => new TempoDataField(f), _ => throw new ArgumentException($"Can't handle {field} yet") });
private IEnumerable <KeyValueViewModel> GenerateFields() { foreach (var field in Model.Container.Fields) { // TODO: A FieldViewModel? string value = field switch { InstrumentField _ => "Instrument", OverlayField f => $"Overlay; {f.FieldLists.Count} lists; {f.NestedFieldCount} nested fields", BooleanField _ => "Boolean", EnumField f => $"Enum ({f.Values.Count} values)", NumericField f => $"Numeric: {f.Min}-{f.Max}", StringField f => $"String ({f.Length})", _ => throw new InvalidOperationException($"Unexpected field type: {field?.GetType()}") }; yield return(new KeyValueViewModel(field.Description, value)); } }
private IEnumerable <KeyValueViewModel> GenerateFields() { foreach (var field in Model.Container.Fields) { // TODO: A FieldViewModel? string value = field switch { InstrumentField _ => "Instrument", OverlayField f => $"Overlay; {f.FieldLists.Count} lists; {f.NestedFieldCount} nested fields", BooleanField _ => "Boolean", EnumField f => $"Enum ({f.Values.Count} values)", NumericField f => $"Numeric: {f.Min}-{f.Max}", StringField f => $"String ({f.Length})", TempoField f => "Tempo", _ => throw new InvalidOperationException($"Unexpected field type: {field?.GetType()}") }; string?valueToolTip = field switch { EnumField f => string.Join("\r\n", f.Values.Select(value => $"{f.RawNumberByName[value]}: {value}")), _ => null }; yield return(new KeyValueViewModel($"{field.Offset}: {field.Description}", value, keyToolTip: null, valueToolTip)); } }