public void WriteInput(OperatorPart opPart) { Writer.WriteStartObject(); Writer.WriteValue("Name", opPart.Name); Writer.WriteValue("ID", opPart.ID); Writer.WriteValue("Type", opPart.Type); Writer.WriteValue("Value", ValueUtilities.GetValueForTypeFromContext(opPart.Type, opPart.Eval(new OperatorPartContext()))); Writer.WriteEndObject(); }
private void WriteOperatorInstanceProperties(MetaOperator parentOp, Guid metaOpInstanceID, MetaOperator metaOp, MetaOperator.InstanceProperties opProperties) { Writer.WriteStartObject(); Writer.WriteValue("Name", opProperties.Name); Writer.WriteValue("PosX", opProperties.Position.X); Writer.WriteValue("PosY", opProperties.Position.Y); Writer.WriteValue("Width", opProperties.Width); Writer.WriteValue("Visible", opProperties.Visible); Writer.WriteValue("Disabled", opProperties.Disabled); Writer.WritePropertyName("Inputs"); Writer.WriteStartArray(); foreach (var inputValue in opProperties.InputValues) { var inputID = inputValue.Key; var inputValueFunc = inputValue.Value; var metaInput = (from input in metaOp.Inputs where input.ID == inputValue.Key select input).SingleOrDefault(); bool isDefault = ((metaInput != null) && (inputValueFunc == metaInput.DefaultFunc)) || parentOp.ExistsConnectionToInput(metaOpInstanceID, metaInput.ID); if (!isDefault) { Writer.WriteStartObject(); Writer.WriteValue("ID", inputID); var inputValueValue = (inputValueFunc as Utilities.ValueFunction).Value; var inputValueType = inputValueValue.Type; Writer.WriteValue("Type", inputValueType); //write value multi lined var value = ValueUtilities.GetValueForTypeFromContext(inputValueType, inputValueValue.SetValueInContext(new OperatorPartContext())); var splittedValue = value.Split(new string[] { "\n" }, StringSplitOptions.None); Writer.WritePropertyName("Value"); Writer.WriteStartArray(); foreach (var valueLine in splittedValue) { Writer.WriteValue(valueLine); } Writer.WriteEndArray(); Writer.WriteEndObject(); } } Writer.WriteEndArray(); Writer.WritePropertyName("States"); Writer.WriteStartArray(); foreach (var stateEntry in opProperties.OperatorPartStates) { Writer.WriteStartObject(); Writer.WriteValue("ID", stateEntry.Key); Writer.WritePropertyName("State"); var s = new JsonSerializer(); s.Serialize(Writer, stateEntry.Value); Writer.WriteEndObject(); } Writer.WriteEndArray(); Writer.WriteEndObject(); }